目录
(2)求邮寄方式是标准级订单总销售额可以用sumx 和filter嵌套
(2)values可以返回未关联上的空值(两个维度建立一对多等关系时,造成的空值)
一、什么是Dax
1、定义
本质DAX就是写函数
DAX数据模型是用关系串接在一起的表,这是自然而然的,它们表示了业务的结构。
DAX数据建模就是根据业务主题将相关的表用最合理的关系串接起来。(并考虑为后续的计算做准备)。
DAX数据计算在数据模型中选定与某业务主题相关的列并从中过滤出有关的行,然后针对这些行进行聚合计算。
DAX数据分析就是针对某业务主题,选择一个或几个观察角度来观察DAX数据计算的结果。
2、三种计算元素
新建列,新建表,新建度量值
计算列:观察的角度
度量值:计算复杂的业务指标
例如 客户总平均年龄 是一个指标--》度量值
客户各年龄段的销售额 是一个角度,维度--》新建列
二、返回表计算
1、FILTER
(1) 过滤出家具表
用法:
家具表 = filter('产品',
'产品'[类别]="家具"
)
(2)求邮寄方式是标准级订单总销售额可以用sumx 和filter嵌套
如下
邮寄方式是标准级订单总销售额 =
sumx(filter('订单','订单'[邮寄方式]="标准级"),
'订单'[销售额]
)
(3)filter总结
由(2)得出 filter可以用作迭代器X类的函数的 首个参数,它返回的是个表
2、ALL
(1)当使用all(表.列名),它会返回列中不重复的值
(2)当使用all(表),它会返回表中所有的值
(3)建立新的邮寄方式是标准级订单总销售额
new邮寄方式是标准级订单总销售额
= sumx(filter(all('订单'),'订单'[邮寄方式]="标准级"),
'订单'[销售额]
)
拉进表格如下
(4)all 总结
由(3)得出 ALL返回表中所有值,但是all可以忽略筛选上下文
3、values 与distinct
(1)在参数为列时均返回不重复值
(2)values可以返回未关联上的空值(两个维度建立一对多等关系时,造成的空值)
此时用all,和values相等
三、计算上下文
1、一个需求比当前销售额大的订单的总销售额
比当前销售额大的订单的总销售额 =
var a='订单'[销售额]
return sumx(
filter('订单','订单'[销售额]>a),
'订单'[销售额]
)
等价于
比当前销售额大的订单的总销售额B =
sumx(
filter('订单','订单'[销售额]>earlier('订单'[销售额])),
'订单'[销售额]
)
2、calculate
(1)定义
(2)执行顺序和逻辑
理解
1.采用当前筛选上下文
2.在1的基础上 计算 cal中筛选 (若cal中筛选有多个 则取交集)
3 现在筛选有什么? 2中筛选的结果与1中发生冲突时 以2中为准
4 计算kpi
注:若1无 但calculate位于行上下文中,则将行上下文转换为筛选上下文