我有下表:
它代表具有特定类别的进程。
并且在 TIMESTAMP 列上还有一个日期表。
我想显示一个基于另一个度量的度量,该度量计算所选日期之前的日期差异。
首先,这是我计算日期差异的方法:
AGE =
VAR SELECTED_DATE = CALCULATE(MAX(DATUM[Date]), ALLSELECTED(DATUM))
VAR STARTDATE_PROCESS = Calculate(MAX(Workflow[MIN_TIMESTAMP]),DATUM[Date]<=MAX(DATUM[Date]), ALL(DATUM[Date]))
RETURN
DATEDIFF(STARTDATE_PROCESS,SELECTED_DATE,DAY)
现在我想使用一个取决于 AGE 结果的度量,例如
NEW = IF([AGE]<=3,CALCULATE(COUNT(Workflow[PROCESS]),DATUM[Date]<=MAX(DATUM[Date]),ALL(DATUM)))
或
OLD = IF([AGE]>3,CALCULATE(COUNT(Workflow[PROCESS]),DATUM[Date]<=MAX(DATUM[Date]),ALL(DATUM)))
测量 AGE、OLD 和 NEW 与基表类似:
如您所见,聚合无法正常工作:
但应该是这样的
知道如何解决这个问题吗?
谢谢!
最佳答案
所以问题是小计是在完全不同的上下文中计算的,并且因为您的年龄度量是基于 MAX(Workflow[MIN_TIMESTAMP])
,所以不会考虑到可以是多个进程。
要执行您想要的操作,您需要更改 New
和 Old
度量以对每个进程执行聚合,然后返回结果。像这样的事情:
New_agg =
VAR tbl = ADDCOLUMNS(CALCULATETABLE(VALUES(Workflow[Process]), ALL('Date')), "age", [Age], "count_process", CALCULATE(COUNT(Workflow[Process]), ALL('Date')))
RETURN SUMX(tbl, IF([age]<=3, [count_process]))
关于PowerBI:根据 DATEDIFF 条件正确聚合测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69613404/