Я пытаюсь создать вычисляемый столбец, который зависит от результатов из предыдущей строки, и я столкнулся с проблемой циклической зависимости.Рекурсивная логика в DAX
У меня есть индекс и значение в исходной таблице, и я создаю расчет следующим образом:
TestValue = [Value] +
CALCULATE(sum([Value]),
filter(all(Table), [Index] < earlier([Index]))) +
// running total of previous Value's
CALCULATE(sum([TestResult]),
filter(all(Table), [Index] < earlier([Index])))
// running total of previous TestResult's
и
TestResult = if([TestValue] > 10000, [Value])
Я думаю, что проблема в том, что даже если я отфильтрованный на index < earlier (index)
, он по-прежнему оценивает TestResult
для индексов, превышающих текущий.
Что мне делать, чтобы заставить это работать?
Here - это ссылка, которая успешно реализовала рекурсию, но только в сценариях, где вы умножаете более ранний результат на процент.
Edit:
Там, кажется, некоторая путаница по поводу того, что результат должен быть, поэтому я попытаюсь проиллюстрировать желаемый результат:
Оригинал Таблица
| Index | Value |
-----------------
| 1 | 500 |
| 2 | 12000 |
| 3 | 24000 |
Ожидаемый результат
| Index | Value | TestResult | TestValue
----------------------------------------
| 1 | 500 | NULL | NULL
| 2 | 12000 | 12000 | 500
| 3 | 15000 | 15000 | 500 + 12000 + 12000 = 24500
Ряд три подсчитывается по общей сумме «Значение» с индексами 1 и 2 плюс текущее количество «TestResult».
Но TestResult нужно смотреть как TempValue и TestValue в вашем примере выше. Я не думаю, что вы предоставили мне то, что мне нужно. – confusedKid
До этого условия '[TestValue]> 10000' истинно,' TestValue' будет равно 'TempValue', поэтому это не должно иметь никакого значения. – user5226582
Но даже после [TestValue]> 10000, я хочу продолжать вычислять ... Я не остановлюсь, как только я выполню это условие. – confusedKid