PowerBI技巧:制作动态坐标轴

前几天的文章中介绍了如何制作动态的分析指标,这篇进行文章再介绍一下如何制作动态的坐标轴。

假设要分析的数据为销售额,分别从产品和地区两个维度进行分析,要实现的效果是,如果选择的是产品,则坐标轴是各个产品的名称,对应的是各个产品的销售额;如果选择的是地区,则坐标轴为城市,展现的是各个城市的销售额。

要达到这样的效果,我们首先需要把城市名称和产品名称整合到一起,直接用DAX来进行整合出一张表,

坐标轴指标表 =

VAR table1=SELECTCOLUMNS(ADDCOLUMNS(VALUES('产品'[产品名称]),"指标","产品"),"指标",[指标],"指标明细",[产品名称])

VAR table2=SELECTCOLUMNS(ADDCOLUMNS(VALUES('客户'[客户城市]),"指标","地区"),"指标",[指标],"指标明细",[客户城市])

RETURN UNION(table1,table2)

这个度量值主要是ADDCOLUMNS函数与SELECTCOLUMNS函数的密切配合,先用ADDCOLUMNS函数在提取的维度表上添加一列该维度的属性,返回带属性值的表;然后用SELECTCOLUMNS命名字段名,返回两个相同字段名的表,最后用UNION把两个表合并成一张表。

根据上一篇文章关于DAX表函数的介绍,ADDCOLUMNS函数与SELECTCOLUMNS都是表函数,它们的第一个参数是表,返回的也是一张表,这是理解这两个函数的关键。

创建的坐标轴指标表如下:

指标表创建好了,然后用该表中的[指标明细]作为坐标轴,并按[指标]字段做个切片器,这样当选择产品的时候,和产品对应的就是产品类别,地区也同理。

把销售额作为值,生成一个柱形图看看是什么样的,

可以看到通过产品和地区的筛选,坐标轴确实动态切换了,但是数据却明显异常,没有按照上下文进行计算,这是什么原因呢?

其实看到图中的数据都是汇总数,就很容易想到,刚才生成的坐标轴指标表,没有和订单表建立关系,因为订单表中的地区和城市分属不同的字段,无法同时连接

如果利用指标明细和订单表中的产品类别建立关系,按产品类别作为坐标轴可以正常显示,但是按地区就没法显示数据了,因为地区和订单表没有建立任何关系。

为了解决这个问题,这里要用到一个非常重要的函数:TREATAS,它的作用是在两个表之间构建虚拟关系。

新建度量值如下:

分析数据 =

SWITCH(TRUE(),

SELECTEDVALUE('坐标轴指标表'[指标])="产品",CALCULATE([销售额],TREATAS(VALUES('坐标轴指标表'[指标明细]),'产品'[产品名称])),

SELECTEDVALUE('坐标轴指标表'[指标])="地区",CALCULATE([销售额],TREATAS(VALUES('坐标轴指标表'[指标明细]),'客户'[客户城市]))

)

这个度量值先判断切片器的选择,如果选择的是产品,则用TREATAS函数在坐标轴明细表与产品表之间构建虚拟关系,这样[销售额]就可以正常筛选计算了;选择地区的时候亦然。

效果如下,

正是想要的结果。

不过当切片器不选择或者多选的时候,又出现问题了,

坐标轴竟然同时显示了城市和产品,这样的比较显然没有任何意义,我们继续优化。

为了避免多选或者不选的问题,这里利用HASONEFILTER函数进行判断,HASONEFILTER函数的含义是判断是否存在单一的筛选器

优化思路是:如果单选坐标轴指标,就是单一的筛选器,按照上面的度量值正常显示;如果不存在筛选器,或者存在多个筛选器,就上报一个错误。

分析指标的度量值修改如下,

分析数据1 =

