0

DAX を使用して 2 つの結果セットの交差を見つけようとしていますが、2 つの結果セットを計算するのに本当に苦労しています。

「Log Date」という日付テーブルと関係がある FactCheckForUpdates というファクト テーブルがあります。FactCheckForUpdates にはマシン ID が含まれており、過去 2 か月分の 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 )
    )
)

「個別のマシン ID」は次のように計算されます。

:=DISTINCTCOUNT([MachineId])

'YearMonthNumber' は、'Log Date' テーブルで次のように計算されます。

=('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 )
)

しかし、ここで「ログ日付」テーブルを使用する方法がわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

0

これはどう:

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

この DAX 式をどこから呼び出していますか? 別の式の中で、またはクエリの一部としてのみ機能します。

于 2016-04-13T01:33:37.930 に答える