gpt4 book ai didi

powerbi - Power BI Desktop DAX 重新启动运行总计列

转载 作者:行者123 更新时间:2023-12-02 18:56:06 25 4
gpt4 key购买 nike

我有一张表,其中每个人都有一年中每一天的记录。我使用这个函数来实现基于每日余额列的运行总计

CALCULATE(
SUM(Leave[Daily Balance]),
FILTER(
ALLEXCEPT(Leave, Leave[Employee Id]),
Leave[Date] <= EARLIER(Leave[Date])
))

但如果类型 = 工作且每日余额的运行总计小于零且上一行的类型不等于工作,则我需要从 1 重新开始运行总计。下面是 Excel 的屏幕截图。所需的功能栏就是我需要到达的。

enter image description here

最佳答案

概述

要求 PowerBI 做这件事是一件具有挑战性的事情,因此可能很难找到简洁的方法。

最大的问题是 PowerBI 的数据模型不支持运行计数的概念 - 至少不支持我们在 Excel 中执行的方式。在 Excel 中,列可以引用同一列的“前一行”中出现的值,然后根据不同列中列出的某些“每日更改”进行调整。

PowerBI 只能通过将某些行子集上的所有每日更改相加来模仿这一点。我们获取当前行中的日期值并创建一个过滤表,其中所有日期都小于当前行的日期,然后汇总该子集中的所有每日更改。这似乎是一个微妙的差异,但它非常重要:

这意味着无法“覆盖”我们的运行总计。唯一正在进行的数学运算发生在包含每日变化的列上 - 包含“运行总计”的列只是一个结果 - 它永远不会在任何后续行的计算中使用。

我们必须放弃“重置”的概念,而是想象制作一个包含“调整”值的列。我们的调整将是一个可以包含在内的值,以便满足所描述的条件时,每日余额和调整的总和将为 1。

如果我们查看 OP 给出的计算运行,我们会发现“工作日”之前的“非工作”日的运行总计值给出了我们所需的金额,如果反转,则该金额将求和为零并导致随后每个工作日的运行总计增加 1。这是我们期望的行为(稍后将描述一个问题)。

结果

enter image description here

Most Recent Date Prior to Work = 

CALCULATE(
Max(Leave[Date]),
FILTER(
ALLEXCEPT(Leave, Leave[Id]),
Leave[Date] = EARLIER(Leave[Date]) -1 && Leave[Type] <> "Working" && Earlier(Leave[Type]) = "Working"
))

了解行上下文和筛选上下文之间的区别以及早期如何操作来遵循此计算会有所帮助。在这种情况下,您可以将“EARLIER”视为“此引用指向当前行中的值”,否则引用指向“ALLEXCEPT(Leave, Leave[Id])”返回的整个表。这样,我们就可以找到当前行的类型为“Working”而前一天的行具有其他类型的位置。

Most Recent Date Prior to Work Complete = 

CALCULATE(
Max(Leave[Most Recent Date Prior to Work]),
FILTER(
ALLEXCEPT(Leave, Leave[Id]),
Leave[Date] <= EARLIER(Leave[Date])
))

此计算模仿“填充”类型的操作。它说:“当查看日期早于该行日期的所有行时,返回‘上类前的最近日期’中的最大值。”

Daily Balance Adjustment = 

CALCULATE(
SUM(Leave[Running Daily Balance]),
FILTER(
ALLEXCEPT(Leave, Leave[Id]),
Leave[Date] = EARLIER(Leave[Most Recent Date Prior to Work Complete])
))

现在每一行都有一个字段解释在哪里可以找到每日余额以用作我们的调整,我们可以从表中查找它。

Adjusted Daily Balance = Leave[Running Daily Balance] - Leave[Daily Balance Adjustment]

最后,我们将调整应用于最终结果的运行总计。

问题

此方法无法解决计数不应重置的问题,除非运行的每日余额低于零。我之前已经被证明是错误的,但我想说这不能单独在 DAX 中完成,因为它会创建循环依赖。本质上,您提出一个要求:使用聚合值来确定聚合中应包含哪些内容。

这就是我所能带给你的。希望对您有所帮助。

关于powerbi - Power BI Desktop DAX 重新启动运行总计列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59965251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com