如何"convert" M代码中的DAX代码:删除计算列中的行

How to "convert" DAX code in M code: delete rows in calculated colum

我正在使用 Power Bi Desktop,我正在尝试将 DAX 代码“转换”为 M 代码。我知道这实际上是不可能的,因为 M 的结构和意图。但是我看到其他程序员通过 M 代码中的一些变通方法实现了他们的 DAX 代码。

关于我的问题: 我需要找到一种方法,在我计算之后删除 Power Query 编辑器中的行,如果该行已经在 table 中。具体来说:如果 [FIN] 列相同且 [Laufleistung in km] 列不高于 +=30,我将该行视为重复行,因此要删除该行。我需要在查询编辑器中实现以下 DAX 列:

Count Doppelte = CALCULATE(
  COUNT('Table A'[FIN]);
  FILTER('Table A'; 'Table A'[FIN] = EARLIER('Table A'[FIN])) ;
  FILTER('Table A'; 'Table A'[Laufleistung in km] <= EARLIER('Table A'[Laufleistung in km])+30) ;
  FILTER('Table A'; 'Table A'[Laufleistung in km] >= EARLIER('Table A'[Laufleistung in km])
       )
)

只要我有重复的行,我就用这个列来计​​数(所以列中的结果是 2)。 结果如下所示:

FIN Laufleistung in km Doppelte
ID001 500 1
ID004 200 1
ID001 529 2
ID004 205 2
ID001 700 1

所以,我想删除 [Doppelte]=2 的行。

我目前不知道如何在 Power Query Editor 中实现这种计算。你们知道如何做到这一点吗?

谢谢, 马塞尔 :)

已编辑答案。看看这是否适合你

对于每个 [FIN],它从所有先前行中找到最大的 [Laufleistung in km],并将该值与当前 [Laufleistung in km] 进行比较,看看它们是否至少有 30 个不同

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index","MaxD",(i)=>List.Max(Table.SelectRows(#"Added Index", each [FIN]=i[FIN] and [Index]<i[Index]) [Laufleistung in km]), type number ),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Doppelte", each try if [Laufleistung in km]-[MaxD] < 30 then 2 else 1 otherwise 1),
in #"Added Custom1"

这里我附上了.pbix文件供大家参考,因为所有的步骤都很难提及和解释。

Report File Here

简而言之-

  1. 我先把你的TableA复制成TableA(2)
  2. 然后对新的table进行了一些改造TableA(2)
  3. 合并新的 table Table A (2) 到你的 Table A
  4. 然后在Table A
  5. 中执行了一些步骤

如有不明之处欢迎随时提问。下面是最终输出-