如何在 DAX 中编写条件 for 循环?

how to write a conditional for loop in DAX?

我正在使用 PowerBI 创建一个仪表板,用于汇总来自火车运动模拟的数据。 (我是一名心理学家,对 python 有一些基本了解,目前正在学习 DAX。) 这是一些背景:

我不知道如何构建可以用作 for 循环的东西。在一个非常概念化的方式中,这看起来像这样:

if [standstill] = 1:
       for [index] in range([index]+500):  
          if [halt] = 1 and [train nr] is the same as in the starting row: 
                 [is there halt] = 1
                 else [is there halt] = 0

所以我想做的是找出 [stanstill] = 1 的任何行是否有接下来的 500 行中的任何行 [halt] = 1 以及 [halt] 是否涉及与[停顿].

有人可以帮忙吗?我试图修改这个想法:https://community.powerbi.com/t5/Community-Blog/For-and-While-Loops-in-DAX/ba-p/636314 但在这一点上我完全卡住了。如果需要任何进一步的信息,请告诉我。

示例数据:

index notification train nr standstill halt is there halt
1 train nr 3345 gets status standstill 3345 1 0 1
2 train nr 3345 gets status halt 3345 0 1 0
3 train nr 122 position X -> Y 89076 122 0 0 0
4 train nr 122 gets status standstill 122 1 0 1
5 train nr 54732 gets status riding 54732 0 0 0
... ... ... ... ... ...
345 train nr 122 gets status halt 122 0 1 0

解决方案可以是度量或列 >> 最重要的目标是能够总结 [standstill] = 1 和 [is there halt] = 0 的实例总数,这意味着火车因红灯而停止。

好的,我会在找到解决方案后尝试回答我自己的问题。这是一个计算列:

how many halts = 

var _index = LOOKUPVALUE('Table'[Index], 'Table'[Index], [Index])
var _train = LOOKUPVALUE('Table'[Train nr],'Table'[Train nr], [Train nr])
var _haltafter = FILTER('Table', [Halt]=1 && [Index] > value(_index) && [Train nr] = value(_train))

return

IF([Standstill]=1 && not ISEMPTY(_haltafter), SUMX(_haltafter, [Halt]),0)

结果是在包含有关列车即将停止的信息的当前通知之后,同一列车编号发生的多次停站。

也许这对某人有帮助