DAX-查询计划
2012-06-09 07:12:00 来源:WEB开发网核心提示: 当执行简单的运算,速度最快,DAX-查询计划(2),如果复杂的,需要 DAX FE 的帮助,就会发现:A: FE 使用 SUMX AND FILTER;B: FE 仅用 FILTER,SUMX 由 VERTIPAQ ENGINE 的 SUM 完成,速度变慢,由于 FE 是单线程的
当执行简单的运算,速度最快,如果复杂的,
需要 DAX FE 的帮助,速度变慢。由于 FE 是单线程的,如果计算使用 VERTIPAQ ENGINE,多线程,批量处理,快很多。
因此,查询计划如果使用VERTIPAQ 运算符,是非常好的。
几点注意:
1,SCAN_VERTIPAQ是其他的基础
2,SPOOL 可以被查询,通过: SPOOL LOOKUPPHYOP, SPOOL_ITERONLY, SPOOL_LOOKUPONLY, SPOOL_SLICEINDEX ITERPHYOPS.
一个非常重要的特征就是: #RECORDS, VERTIPAQ ENGINE多少记录返回 ,决定计划优劣的重要标志。
3,如果使用 FE,物理计划树并不体现。
4,SCAN_VERTIPAQ的特殊属性,主要包括:TABLE, BLANK ROW, JOINCOLS, SEMIJOINCOLS,
最后,比较两个查询:
A:
evaluate
addcolumns(
'Date',
"x",
sumx(
filter('Internet Sales', [Order Date] <= [Date]),
[Sales Amount]
)
)
addcolumns(
'Date',
"x",
sumx(
filter('Internet Sales', [Order Date] <= [Date]),
[Sales Amount]
)
)
B:
evaluate
addcolumns(
'Date',
"x",
calculate(
sum('Internet Sales'[Sales Amount]),
'Internet Sales'[Order Date] <= earlier([Date]),
all('Date')
)
)
addcolumns(
'Date',
"x",
calculate(
sum('Internet Sales'[Sales Amount]),
'Internet Sales'[Order Date] <= earlier([Date]),
all('Date')
)
)
那一个好呢?
如果检查查询计划,就会发现:
A: FE 使用 SUMX AND FILTER;
B: FE 仅用 FILTER,SUMX 由 VERTIPAQ ENGINE 的 SUM 完成。
毫无疑问, 计划 B 好于 A.
更多精彩
赞助商链接