计算生成表的列总和-DAX

时间:2019-06-26 14:24:29

标签: powerbi dax

我一直试图使用 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 的结果求和,而不是生成表,但是要绘制没有错误的结果的唯一方法是通过“ CALCULATED TABLE”(上方)。 / p>

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

想法是仅获取该计算列 VALUE 的总和:

   0.7300

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

1 个答案:

答案 0 :(得分: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

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


我不能保证这段代码能按预期工作,但是应该为您提供更好的指导。