使用 DAX 计算 PowerBI 中两行之间的差异

Calculate the difference between 2 rows in PowerBI using DAX

我正在努力完成一些应该很简单但对我来说却无法解决的事情。 我正在尝试计算共享相同 'Scan type'.

的两行之间的差异

我附上了一张显示生产样本数据的照片。我们 运行 扫描并根据扫描结果为其指定颜色。 我想找出每次红色扫描之间扫描 ID 的差异。 使用附加的 Photo of Sample data,我希望 id 3 的差异为 0。id 4 的差异为 1,id 14 的差异为 10。

我已经(糟糕地)编写了一些基于扫描 ID 的最大值的东西。

我也试过关注一些帖子,看看我是否可以让它工作..

     var _curid= MAX(table1[scanid])
     var _curclueid =  MAX(table1[scanid])
     var _calc =CALCULATE(SUM(TABLE1[scanid],FILTER(ALLSELECTED(table1[scanid]),table1[scanid]))
    
    return if(_curid-_calc=curid,0,_curid-_calc)

编辑; 忘了说我已经检查过线程; 57699052 61464745 56703516 57710425

试试下面的 DAX,如果有帮助就接受它作为答案。

  1. 创建一个计算列,returns 颜色为红色的 ID,如下所示:

     Column = IF('Table'[Colour] = "Red", 'Table'[ID])
    
  2. 创建另一列如下:

     Column 2 = 
     VAR Colr = 'Table'[Colour]
     VAR SCAN = 'Table'[Scan ID]
    
     VAR Prev_ID = 
          CALCULATE(MAX('Table'[Column 2]), 
          FILTER('Table', 'Table'[Colour] = Colr && 'Table'[Scan ID] < SCAN))
    
     RETURN 
         'Table'[Column] - Prev_ID
    
  3. 输出:

编辑:-

如果您希望第一个值 (ID3) 为 0,请将 RETURN 行替换为以下行:

IF(ISBLANK(Prev_ID) && 'Table'[Colour] = "Red", 0, 'Table'[Column] - Prev_ID )

这将为您提供以下结果: