目标是求所有省份的平均销售额
数据模型结构如下所示:
- 最简洁明了的方法(利用averagex+all)
省均度量值ALL1 =
//想比于2更加优雅的写法,因为维度表与事实表之间的关系
AVERAGEX(
ALL('省份区域'[省份]),//用all去除外部上下文的筛选
[Actual]
)
- 在维度表中添加列:在省份区域表中加入一列Sales,计算每个省份的销售额,在根据这张表求平均值(前一种的拓展)
省均度量值ALL2 =
AVERAGEX(
ADDCOLUMNS(
all('省份区域'[省份]),
"Sales",
[Actual]
),
[Sales]
)
- summarize函数创建新的虚拟表格,计算各省份对应的销售额,最后计算平均
省均度量值SUM =
AVERAGEX(
SUMMARIZE(
all('省份区域'[省份]), //In which table
'省份区域'[省份], //Group by which column
"JINE", //Name the new column
[Actual] //Expression Used
),
[JINE]
)
- values函数创建新的虚拟表格,计算各省份对应的销售额,最后计算平均
省均度量值VALUE =
CALCULATE(
AVERAGEX(
ADDCOLUMNS(
VALUES('省份区域'[省份]),
"Sales",
[Actual]
),
[Sales]
),
all( '省份区域'[省份])
)
最后得到的结果如下图所示:
拓展:
这样计算出来的平均值可以作为平均线的measure来使用,同时可以根据平均值来创建区分不同颜色的柱形图,举例如下:
柱形图颜色 =
//定义各省平均销售的变量AVGPROVINCE
VAR AVGPROVINCE = AVERAGEX(ALL('省份区域'[省份]),[Actual])
RETURN
IF(
[Actual]>AVGPROVINCE,
"GREEN",
"RED"
)