如何计算 DAX 中的累计总计和百分比?

Posted

技术标签:

【中文标题】如何计算 DAX 中的累计总计和百分比?【英文标题】:How to calculate cumulative Total and % in DAX? 【发布时间】:2017-03-06 17:24:07 【问题描述】:

这可能很简单……

我在 Power BI 中有以下汇总表,需要构建一个帕累托图,我正在寻找一种创建列“D”和“E”的方法......提前致谢!

“B”列的计数是我在 PBI 中基于多个过滤器创建的度量。我已经尝试了一些计算/求和/过滤类型的表达式,但没有成功。

我的原始数据看起来像图片 #2...我有构建汇总表的措施,但列“I”除外 - 运行百分比 - (为此我还需要每个存储桶的累积事件总数) .

很遗憾,我无法成功应用来自 DAXPATTERNS 的计算。

【问题讨论】:

【参考方案1】:

DAXPATTERNS 博客中有一个众所周知的累积计算模式。

试试这个表达式 Running % 度量:

Running % =
CALCULATE (
    SUM ( [Percentage] ),
    FILTER ( ALL ( YourTable), YourTable[Bucket] <= MAX ( YourTable[Bucket] ) )
)

并试试这个累积计数度量:

Cumulative Count =
CALCULATE (
    SUM ( [Count] ),
    FILTER ( ALL ( YourTable ), YourTable[Bucket] <= MAX ( YourTable[Bucket] ) )
)

基本上,在每一行中,您将那些小于或等于评估行中的桶值的计数或百分比值相加,从而产生累计总数。

更新:与您的模型相匹配的可行解决方案。

假设您的事件计数度量定义如下:

Event Count = COUNT(EventTable[Duration_Bucket])

您可以使用CALCULATE 函数创建一个累积计数,它可以让我们计算Running % 度量:

Cumulative Count =
CALCULATE (
    [Event Count],
    FILTER (
        ALL ( EventTable ),
        [Duration_Bucket] <= MAX ( EventTable[Duration_Bucket] )
    )
)

现在使用以下方法计算运行百分比度量:

Running % =
DIVIDE (
    [Cumulative Count],
    CALCULATE ( [Event Count], ALL ( EventTable ) ),
    BLANK ()
)

你应该在 Power BI 中得到类似的东西:

表格可视化

条形图可视化

请注意,我的表达式使用 EventTable,您应该将其替换为您的表格名称。另请注意running % 线从 0 到 1 开始,左侧只有一个 Y 轴。

如果这有帮助,请告诉我。

【讨论】:

谢谢亚历杭德罗,我已经更新了最初的问题以提供我的上下文...不幸的是,您引用的公式不起作用,可能是因为我的数据结构...汇总表只是我可以从我的原始数据中构建的东西。 @MarceloAguilar,我已经更新了我的答案,尝试实施编辑后的答案。 我只将 ALL 更改为 ALLSELECTED,现在工作正常。谢谢! 您好,从 2019 年开始!如果您希望它在“duration_bucket”处于其最大值时开始累积“count”字段,您将如何执行此操作有什么想法吗?也就是说,我能否以某种方式将“duration_bucket”按降序排序,然后开始累积“count”值?

以上是关于如何计算 DAX 中的累计总计和百分比?的主要内容,如果未能解决你的问题,请参考以下文章

POWER BI 如何计算不唯一选项的累积占比

如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?

POWER BI DAX函数应用-筛选器函数(上)

计算 Power Pivot 模型中总计的百分比

老客复购率powerbi怎么计算

将group_by和count()应用到变量后计算总计的百分比