使用 DAX 进行条件运行总计

问题描述 投票:0回答:2

我有一个包含 2 列的表格:IDNumbers;我想创建一个新列 Result ,其中包含 Numbers 列的运行总计,但每次运行总计超过 20 时,都应重新启动运行总计。此外,如果运行总计低于 20,则不应显示结果。这必须仅使用 DAX 来完成。

谢谢您的建议。

注意:条件运行总计列的存在只是为了显示运行总计的工作原理。

身份证 数字 条件运行总计 结果
1 9 9
2 7 16
3 9 25 25
4 8 8
5 9 17
6 9 26 26
7 1 1
8 0 1
9 0 1
10 9 10
11 9 19
12 2 21 21
13 1 1

编辑:我添加了更多行来测试解决方案。

powerbi dax powerbi-desktop
2个回答
0
投票

我仅在您的示例数据上进行测试,可能存在一些逻辑错误。我将其分成几列,以便更好地理解我在做什么。

Running = var _curID = 'Table'[ID]
var _run = CALCULATE( sum('Table'[Numbers]), FILTER(all('Table'),  'Table'[ID] <= _curID)) 
return

ceiling(floor(ceiling(_run , 5) -
ceiling(MOD(_run, 5), 20), 15)
, 20) /20

Rung = var _curID = 'Table'[ID]
var  _previousDate = CALCULATE( max('Table'[Running]), FILTER('Table', 'Table'[ID] < EARLIER('Table'[ID])))
return
_previousDate+0


Final = var _id = [ID]
var _Rung = [Rung]
var _ret = 
CALCULATE( sum('Table'[Numbers]), filter(ALL('Table'), [ID] <= _id && _Rung = [Rung]))
return
if (_ret > 20, _ret, 0)

最终输出:


0
投票
Result = 
VAR RunningTotal = 
    CALCULATE(
        SUM('YourTable'[Numbers]),
        FILTER(
            ALL('YourTable'),
            'YourTable'[ID] <= EARLIER('YourTable'[ID])
        )
    )
RETURN
    IF(
        RunningTotal >= 20,
        RunningTotal,
        BLANK()
    )

该DAX表达式计算“Numbers”列到当前行的运行总计,如果运行总计大于或等于20,则显示运行总计;否则,显示空白值。

© www.soinside.com 2019 - 2024. All rights reserved.