小伙伴们大家好,上期介绍了如何实现【全动态多分类小多趋势图】第一个动态效果【多指标任意切换】,今天我们来研究一下如何实现其它动态效果【期间任意切换】、【动态显示标题】、【动态显示单位】、【动态显示日期范围】
模型结构如下图所示:
1个事实表:【F01-订单明细】
4个维度表:【D02-省份区域】、【D03-产品信息】、【D04-日期表】、【D07-业务员信息】
维度表与事实表之间创建一对多的关系。
模型建立好后,我们还是要增加一个辅助表用来创建切片器,从而实现期间切换,上次我们使用DAX函数来构建一张表,自然我们还可以这么做,表名称为 【FZ11-期间切换】,公式写法如下:
FZ11-期间切换 =
SELECTCOLUMNS(
{
( "实际", "AC", 1 ),
( "年累计", "YTD", 2 )
},
"期间名称", [Value1],
"Name", [Value2],
"序号", [Value3]
)
其实我们还有另外一种方法创建表,就是手动输入数据,具体操作参见动图演示:
不会写DAX公式的小伙伴可以尝试这种方法。
如果想要对这个表格进行修改要怎么办呢?参见动图演示:
这就是为啥我喜欢用DAX公式构建表,而不轻易采用输入数据的方法,因为修改起来不是那么灵活快捷,大家可以根据自己的需求自行选择。
辅助表有了,接下用辅助表创建一个切片器就轻而易举了,操作步骤见动图演示:
切片器有了,接下来就要解决如何让各个指标与切片器联动的问题了,这里同样要使用DAX 函数来创建度量值,度量值写法如下:
动态期间指标 =
SWITCH (
TRUE (),
SELECTEDVALUE ( 'FZ11-期间切换'[Name] ) = "AC", [动态指标],
SELECTEDVALUE ( 'FZ11-期间切换'[Name] ) = "YTD", [动态指标_YTD],
[动态指标]
)
这里很显然,和之前写度量值[动态指标]的套路相同。
上期分享已经介绍过如何写度量值 [动态指标],这里的公式还涉及到一个度量值[动态指标_YTD],这个度量值很显然是用来求指标年累计值的。
具体公式如下:
动态指标_YTD =
TOTALYTD ( [动态指标], 'D04-日期表'[日期] )
TOTALYTD是一个非常好用的日期智能函数,可以帮助我们获取从当前日期所在年份的第一天到当前日期的累计值。
接下来我们顺便可以写出【动态显示标题】、【动态显示单位】和【动态显示日期范围】的公式。
动态显示标题公式:
业务员_趋势图_标题 =
SELECTEDVALUE ( 'D04-日期表'[年份排序] ) & "年 "
& SWITCH (
SELECTEDVALUE ( 'FZ02_指标切换'[Name] ),
"Sales", "销售总额",
"Profit", "利润总额",
"Order", "订单总数",
"销售总额"
)
& SWITCH (
SELECTEDVALUE ( 'FZ11-期间切换'[Name] ),
"AC", " 趋势",
"YTD", " 年累计趋势",
"趋势"
) & " 按业务员(TOP 20) "
产品子类别_趋势图_标题 =
SELECTEDVALUE ( 'D04-日期表'[年份排序] ) & "年 "
& SWITCH (
SELECTEDVALUE ( 'FZ02_指标切换'[Name] ),
"Sales", "销售总额",
"Profit", "利润总额",
"Order", "订单总数",
"销售总额"
)
& SWITCH (
SELECTEDVALUE ( 'FZ11-期间切换'[Name] ),
"AC", " 趋势",
"YTD", " 年累计趋势",
" 趋势"
) & " 按产品子类别"
省份_趋势图_标题 =
SELECTEDVALUE ( 'D04-日期表'[年份排序] ) & "年 "
& SWITCH (
SELECTEDVALUE ( 'FZ02_指标切换'[Name] ),
"Sales", "销售总额",
"Profit", "利润总额",
"Order", "订单总数",
"销售总额"
)
& SWITCH (
SELECTEDVALUE ( 'FZ11-期间切换'[Name] ),
"AC", " 趋势",
"YTD", " 年累计趋势",
" 趋势"
) & " 按省份(TOP 20) "
这几个公式比较类似都是根据切片器选择的内容来判断要显示的结果,我们需要3个度量值来分别显示业务员趋势图标题、省份趋势图标题、产品子类别趋势图标题。
这里我们使用按钮来显示标题,具体操作见动图演示:
动态显示单位公式:
动态单位 =
"单位: "
& SWITCH (
SELECTEDVALUE ( 'FZ02_指标切换'[Name] ),
"Sales", "万元",
"Profit", "万元",
"Order", "单"
)
SWITCH函数对当前【指标名称】切片器选择的值进行判断,如果选择的 [销售额] 和 [利润额],那么单位显示 [万元],如果选择的是 [订单数],那么单位显示 [单]。
动态显示日期范围公式:
这个公式没啥特别,MIN 和 MAX函数分别获取当前选择年月范围的最小值和最大值,然后中间用短横线连接。
最后把这两个度量值分别放入按钮文本就可以根据切片器动态显示对应的单位和日期范围了。
好了,今天就讲这么多,下期我们继续来研究如何实现其它动态切换效果,拜拜!
领取专属 10元无门槛券
私享最新 技术干货