英文:
DAX Refer to previous row within a measure
问题
根据您提供的信息,您需要计算一个队列(Queue)的值,该队列的计算方式如下:
SELECTEDVALUE ( ****前一行队列值**** ) + SELECTEDVALUE ( Feuil3[Input] ) - SELECTEDVALUE ( Feuil3[Output] )
要解决循环依赖错误,您可以尝试以下方法:
VAR activseq = SELECTEDVALUE ( Feuil3[Sequence] )
VAR prevseq = activseq - 1
VAR prevQueue =
CALCULATE(
SELECTEDVALUE(Feuil3[Queue]),
FILTER(ALL(Feuil3), Feuil3[Sequence] = prevseq)
)
VAR result =
IF (
SELECTEDVALUE ( Feuil3[Input] ) > SELECTEDVALUE ( Feuil3[Output] ),
prevQueue + SELECTEDVALUE ( Feuil3[Input] ) - SELECTEDVALUE ( Feuil3[Output] ),
0
)
RETURN
result
这个公式首先计算前一行的队列值(prevQueue),然后使用您提供的公式计算新的队列值。
请确保将此公式应用于您的数据模型中,并相应地替换Feuil3[Queue]、Feuil3[Input]和Feuil3[Output],以匹配您的数据表和列名。
英文:
Given the data below where Queue2 represent the difference between the Input and Output if the input is greater than the output:
And the following measure to determine the amount of items in the queue:
queue =
VAR activseq =
SELECTEDVALUE ( Feuil3[Sequence] )
VAR prevseq = activseq - 1
VAR preval =
LOOKUPVALUE ( Feuil3[Queue2], Feuil3[Sequence], prevseq )
VAR calc =
MAX ( Feuil3[Input] ) - MAX ( Feuil3[Ouput] )
VAR result =
IF (
SELECTEDVALUE ( Feuil3[Input] ) > SELECTEDVALUE ( Feuil3[Ouput] ),
SELECTEDVALUE ( Feuil3[Input] ) + preval
- SELECTEDVALUE ( Feuil3[Ouput] ),
0
)
RETURN
result
I get the following result:
However, I need to achieve the following result:
Sequence | Input | Output | Queue |
---|---|---|---|
1 | 9 | 50 | 0 |
2 | 51 | 50 | 1 |
3 | 120 | 50 | 71 |
4 | 41 | 50 | 62 |
5 | 50 | 50 | 62 |
6 | 51 | 50 | 63 |
7 | 52 | 50 | 65 |
To achieve this result, I need the following formula:
SELECTEDVALUE ( ****Previous row Queue value**** ) + SELECTEDVALUE ( Feuil3[Input] ) - SELECTEDVALUE ( Feuil3[Ouput] )
I have tried but I encounter a circular dependency error:
VAR prevHourQueue =
CALCULATE(
[queue],
FILTER(ALL('Hour Chart'), 'Hour Chart'[Hour #] = prevseq)
)
How can this be achieved?
答案1
得分: 2
以下是翻译好的内容:
要么我做错了什么,要么你的数字不符合。这是我计算的超出输入(超过50)的累计总和:
RT 超出输入 = CALCULATE([超出输入],
FILTER(
ALL('表格'),
[顺序] <= MAX('表格'[顺序])
)
)
超出输入只是这样的:
超出输入 = SUMX('表格',
IF([顺序]=1,0,[输入]-[输出])
)
(只忽略表格中的第一行),否则计算差异。我的结果是{0,1,71,62,62,63,65}。
英文:
Either I'm doing something wrong, or your numbers don't add up. This is my running total for excess input (above 50)
RT Excess Input = CALCULATE([Excess Input],
FILTER(
ALL('Table'),
[Sequence]<=MAX('Table'[Sequence])
)
)
Excess Input is just this:
Excess Input = SUMX('Table',
IF([Sequence]=1,0,[Input]-[Output])
)
(Just ignores the first row in the table), otherwise calculates the difference. My result goes {0,1,71,62,62,63,65}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论