IF(HASONEFILTER('坐标轴指标表'[指标]),

SWITCH(TRUE(),

SELECTEDVALUE('坐标轴指标表'[指标])="产品",CALCULATE([销售额],TREATAS(VALUES('坐标轴指标表'[指标明细]),'产品'[产品名称])),

SELECTEDVALUE('坐标轴指标表'[指标])="地区",CALCULATE([销售额],TREATAS(VALUES('坐标轴指标表'[指标明细]),'客户'[客户城市]))

),

ERROR("数据错误,请单选坐标轴指标!")

)

这样设置以后,效果如下,

这里利用ERROR函数故意上报一个错误,并提示报表使用者错误的原因和解决方式,

至此,充分考虑了各种情况,利用DAX巧妙构建度量值,实现了坐标轴的动态切换。

(0)

相关推荐

  • 另一类型的交互式图表-实现图表的钻取

    今天我们介绍如何在图表上实现钻取.我们使用的是数据透视图的功能,在透视图上,最终效果的实现很大程度依赖于格式的设置.所以,我们会详细介绍如何设置数据透视图的格式. 自从大数据一词流行以来," ...

  • Power Pivot里用DAX创建表

    一般来说,我们很少在Power Pivot里用DAX直接创建表,但是,了解这些基础内容,也很有必要. 为了方便直接显示结果,以下操作在Power BI中完成,若在Excel中,可用链接回表或DAX S ...

  • PowerBI技巧:动态切换数据单位

    使用PowerBI的时候,一个很不爽之处就是数据单位的设置,只能用千.百万等英美的习惯来显示,而没有我们中文所习惯的万亿等单位,虽然要求添加"万"的呼声很高,但迟迟未见到改进动作, ...

  • PowerBI技巧:动态切换中英文标题

    制作报表时,有时候要考虑不同地区用户的需求,提供多种语言的版本,这篇文章就介绍一下,如何在PowerBI报告中提供个语言选项,快速在不同语言之间切换. 实现的效果如下: 首先说明一下,这里切换的是视觉 ...

  • PowerBI技巧:动态提取数据的最后交易记录

    平时经常被问到,如何把数据中最后一次交易记录提取出来?比如每个客户的最后一次下单记录,或者每个产品最后一次卖出记录等. 这个问题实现起来并不难,以这个简易的订单表为例: 如何将上表中每个客户的最后一次 ...

  • 一个很有意思的小技巧-制作动态的下拉选择框

    今天介绍一个小技巧,关于数据验证的:如何制作动态变化的下拉框 内容变化后,下拉列表内容自动变化 假设我们的产品列表在H列,要输入的数据区域在B列: 为了输入的方便和减少出错的可能,我们可以使用数据验证 ...

  • 教你用剪映制作动态马赛克,包含有蒙版、画中画、关键帧等技巧

    教你用剪映制作动态马赛克,包含有蒙版、画中画、关键帧等技巧

  • PowerBI设计技巧:动态切换昨日、最近7日……

    前一段的文章中介绍了如何动态显示最近N天.以及动态显示最近N期的做法: PowerBI动态显示最近N期的数据 Power BI动态显示最近N天的数据 还有星友问,如果并不需要动态的N天,只需要快速直接 ...

  • PowerBI设计技巧:动态数据格式

    比如对收入.利润和利润率这三个指标进行动态的展示,先写好这三个基础度量值,然后利用一个度量值,将这三个基础度量值整合为一个度量值: 然后利用这个度量值就可以进行动态的指标分析: 详细做法参考:Powe ...

  • EXCEL技巧精选丨一分钟制作动态条形图

    本期正文共 808字,预计阅读时间 8 分钟 控件控制的动态条形图,交流群小伙伴遇到的一个小难题. 这种表格操作状态大概是这么个状态,C11处的控件每点击一次会分别显示1-5月的产品销量,需要注意三个 ...

  • Excel小技巧,5分钟学会制作动态图表,还可以多图联动,效果超酷

    Excel小技巧,5分钟学会制作动态图表,还可以多图联动,效果超酷