2017-01-24 2 views
2

У меня есть две меры в моем табличном кубе.DAX measure с TOTALMTD работает медленно

Первый называется

'Number of Days' := CALCULATE(COUNTROWS(SUMMARIZE('A'[Date]))) 

Второй будет включает в себя первый в качестве его выражения

'Number of Days (MTD)' := CALCULATE(TOTALMTD([Number of Days],'A'[Date])) 

Вторая мера, когда я просматриваю куб и вытащить меру. Он работает невероятно медленно.

Любая идея, как я могу оптимизировать эти измерения и заставить работать быстрее?

Sample Data

Volume:= SUMX(A, DIVIDE([Volume],2))

Volume (MTD):= TOTALMTD([Volume],'A'[Date])

Обновленные дополнительные измерения

+0

Является ли '' A'' таблицей календаря/даты? Примечание ** TOTALMTD ** - это функция Time Intelligence, которая работает только с таблицей, обозначенной как Date/Calendar. Я думаю, вы можете использовать явные фильтры, но вам нужно будет предоставить образец данных, чтобы помочь вам. –

+0

Привет, alejandro, «A» - это таблица фактов, которая содержит столбец даты с названием «Дата». Я загрузил «Образец данных» - в первом столбце будут показаны исходные данные «Дата» [Дата]; вторая колонка - первое измерение, упомянутое выше; третий столбец будет вторым измерением, упомянутым выше. –

ответ

1

Лучшая практика должна быть создание Календаря/Date таблицу и использовать функцию TOTALMTD Time Intelligence. Однако этот подход можно использовать, если ваша модель не содержит таблицу дат.

Первая мера, количество дней:

Num of Days := DISTINCTCOUNT(A[Date]) 

Накопительная мера:

Num of days (MTD) := 
CALCULATE (
    [Num of Days], 
    FILTER (
     ALL (A), 
     [Date] <= MAX (A[Date]) 
      && MONTH ([Date]) = MONTH (MAX ([Date])) 
      && YEAR ([Date]) = YEAR (MAX ([Date])) 
    ) 
) 

UPDATE: Добавлен скриншот.

enter image description here

UPDATE 2: Кажется, вам нужно рассчитать совокупный объем, в этом случае просто используйте ниже выражение для второго измерения:

Num of days (MTD) := 
CALCULATE ([Num of Days], FILTER (ALL (A), [Date] <= MAX (A[Date]))) 

UPDATE 3: Usuing SUMX и DISTINCT для подсчета отдельных дат.

Заменить первую меру следующим:

Num of Days = SUMX(DISTINCT(A[Date]), 1) 

Это решение может быть более производительным, чем использование COUNTROWS + Резюмируя, однако это может быть очень медленным в зависимости от количества строк и машины где он работает.

Дайте мне знать, если это поможет.

+0

Я постараюсь на этом аледжандро. Независимо от того, помогает это или нет, спасибо за ваши усилия. Вернется к вам позже. –

+0

Hi @alejandro, Результат, возвращенный с вашей мерой, кажется неправильным по сравнению с моим. В основном, ваше выражение будет накапливаться от начала до конца. Но то, что я хочу, просто накапливается ежемесячно. Скажем, если в январе у меня будет только 10/1, 11/1, 12/1 - я получу 1, 2, 3 для измерения количества дней (MTD), а в феврале у меня 3/2 и 4/2 - он пересчитывает начальные значения с 1, и результат, который я получаю, будет 1,2. –

+0

@KingsleyTan, я обновил свой ответ с помощью матрицы в Power BI (она также должна работать в PowerPivot), используя созданные меры. Разве это не ваш ожидаемый результат? –

Смежные вопросы