2016-04-12 7 views
0

私はDAXを使用して2つの結果セットの交差を見つけることを試みていますが、2つの結果セットを計算するのは本当に苦労しています。DAXを使用して、関連テーブルでフィルタリングするときにテーブルを計算するにはどうすればよいですか?

私はファクトテーブルFactCheckForUpdatesを持っています。このファクトテーブルは、 'ログ日付'と呼ばれる日付テーブルとの関係を持っています。 FactCheckForUpdatesにはマシンIDが含まれており、最後の2ヶ月分のIDを返すことにします。

私は、この式を使用したマシンIDの明確な数を計算することができます

「明確なマシンIDが」のように計算され
2Month Distinct Machines:=CALCULATE (
    [Distinct Machine Ids], 
    FILTER( 
     ALL('Log Date'), 
     ('Log Date'[YearMonthNumber] >= MAX('Log Date'[YearMonthNumber]) - 3) 
     && ('Log Date'[YearMonthNumber] <= MAX('Log Date'[YearMonthNumber]) - 1) 
    ) 
) 

:=DISTINCTCOUNT([MachineId]) 

と「YearMonthNumber」が上で計算されます'ログ日付'表:

=('Log Date'[YearKey] - MIN('Log Date'[YearKey])) * 12 + 'Log Date'[MonthOfYearKey] 

(これは、日付次元全体のコンテキスト)。

[2Month Distinct Machines]式を更新して、期間中のコンピュータIDの個別カウントを返すのではなく、コンピュータIDのテーブルを返すことができますか?

私はCALCULATETABLE関数を使用しようとしましたが、日付フィルタにMAX集約を受け入れません。私が得ている最も近いが、この式である:

CALCULATETABLE (
    ADDCOLUMNS (
     SUMMARIZE (FactCheckForUpdates, FactCheckForUpdates[MachineId]), 
     "meh", CALCULATE (SUM (FactCheckForUpdates[CFUPing])) 
    ), 
    FactCheckForUpdates[LogDateKey] > DATE (2016, 4, 1) 
) 

が、私はここで「ログ日」テーブルを使用するかどうかはわかりません。

大変助かりました!あなたからこのDAX式を呼び出している

CALCULATETABLE (
    VALUES(FactCheckForUpdates[MachineId]), 
    FILTER( 
     ALL('Log Date'), 
     ('Log Date'[YearMonthNumber] >= MAX('Log Date'[YearMonthNumber]) - 3) 
     && ('Log Date'[YearMonthNumber] <= MAX('Log Date'[YearMonthNumber]) - 1) 
    ) 
) 

:これについて

答えて

0

どのように?それは、別の式の内部で、またはクエリの一部としてのみ機能します。

+0

ありがとうございましたGreg - 私はあなたの提案を試みましたが、0行を返します。私はおそらくコンテキストを無視してCALCULATETABLE関数が原因だと思う。 私は別の内部で表現を使用します、基本的に私はマシンIDの2つのテーブルを取得し、それらの交差を見つけて、交差する値の行数を返します。簡略化されたフォームは、次のようなものになります。 'CALCULATE(COUNTROWS(INTERSECT()))' –

+0

実際、DaxStudioの外であなたの提案を試してみると、 –

関連する問題