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动态坐标轴及年季月切换相关推荐

  1. 129_Power PivotPower BI DAX不同维度动态展示动态坐标轴

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 某天在和**那还是叫我大铁吧** 交流关于季度&月度同时展示的问题,感概中国式报表真的需求很微妙. 下面 ...

  2. Tableau作图技巧:动态指标分析-制作动态坐标轴

    之前公众号上写过一篇文章介绍了如何在一张图中,制作动态的指标分析.有同学问到能否将坐标轴也实现动态切换,这样能灵活分析不同维度的数据.下面我们一起看看能否实现这个功能. 假设我们要展示的数据为不同维度 ...

  3. 仿小米,Cal日历的周月切换

    仿小米,Cal日历的周月切换 最近项目需要,做个类型Cal日历的日历控件,于是就在网上查找资料,都没有找合适的,没办法,小弟技术渣,就找一个类似的改改吧. 还把UI界面给调整了下,至少看起来是舒服的. ...

  4. Android定制日历,支持周月切换,日期标记,农历显示,节假日

    公司项目需要一个功能全面的日历,然后就在网上找demo,然后根据demo自己深度定制了一个日历,基本满足了需求,现在把日历核心代码共享给大家.源码下载地址http://download.csdn.ne ...

  5. vue日历,可以按周、月切换

    仿钉钉的日历,可以实现周.月切换,代码是在另一位大神那里参考修改的,感谢https://blog.csdn.net/x_xiaoqi/article/details/79142055#commentB ...

  6. Powerbi实战--常用新建表代码(单位切换,日期表)

    单位切换 #Model_Unit = DATATABLE("单位名称",STRING,"OrderBy_unit",INTEGER,"Value&qu ...

  7. powerbi的功能介绍_PowerBI 8月更新,这几个实用功能,你应该会用到

    PowerBI Desktop8月的更新如约而至,依然是发布了长长一大串的功能改进,但相对没上月那么重磅.官方博客的介绍非常详尽,我就不再赘述了,如果想看视频介绍,可以观看我的知乎视频,已加上中文翻译 ...

  8. 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 ...

  9. 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 ...

最新文章

  1. iOS将产品进行多语言发布,开发
  2. WebRTC的优缺点
  3. SpringSecurity自定义UsernamePasswordAuthenticationFilter
  4. 小余学调度:学习记录2021.8月
  5. [Uva10641]Barisal Stadium(区间dp)
  6. python 操作mongodb数据库参考文档
  7. 设计模式之代理:手动实现动态代理,揭秘原理实现
  8. 2021-2025年中国制药行业MR报告软件行业市场供需与战略研究报告
  9. Web3 是去中心化的“骗局”?
  10. 创建oracle管理用户名和密码是什么情况,Oracle创建时默认创建的用户以及密码
  11. Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问
  12. python3抓取图片脚本_使用Python3编写抓取网页和只抓网页图片的脚本
  13. xxx/ASPNET帐户登陆失败情况处理
  14. 周末闲来——2048游戏开发
  15. ★如何解释特修斯之船问题? /编
  16. 游戏设计之路——游戏设计文档详解(GDD)
  17. 重温《遥远的救世主》
  18. 关于 SwiperJS 的初次使用
  19. Linux中vsftpd服务配置(匿名,用户,虚拟用户)
  20. 线性代数(numpy.linalg)

热门文章

  1. leetcode1646. 获取生成数组中的最大值
  2. 排队论模型(七):排队系统的优化
  3. Springboot集成springFox-Swagger3并通过Yapi做接口管理
  4. 概率论01-样本空间,随机事件
  5. 泸州职业技术学院计算机单招试题,泸州职业技术学院普通类9+3单招考试技能测试考纲...
  6. msql中常用的DDL语句
  7. 路由控制——ACL、IP-Prefix List
  8. 蒲公英 linux安装目录,蒲公英 - 文档中心 - 使用 Fastlane 上传 App 到蒲公英
  9. linux 使用pip安装出现错误
  10. StringUtils java