首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将计算列的每一行除以另一计算列的总和?

如何将计算列的每一行除以另一计算列的总和?
EN

Stack Overflow用户
提问于 2019-06-19 08:31:15
回答 3查看 19.9K关注 0票数 1

我无法使用以下示例数据进行正确的除法:

Calculated column    Another calc. column
   48                  207
  257                  370
  518                  138
  489                  354
  837                  478
1,005                  648
1,021                2,060
1,463                2,164
2,630                1,818
2,993                2,358
3,354                3,633
4,332                5,234
4,885                6,108
4,514                6,008
4,356                6,888
4,824                7,382
7,082                5,988
7,498                6,059
                     4,865
                     4,192
                     3,816
                     2,851
                     2,768
                     2,093
                     2,207
                       770
                       397
                       149
                       178
                       336
                       167
                       124
                        18

我要做的是创建一个新的计算列。

对于每一行,我希望获得Calculated column的值,并将其除以Another calc. column的合计。

Another calc. column总数= 82826

这是一个全新的计算列中所需的输出,让我们称其为% Column

% Column

0,000579528167484
0,003102890396735
0,006254074807428
.
.
.

-这3列:Calculated columnAnother calc. column% Column都在同一个表中,并且都是计算列

我尝试了很多公式,但没有一个返回所需的输出。:|我猜这是因为计算列的性质,或者我不明白它的要点。

这是可能的吗,或者我应该使用一个度量来遵循另一条道路?

你能说点什么吗?

#######编辑#######

我整理了一个示例文件来帮助调试。这就是:https://drive.google.com/open?id=1r7kiIkwgHnI5GUssJ6KlXBAoeDRISEuC

如你所见:

  • Earned Daily % HARDCODED工作得很好,因为在使用SUM公式时,82826被硬编码为denominator.
  • Earned Daily % by StelioK,并且Earned Daily % by Alexis Olson为除法输出了相同的错误值。

我使用的是最新的Power BI Desktop版本:Version: 2.70.5494.701 64-bit (June 2019)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-20 02:28:58

基本上,计算列没有错误,Alexis和StelioK公式都是正确的。

这里的根本问题是计算列和度量值之间的混淆。您正在以一种概念上错误的方式查看结果-通过矩阵可视化,在切片器上有几个过滤器处于活动状态。如果删除筛选器,您将看到总金额为140,920,而不是82,826。后一个数字是过滤的数据集的总数,而不是整个表。

要正确理解这一点,您需要了解Power BI背后的几个基本概念:

  • 计算列始终是静态的。一旦计算完成,它就不能响应切片器或其他UI控件。它只是静态数据,与非计算列中的数据相同。用于计算列的DAX公式仅在您创建列或重新加载数据时才处于活动状态。
  • 如果希望计算响应切片器等,则它们必须是度量。这是唯一的方法,没有例外。
  • 避免计算列,它们完全没有用。Power BI完全是关于度量的;我想不出一个使用计算列的原因。当您添加一个列时,您实际上是在增强您的源数据,因为您感觉您缺少了报表所需的内容。但是,在源(导入的数据库或文件)或使用Power Query可以更好地满足这一需求,Power Query正是为这类任务设计的。最佳实践是:在源代码中构建您的列,对于其他所有设计度量。
  • 另一个重要的建议是:永远不要将字段(列)直接拖放到视觉效果中。始终编写DAX度量,然后使用它。依赖Power BI自动聚合是一种非常糟糕的做法。
票数 4
EN

Stack Overflow用户

发布于 2019-06-19 09:01:56

% Column =
VAR TotalSum =
    SUM ( 'Table'[Another Calc column] )
RETURN
    IF (
        NOT ( ISBLANK ( 'Table'[Calc Column] ) ),
        CALCULATE ( DIVIDE ( SUM ( 'Table'[Calc Column] ), TotalSum ) ),
        0
    )

这会产生以下结果:

我希望它能有所帮助!!

票数 2
EN

Stack Overflow用户

发布于 2019-06-20 01:35:49

对我来说,以下是工作:

DIVIDE( Table1[Calculated column], SUM(Table1[Another calc column]) )

如果这不起作用,我需要看到一个文件,您可以在其中重现问题。

编辑:在查看您的文件后,82,826的总和只有使用您选择的过滤器才是真的

请注意,计算列不是动态的,并且不能响应筛选器,因为它们只在第一次加载表时计算。

如果你需要它是动态的,那么把它写成一个更像这样的度量:

Earned Daily =
DIVIDE (
    CALCULATE (
        SUM ( 'Test data'[Value] ),
        'Test data'[Act Rem] = "Actual Units",
        'Test data'[Type] = "Current"
    ),
    CALCULATE (
        SUM ( 'Test data'[Value] ),
        ALLSELECTED ( 'Test data' ),
        'Test data'[Act Rem] = "Remaining Units",
        'Test data'[Type] = "PMB"
    )
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56658634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档