Циклы в M, вероятно, лучше всего обрабатывать с помощью функции List.Generate
.
Эта статья довольно хорошо объясняет, как это работает:
https://potyarkin.ml/posts/2017/loops-in-power-query-m-language/
Используя эту функцию, давайте рассмотрим более конкретную реализацию цикла while, скажем, чтобы найти числа Фибоначчи меньше 1000.
a = 1
b = 1
while b < 1000
b = a + b
a = b - a
будет переводить в M что-то вроде этого:
let
data =
List.Generate(
() => [ a = 1, b = 1 ],
each [b] < 1000,
each [ b = [a] + [b], a = [b] ]
),
output = Table.FromRecords(data)[a]
in output
Я не уверен, что лучший способ справиться с вашим состоянием перерыва Y
. Это может зависеть от конкретной проблемы.