【问题标题】:Calculate Column Sum of a Generated Table - DAX计算生成表的列总和 - DAX
【发布时间】:2019-06-26 14:24:29
【问题描述】:

我一直在尝试使用 DaxStudio 获取下表列 VALUE 的总和,以便将其放在 PowerBI 上一次就可以了,因为 PBI 可能会变慢如果您测试大型计算表的代码。

来自 DaxStudio 的表格

   BU              VALUE    
   ------------------------
   FOODS            0.0000
   FIBI             0.0000
   GEOS/CIS         0.7300
   CASC 
   S_S  
   SGS  
   COCOA    
   COCOA/SSSA   
   CORPORATE    
   N/A  
   CIS  

其背后的代码:

DEFINE
    VAR TOTAL =
        CALCULATE (
            SUMX (
                PACKAGING_POWERBI_YEARLY_2;
                PACKAGING_POWERBI_YEARLY_2[QUANTIDADE_ANTERIOR]
            );
            FILTER (
                PACKAGING_POWERBI_YEARLY_2;
                PACKAGING_POWERBI_YEARLY_2[DATE] = "2018"
                    && PACKAGING_POWERBI_YEARLY_2[CODIGO] = "43130"
            )
        )
EVALUATE
SUMMARIZE (
    CALCULATETABLE (
        FILTER (
            PACKAGING_POWERBI_YEARLY_2;
            PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> BLANK ()
                && PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> 0
        )
    );
    PACKAGING_POWERBI_YEARLY_2[BU];
    "VALUE"; FORMAT (
        (
            CALCULATE (
                SUMX (
                    PACKAGING_POWERBI_YEARLY_2;
                    PACKAGING_POWERBI_YEARLY_2[QUANTIDADE_ANTERIOR]
                );
                FILTER (
                    PACKAGING_POWERBI_YEARLY_2;
                    PACKAGING_POWERBI_YEARLY_2[DATE] = "2018"
                        && PACKAGING_POWERBI_YEARLY_2[CODIGO] = "43130"
                        && PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> BLANK ()
                )
            ) / TOTAL
        )
            * (
                CALCULATE (
                    SUMX ( PACKAGING_POWERBI_YEARLY_2; PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] );
                    FILTER (
                        PACKAGING_POWERBI_YEARLY_2;
                        PACKAGING_POWERBI_YEARLY_2[DATE] = "2018"
                            && PACKAGING_POWERBI_YEARLY_2[CODIGO] = "43130"
                            && PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> BLANK ()
                    )
                )
            );
        "0.0000"
    )
)

我不想生成表格,而是想对列 VALUE 的结果求和,但我得到没有错误地绘制结果的唯一方法是通过“计算表”(上图)。

我尝试的每个过滤器都会导致错误。

我们的想法是获取计算列 VALUE 的总和:

   0.7300

但我尝试的每一个更简单的过滤器或 SUMX 条件都会弹出一个错误。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    我想你可以把它清理成这样:

    CALCULATE (
        SUMX (
            VALUES ( PACKAGING_POWERBI_YEARLY_2[BU] ),
            SUM ( PACKAGING_POWERBI_YEARLY_2[QUANTIDADE_ANTERIOR] )
                / CALCULATE (
                    SUM ( PACKAGING_POWERBI_YEARLY_2[QUANTIDADE_ANTERIOR] ),
                    ALL ( PACKAGING_POWERBI_YEARLY_2[BU] )
                )
                * SUM ( PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] )
        ),
        FILTER (
            PACKAGING_POWERBI_YEARLY_2,
            PACKAGING_POWERBI_YEARLY_2[DATE] = "2018"
                && PACKAGING_POWERBI_YEARLY_2[CODIGO] = "43130"
                && PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> BLANK ()
                && PACKAGING_POWERBI_YEARLY_2[PRECO_PONDERADO] <> 0
        )
    )
    

    这使用SUMX 遍历每个BU 值,并为每个值计算值

    (QUANTIDADE_ANTERIOR / Total QUANTIDADE_ANTERIOR ) * PRECO_PONDERADO
    

    过滤器被重复使用而不是重复。


    我不能保证这段代码完全按照预期工作,但它应该为您指明一个更好的方向。

    【讨论】:

    • 虽然它正在检索一些错误,但它有助于我认为正确的路径。我正在分解您共享的计算并找出适当的调整。我会尽快在此处发布最终代码...非常感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多