PowerPivot DAX MAXX Peformance Проблема
Я строю модель данных с помощью PowerPivot для Excel 2013, и мне необходимо определить максимальное количество электронных писем, отправленных на человека. Приведенная ниже формула DAX дает мне результат, который я искал, но производительность невероятно низкая. Есть ли альтернатива, которая будет вычислять максимум по группам без снижения производительности?
Максимальное количество электронных писем на одного участника:
=MAXX(SUMMARIZE('Email Data','Email Data'[person_id],"MAX Value",
([Emails Sent]/[Unique Count People])),[MAX Value])
1 ответ
Таким образом, без определения показателей для [Отправленные электронные письма] или [Количество уникальных людей] невозможно дать окончательный совет по эффективности. Я собираюсь предположить, что это тривиальные меры, основываясь на их именах - заметьте, что это предположение, и его правда повлияет на остальную часть моего поста. При этом существует очевидная оптимизация для начала.
Maximum Emails per Consultant:=
MAXX(
ADDCOLUMNS(
VALUES('Email Data'[person_id])
,"MAX Value"
,[Emails Sent] / [Unique Count People]
)
,[MAX Value]
)
Я использовал ADDCOLUMNS(), а не SUMMARIZE() для вычисления новых столбцов. См. Этот пост для объяснения последствий для производительности.
Кроме того, поскольку вы не группируете по нескольким столбцам, нет необходимости использовать SUMMARIZE(). Влияние производительности на использование VALUES() вместо этого должно быть минимальным.
Другой вопрос, который приходит на ум, заключается в том, должна ли это быть мера. Собираетесь ли вы нарезать по другим измерениям? Если нет, это становится статическим атрибутом [person_id], который может быть вычислен во время ETL или в вычисляемом столбце.
Последнее замечание - я также предполагал, что ваша модель также является оптимальной. Опять же, нам нужно увидеть его, чтобы прокомментировать, видите ли вы проблемы с производительностью от того, что вы там делаете.