dax - 我可以在 PowerPivot 中比较相邻行中同一列中的值吗?

标签 dax powerpivot

我有一个 PowerPivot 表,我需要能够确定某个项目处于错误状态的时间。我的数据集看起来像这样:

enter image description here

我需要做的是查看 ID 和 State 列中的值,并查看 State 列中前一行的值是否为 ERROR,以及 ID 列中的值是否相同。如果是,那么我需要计算这两行中的更改日期值之间的差异。

例如,当我到达第 4 行时,我会看到第 3 行(前一行)的 State 列中的值是 ERROR,并且前一行的 ID 列中的值是与当前行相同,因此我将计算第 3 行和第 4 行中的更改日期值之间的差异(对于此特定要求,我不关心任何其他列中的值)。

有没有办法在 PowerPivot 中执行此操作?我已经进行了大量的互联网搜索,看起来如果可以做到的话,它将使用早期或最早的 DAX 函数,但我找不到任何东西告诉我如何,或者即使,这可以完成。

谢谢。

最佳答案

克里斯

我曾经有过很多次类似的需求,经过很长一段时间的反复试验,我终于明白了 EARLIER作品。它可能非常强大,但也非常慢,因此请务必检查计算的性能。

要回答您的问题,您需要创建 4 个计算列:

1) 项目排名 - 用于对具有相同项目 ID 的问题进行排名

=COUNTROWS(FILTER('ID', EARLIER([Item ID]) = [Item ID] && EARLIER([Date]) >= [Date]))

2) 跟随错误 - 轻松查找错误问题之后的问题

=IF([State] = "EROR",[Item Rank]+1)

3) 后续问题的时间 - 简单查找,以便您可以计算不同的

=IF([Follows Error]>0, 
  LOOKUPVALUE([Date], [User], [User], [Item Rank], [Follows Error]), 
  BLANK()
)

4) 时间差异 - 计算特定问题的时间差异

=IF([State]="EROR",
  DAY([Time of Following Issue])-DAY([Date]),
  BLANK()
)

使用这些计算列,您可以轻松创建 powerpivot 表,将“State”和“Item Id”拖到“ROWS” Pane 上,然后简单地将时间差异添加到。您将获得包含字符串“EROR”问题的问题概述以及解决这些问题所需的时间。

这就是 PowerPivot 窗口中的样子:

enter image description here

以及生成的数据透视表:

enter image description here

您可以下载我的Excel file here (2013)。

正如我所提到的,请注意性能,因为具有嵌套 EARLIER 和 IF 条件的计算列可能对性能要求过高。如果有更聪明的方法,我会很高兴看到它,但目前这对我来说很好。

此外,请记住,所有计算列都可以嵌套到 1 中,但我将它们分开以便更容易理解公式。

希望这有帮助:-)

关于dax - 我可以在 PowerPivot 中比较相邻行中同一列中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111109/

相关文章:

excel - 按下切片器时禁用 Excel 中的其他切片器

Excel 2010 PowerPivot - 使用数据透视表结果作为第二个 PowerPivot 的输入

powerbi - 带加号或减号的 DAX 数字格式

powerbi - 如何计算矩阵Power BI中的运行总计

powerbi - 基于类别的同一列中多个日期之间的差异

function - PowerBI - 根据多列中的值计算行数

type-conversion - Power BI 使用 DAX 将八位数字 yyyymmdd 转换为日期

filter - 在 Power BI 中筛选时显示相关数据

sql-server - 如何在 Power Pivot 中更改表的连接

Excel PowerPivot 平均计算