如何使用 DAX 按类别比较当前行与上一行
How to Compare the Current Row to the Previous Row by Category Using DAX
table 看起来像这样:
[Table]:
https://i.stack.imgur.com/S48p6.png
我已经使用 RANKX 创建了一个参考列 rank,按 TaskNum 及其 [=34= 对 table 进行排序]Modified_Time。现在我只需要计算当前行与上一行之间的差异以获得时间间隔:
我期望的结果是这样的:[预期结果]:
+
https://i.stack.imgur.com/pCyon.png
我试着写 DAX:
IF(
Table[TaskNum] = LOOKUPVALUE(Table[TaskNum],Table[rank],Table[rank]-1),
DATEDIFF(LOOKUPVALUE(Table[Date],Table[rank],Table[rank]-1),Table[Date],DAY)
,0)
我认为这很有道理,但出现错误:在需要单个值的地方提供了 table 个多个值。
请帮我修复一下,thx!!!!!!!
如果 rank 是您的 table 中的一列,您可以创建另一个从属(基于 Rank)column,如下所示对于您需要的输出-
date_diff =
var current_date = your_table_name[Date]
var previous_date =
CALCULATE(
MAX(your_table_name[Date]),
FILTER(
your_table_name,
your_table_name[Rank] = EARLIER(your_table_name[Rank])-1
&& your_table_name[TaskNum] = EARLIER(your_table_name[TaskNum])
)
)
return DATEDIFF(previous_date,current_date,HOUR)/24.00
现在只需将新列转换为 2(或更多,根据需要)十进制,输出将如下所示-
table 看起来像这样: [Table]:
https://i.stack.imgur.com/S48p6.png
我已经使用 RANKX 创建了一个参考列 rank,按 TaskNum 及其 [=34= 对 table 进行排序]Modified_Time。现在我只需要计算当前行与上一行之间的差异以获得时间间隔:
我期望的结果是这样的:[预期结果]:
我试着写 DAX:
IF(
Table[TaskNum] = LOOKUPVALUE(Table[TaskNum],Table[rank],Table[rank]-1),
DATEDIFF(LOOKUPVALUE(Table[Date],Table[rank],Table[rank]-1),Table[Date],DAY)
,0)
我认为这很有道理,但出现错误:在需要单个值的地方提供了 table 个多个值。
请帮我修复一下,thx!!!!!!!
如果 rank 是您的 table 中的一列,您可以创建另一个从属(基于 Rank)column,如下所示对于您需要的输出-
date_diff =
var current_date = your_table_name[Date]
var previous_date =
CALCULATE(
MAX(your_table_name[Date]),
FILTER(
your_table_name,
your_table_name[Rank] = EARLIER(your_table_name[Rank])-1
&& your_table_name[TaskNum] = EARLIER(your_table_name[TaskNum])
)
)
return DATEDIFF(previous_date,current_date,HOUR)/24.00
现在只需将新列转换为 2(或更多,根据需要)十进制,输出将如下所示-