Измерьте в PBI с КАЛЬКУЛЯТОРОМ и ФИЛЬТРОМ - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть один отчет с 3 визуальными фильтрами (дата, страна и тип) и таблица, в которой перечислены магазины и количество операций с примененными фильтрами.Я добавил столбец с количеством операций, удовлетворяющих условию, но эта мера очень медленная.

enter image description here

Здесь мера:

Nº operations with conditions = CALCULATE('OPERACIONES'[Nº lines];
FILTER('OPERACIONES';'OPERACIONES'[id_type_sale] = 4 ||
'OPERACIONES'[id_type_sale] = 5 ||
( 'OPERACIONES'[line_sin_origen]=1 
|| 'OPERACIONES'[line_fuera_plazo]=1 
|| 'OPERACIONES'[line_manual]=1)

))

Я думаю, что это медленно, потому что функция FILTER фильтрует все данные в таблице (эта таблица содержит миллиарды записей)

Как мне улучшить этот показатель?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Попробуйте это:

Nº operations with conditions :=
CALCULATE (
    [Nº lines];
    'OPERACIONES'[id_type_sale] = 4
        || 'OPERACIONES'[id_type_sale] = 5
        || 'OPERACIONES'[line_sin_origen] = 1
        || 'OPERACIONES'[line_fuera_plazo] = 1
        || 'OPERACIONES'[line_manual] = 1
)

В некоторых ситуациях я заметил значительное увеличение производительности, просто удалив функцию FILTER и неявную фильтрацию.

Другой вариант будет примерно таким (не проверено):

Nº operations with conditions :=
CALCULATE (
    [Nº lines],
    KEEPFILTERS (
        FILTER (
            SUMMARIZE (
                'OPERACIONES',
                'OPERACIONES'[id_type_sale],
                'OPERACIONES'[line_sin_origen],
                'OPERACIONES'[line_fuera_plazo],
                'OPERACIONES'[line_manual]
            ),
            'OPERACIONES'[id_type_sale] = 4
                || 'OPERACIONES'[id_type_sale] = 5
                || 'OPERACIONES'[line_sin_origen] = 1
                || 'OPERACIONES'[line_fuera_plazo] = 1
                || 'OPERACIONES'[line_manual] = 1
        )
    )
)
0 голосов
/ 13 февраля 2019

Я бы порекомендовал создать вычисляемый столбец, который оценивает ваше состояние для каждой строки только один раз.

SatisfiesConditions =
IF (
    'OPERACIONES'[id_type_sale] = 4
        || 'OPERACIONES'[id_type_sale] = 5
        || 'OPERACIONES'[line_sin_origen] = 1
        || 'OPERACIONES'[line_fuera_plazo] = 1
        || 'OPERACIONES'[line_manual] = 1,
    1,
    0
)

Тогда ваша мера может быть упрощена до

Nº operations with conditions =
CALCULATE (
    'OPERACIONES'[Nº lines];
    'OPERACIONES'[SatisfiesConditions] = 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...