2017-03-06 14 views
0

DAX対策を作成するにはヘルプが必要です。ここに表の立方体の関係があります。 ファクトセールス、初期日付、最終日付、製品表があります。DAX |アクティブなフィルタを非アクティブ(Userelationship)で無効にするには

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 

私は

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

AS DAXメジャーを作成している。しかし、この措置は私のように、最初の販売を与えていませんそれはまた、最終日。事前

答えて

0

ありがとうございますDAXにFILTER関数を使用して明示的に関係せずにテーブルを関連付けることができます。

Fact SalesInitial Date関係が無効になっているので、あなたは、フィルタで選択Initial Dateに一致するFact Sales行をFILTERする必要があります。 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() 
) 

この式は、Dateをフィルタで選択Final Dateに等しいSales列のすべての値を合計し、働きます。しかし、これはあなたがFinal DateFact Salesの間に設定した関係を知っているように簡単に計算できます。

ISFILTERED関数は、フィルタに値が選択されているかどうかを示し、値が選択されている場合は値を返し、そうでない場合はBLANKを返します。

これは私が今Excelにアクセスすることができないため、Power BIの例です。

enter image description here

このことができますなら、私に教えてください。

関連する問題