我正在尝试使用DAX找到两个结果集的交集,但我真的很难计算出两个结果集。
我有一个事实表FactCheckForUpdates,它与名为“Log Date”的日期表有关系。 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 )
)
)
'Distinct Machine Ids'的计算方法如下:
:=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 )
)
但我不知道如何使用此处的“日志日期”表。
任何帮助都非常感谢!
答案 0 :(得分: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表达式?它只能在另一个表达式中工作或作为查询的一部分。