Optimize SUMMARIZE with ADDCOLUMNS in Dax #ssas #tabular #dax #powerpivot
Posted
by Marco Russo (SQLBI)
on SQL Blog
See other posts from SQL Blog
or by Marco Russo (SQLBI)
Published on Tue, 04 Sep 2012 08:23:00 GMT
Indexed on
2012/09/04
9:44 UTC
Read the original article
Hit count: 631
If you started using DAX as a query language, you might have encountered some performance issues by using SUMMARIZE. The problem is related to the calculation you put in the SUMMARIZE, by adding what are called extension columns, which compute their value within a filter context defined by the rows considered in the group that the SUMMARIZE uses to produce each row in the output.
Most of the time, for simple table expressions used in the first parameter of SUMMARIZE, you can optimize performance by removing the extended columns from the SUMMARIZE and adding them by using an ADDCOLUMNS function. In practice, instead of writing
SUMMARIZE
( <table>, <group_by_column>, <column_name>, <expression> )
you can write:
ADDCOLUMNS
(
SUMMARIZE
( <table>, <group
by
column> ),
<column_name>,
CALCULATE
( <expression> )
)
The performance difference might be huge (orders of magnitude) but this optimization might produce a different semantic and in these cases it should not be used. A longer discussion of this topic is included in my Best Practices Using SUMMARIZE and ADDCOLUMNS article on SQLBI, which also include several details about the DAX syntax with extended columns. For example, did you know that you can create an extended column in SUMMARIZE and ADDCOLUMNS with the same name of existing measures? It is *not* a good thing to do, and by reading the article you will discover why. Enjoy DAX!
© SQL Blog or respective owner