2017-03-06 30 views
0

我需要幫助創建DAX度量。這是Tabular cube中的關係。 我有一個事實銷售,初始日期,最終日期和產品表。DAX |使用非活動(使用關係)覆蓋活動過濾器

Relationship : Product -> Fact Sales (1 to Many, active) 
Initial Date -> Fact Sales (1 to many, inactive relation) 
Final Date - > Fact Sales(1 to many, active) 

多維數據集用作Power Bi工具的源代碼。用戶可以選擇任何初始和最終日期進行銷售比較。

實際數據

Product|Date|Sales 
Product1|20160101|100 
Product1|20160102|110 
Product1|20160131|200 
Product2|20160101|78 
..... 

預計輸出 過濾器:

product : Product1 
Initial date : 20160101 
Final Date : 20160131 

Product | Initial Sales | Final Sales 
Product1|100 |200 

我創建DAX措施AS

Initial Sales := CALCULATE(SUM(SALES),USERELATIONSHIP('Fact Sales'[Date],'Initial Date'[Date])) 

但這一措施是不是給我最初的銷售作爲它也被過濾最終日期。

在此先感謝

回答

0

您可以通過使用DAX FILTER函數關聯表沒有明確的關係。

由於Initial DateFact Sales關係被禁用,則需要FILTER匹配濾波器選擇的Initial DateFact Sales行。您可以使用EARLIER來比較正在評估的上下文與Fact Sales中的每一行,並過濾正確的計算值。

使用這些措施:

Initial Sales := 
IF (
    ISFILTERED (InitialDate[InitialDate]), 
    CALCULATE (
     SUM (FactSales[Sales]), 
     FILTER (
      ALL (FactSales), 
      COUNTROWS (
       FILTER (
        FactSales, 
        EARLIER (FactSales[Date]) = MAX (InitialDate[InitialDate]) 
         && EARLIER (FactSales[Product]) = [Product] 
       ) 
      ) 
     ) 
    ), 
    BLANK() 
) 

Final Sales := 
IF (
    ISFILTERED (FinalDate[FinalDate]), 
    CALCULATE (
     SUM (FactSales[Sales]), 
     FILTER (FactSales, [Date] = MAX (FinalDate[FinalDate])) 
    ), 
    BLANK() 
) 

此表達式的工作原理如下,它在求和柱Sales其中Date等於在過濾器中選擇的Final Date所有值。但是,如果您知道您在Final DateFact Sales之間設置的關係,則可以輕鬆計算。

ISFILTERED函數告訴我們過濾器是否選擇了一個值,如果選擇了一個值,則返回值,否則返回BLANK

這是Power BI中的一個例子,因爲我現在無法訪問Excel。

enter image description here

讓我知道,如果這有助於。