Calculate 与Calculatetable联系
(1) 都是DAX中的重要函数,用于创建计算上下文
(2) 都可以修改筛选上下文
(3) 都支持使用筛选器作为参数
Calculate 与Calculatetable区别
(1) 返回值类型
- Calculate返回单个值
- Calculatetable返回表格
(2) 使用场景
- Calculate常用于度量值计算
- Calculatetable常用于创建虚拟表
(3) 语法结构
- Calculate(表达式, 筛选器1, 筛选器2, ...)
- Calculatetable(表表达式, 筛选器1, 筛选器2, ...)
(4) 性能影响
- Calculate通常性能较好
- Calculatetable可能对大型数据集有更大性能影响
(5) 嵌套使用
- Calculate可以嵌套在Calculatetable中
- Calculatetable不能直接嵌套在Calculate中
使用建议
- 根据需要返回的结果类型选择合适的函数
- 优先考虑使用Calculate,除非必须返回表格结果
- 合理使用筛选器以提高计算效率
语法:
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
总销量 = sum('销售表'[销售数量])
A产品销量1 = CALCULATE([表达式],'商品表'[品名]="A")
A产品销量2 = CALCULATETABLE(表名称,'销售表'[商品名称]="A")
A和B的销量 = SUMX(FILTER('销量表','销量表'[销售]="A"||'销量表'[销售]="B"),'销量表'[销量])
A和B的销量2 = SUMX(CALCULATETABLE('销量表','销量表'[销售]="A" ||'销量表'[销售]="B"),[销量])
A和B的销量3 = CALCULATE(SUM('销量表'[销量]),'销量表'[销售]="A" || '销量表'[销售]="B")
其中销量表和销售人员表是通过销售进行关联的。可以看出不同的使用方案结果展示有差异。