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