我正在使用PowerPivot for Excel 2013构建数据模型,并且需要能够识别每人发送的最大电子邮件数量。下面的DAX公式给出了我寻找的结果,但性能非常慢。是否有替代方案可以在没有性能影响的情况下按组计算最大值?
每个组成部分的最大电子邮件数:
=MAXX(SUMMARIZE('Email Data','Email Data'[person_id],"MAX Value",
([Emails Sent]/[Unique Count People])),[MAX Value])
答案 0 :(得分:0)
因此,如果没有[已发送电子邮件]或[唯一计数人员]的度量定义,则无法就性能提供明确的建议。我会假设它们是微不足道的措施,但根据它们的名字 - 注意这是一个假设,它的真相会影响我的其余部分。话虽如此,开始时有一个明显的优化。
Maximum Emails per Consultant:=
MAXX(
ADDCOLUMNS(
VALUES('Email Data'[person_id])
,"MAX Value"
,[Emails Sent] / [Unique Count People]
)
,[MAX Value]
)
我使用ADDCOLUMNS()而不是SUMMARIZE()来计算新列。 See this post for an explanation of the performance implications.
此外,由于您没有按多列分组,因此无需使用SUMMARIZE()。使用VALUES()的性能影响应该是最小的。
想到的另一个问题是,这是否需要成为衡量标准。你打算用其他尺寸切片吗?如果没有,这将成为[person_id]的静态属性,可以在ETL期间或计算列中计算。
最后一点 - 我也一直认为你的模型也是最优的。同样,我们需要看到它来评论您是否可以通过您在那里做的事情看到性能问题。