Рассчитать сумму столбца сгенерированной таблицы - DAX - PullRequest
0 голосов
/ 26 июня 2019

Я пытался получить сумму в столбце следующей таблицы VALUE , используя DaxStudio , чтобы поставить его на 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" (см. Выше).

Каждый фильтр, который я пробую, приводит к ошибке.

Идея состоит в том, чтобы получить только сумму этого вычисленного столбца VALUE :

   0.7300

Но каждый более простой фильтр или SUMX условие, которое я пытаюсь выполнить, выдает ошибку.

1 Ответ

1 голос
/ 26 июня 2019

Я думаю, вы могли бы очистить его, чтобы он выглядел примерно так:

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

, где фильтры используются повторно, а не повторяются.


Я не могу гарантировать, что этот код работает точно так, как задумано, но он должен указывать вам в лучшем направлении.

...