PowerBI动态坐标轴及年季月切换
5
饭后走一走,路边又吃九十九
有时为了节省报告页面空间,或者业务人员的特殊需求,需要图表的维度可以动态切换,比如筛选器选择产品类别时,X轴显示的是产品的类别,而当筛选器选择姓名时,则X轴显示的是客户的姓名。
书签
创建两个书签来切换不同的图表,这应该是相对来说最简单的方法了,虽然原理上并不是动态坐标轴,但是结果上看还是相同的。
方法很简单,就不再写详细过程,创建两个书签来切换不同的图表即可。
可是,这样会有一些问题,比如数据量很大,或者需要动态切换的图表很大,工作量就会变大,甚至会让报告变慢。
组合一张新的辅助表
还是回到问题本身,我们想通过筛选器来切换坐标轴的值,其实可以想像出筛选器字段来坐标轴字段来源于一张表。所以,上述问题只需要存在这样一张表:两个字段,一个字段是类型,只有两个值产品类别和客户姓名,另一个字段是对应的值。
构造计算表如下,不需要和其他表建立任何关系
Category and Customer =
UNION(SELECTCOLUMNS( VALUES( 'Product'[EnglishProductCategoryName]), "Value", [EnglishProductCategoryName], "Type", "Category" ),SELECTCOLUMNS( VALUES( 'Customer'[First Name] ), "Value", [First Name], "Type", "Customer" )
)
这样,我们就可以通过筛选器来切换坐标轴的值了,只是这里还不没有结束,还需要将计算表与维度表关联起来,不然无法正确显示相应度量,这里方法也很简单,只需要选择不同类别时建立不同的虚拟关系即可
Sales Amount.Show =
var x = SELECTEDVALUE( 'Category and Customer'[Type] )
var result = SWITCH(x,"Category", CALCULATE( [Sales Amount], TREATAS( VALUES('Category and Customer'[Value]),'Product'[EnglishProductCategoryName] ) ),
"Customer", CALCULATE( [Sales Amount], TREATAS( VALUES('Category and Customer'[Value]),'Customer'[First Name] ) ) )
return
result
这里,也可能改用计算组来实现,创建两个计算项如下
使用计算组,也省去了如果需要动态切换的度量值太多还需要再写一个融合度量值的情况,比较推荐计算组的写法。
年季月切换
再来看另一个问题,既然产品类别和客户名称可能通过维护一张辅助表来实现,那坐标轴年度、季度、月度切换也是一样的,另外因为它是和日期相关的,所有还必须存在一列是日期列,此外为了显示效果,也需要两个排序列。如下图所示
构造起来也比较简单,只需要分别构造年度、季度等五张表,最后组合起来就可以了。
另外,这张表需要和原有日期表创建双向关系。
DatesPeriod =
VAR _datetable = 'Date'
VAR _Year =
ADDCOLUMNS( SELECTCOLUMNS( _datetable , "Range" , "Y" & [CalendarYear] , "Date" , [Full Date] ) ,
"RangeOrderBy" , YEAR( [Date] ),
"Type" , "Year" ,
"TypeOrderBy" , 1
)
VAR _Quarter =
ADDCOLUMNS( SELECTCOLUMNS( _datetable , "Range" , "Y" & FORMAT( [Full Date] , "YYYY\QQ" ) , "Date" , [Full Date] ) ,
"RangeOrderBy" , YEAR( [Date] ) * 100 + QUARTER( [Date] ) ,
"Type" , "Quarter" ,
"TypeOrderBy" , 2
)
VAR _Month =
ADDCOLUMNS( SELECTCOLUMNS( _datetable , "Range" , "Y" & FORMAT( [Full Date] , "YYYY\MMM" ) , "Date" , [Full Date] ) ,
"RangeOrderBy" , YEAR( [Date] ) * 100 + MONTH( [Date] ),
"Type" , "Month" ,
"TypeOrderBy" , 3
)
VAR _Week =
ADDCOLUMNS( SELECTCOLUMNS( _datetable , "Range" , "Y" & [CalendarYear] & "W" & WEEKNUM( [Full Date], 2 ) , "Date" , [Full Date] ) ,
"RangeOrderBy" , YEAR( [Date] ) * 100 + WEEKNUM( [Date], 2 ) ,
"Type" , "Week" ,
"TypeOrderBy" , 4
)
VAR _Date =
ADDCOLUMNS( SELECTCOLUMNS( _datetable , "Range" , FORMAT( [Full Date] , "YYYY/MM/DD" ) , "Date" , [Full Date] ),
"RangeOrderBy" , [Date] ,
"Type" , "Day" ,
"TypeOrderBy" , 5 )
RETURN UNION( _Year , _Quarter, _Month , _Week, _Date )
PowerBI木小桼
powerbi、dax、设计模式、SSAS
37篇原创内容
公众号
PowerBI动态坐标轴及年季月切换相关推荐
- 129_Power PivotPower BI DAX不同维度动态展示动态坐标轴
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 某天在和**那还是叫我大铁吧** 交流关于季度&月度同时展示的问题,感概中国式报表真的需求很微妙. 下面 ...
- Tableau作图技巧:动态指标分析-制作动态坐标轴
之前公众号上写过一篇文章介绍了如何在一张图中,制作动态的指标分析.有同学问到能否将坐标轴也实现动态切换,这样能灵活分析不同维度的数据.下面我们一起看看能否实现这个功能. 假设我们要展示的数据为不同维度 ...
- 仿小米,Cal日历的周月切换
仿小米,Cal日历的周月切换 最近项目需要,做个类型Cal日历的日历控件,于是就在网上查找资料,都没有找合适的,没办法,小弟技术渣,就找一个类似的改改吧. 还把UI界面给调整了下,至少看起来是舒服的. ...
- Android定制日历,支持周月切换,日期标记,农历显示,节假日
公司项目需要一个功能全面的日历,然后就在网上找demo,然后根据demo自己深度定制了一个日历,基本满足了需求,现在把日历核心代码共享给大家.源码下载地址http://download.csdn.ne ...
- vue日历,可以按周、月切换
仿钉钉的日历,可以实现周.月切换,代码是在另一位大神那里参考修改的,感谢https://blog.csdn.net/x_xiaoqi/article/details/79142055#commentB ...
- Powerbi实战--常用新建表代码(单位切换,日期表)
单位切换 #Model_Unit = DATATABLE("单位名称",STRING,"OrderBy_unit",INTEGER,"Value&qu ...
- powerbi的功能介绍_PowerBI 8月更新,这几个实用功能,你应该会用到
PowerBI Desktop8月的更新如约而至,依然是发布了长长一大串的功能改进,但相对没上月那么重磅.官方博客的介绍非常详尽,我就不再赘述了,如果想看视频介绍,可以观看我的知乎视频,已加上中文翻译 ...
- hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)
1.2.4集群运维测试 HA集群中两个namenode状态的管理命令 [root@mini2 hadoop-2.6.4]# bin/hdfs haadmin Usage: DFSHAAdmin [-n ...
- hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)...
1.2.4集群运维测试 HA集群中两个namenode状态的管理命令 [root@mini2 hadoop-2.6.4]# bin/hdfs haadmin Usage: DFSHAAdmin [-n ...
最新文章
- python url模块介绍_python 中 urlparse 模块介绍
- python编译安装没有c扩展_为什么在安装simplejson时得到“C扩展无法编译”?
- dram和nand哪个难生产_仅300名员工,年产7台,订单排到5年后,比光刻机还难买...
- Spring4学习笔记 - Bean的生命周期
- 跳级全奖进哈佛,连马云都忌惮三分,赚18个亿后隐退美国,如今的他在干什么?
- 5S管理卫生考评办法
- 到底该如何看待谭浩强的“C程序设计”
- AMiner会议论文推荐第七十五期
- 网上流传的飞扬学院Java_收获| 云和JAVA、UI双班毕业,飞扬青春再出发!
- Jetson Nano从零开始(2):硬件篇
- c语言——常见占位符(格式说明)
- 计算机二级等级证书Java考试-模拟试题1
- css 修改文字基准线_HTML4/HTML5 用CSS或style属性修改 hr 实线 虚线 点线 双实线样式 ... ......
- Ubuntu -- 分卷压缩与分卷解压
- Postman报错:Error: NETERR: getaddrinfo ENOTFOUND localhost
- 最长递增子序列(信封嵌套问题)
- 2014年8月英语总结
- 爱上生活 。 文/江湖一劍客
- python计算FPS
- Sound Forge Pro 3 for Mac(专业音频编辑工具)