星友 AgnesJ 分享的 PowerBI 小技巧,在存在外部切片器的情况下,如何设置图表的默认值呢,下面直接进入正文。


如何设置Power BI图表的默认值?

AgnesJ

Power BI 里经常用到切片器,但切片器设置里并不能直接设置默认初始值,比如要实现每次打开Power BI时,在切片器没发生筛选的情况下,让图表自动显示最近一天,该怎么设置呢?

想要实现Power BI 视图都能默认显示最近一个月的销售额,要怎么做呢?

最近在做一份2010年到2019年的销售记录报表时,遇到了这个问题。客户要求一打开报表,所有与切片器连接的视图都默认显示当前年度的销售额,也就是说,我需要对我的日期切片器设置一个默认初始值:当前年份。

默认值 = 切片器中没有选择时所取的值,一旦切片器中有任何一个选择,默认值就应该消失。如果切片器中没有选择,则切片器所取的列上没有过滤器直接作用,这使我立即想到ISFILTERED函数。

ISFILTERED 直接过滤columnName时返回TRUE 。如果列上没有过滤器,或者由于正在过滤同一表或相关表中的不同列而发生过滤,则该函数返回 FALSE。

下面,我会用由两个表组成的简单模型给大家做一个演示。

数据样本:一张销售表和一张日历表。

数据来源 :微软提供样本数据库的AdventureWorks2012

报表内容:一个切片器用于筛选年份,一个直方图包含总销售额关于销售员ID的分配情况。

使用“日历”[年份]的年份切片器

直方图显示每一个“销售额”[销售员ID]的[总销售额]

现在,我们要确保当切片器没有被筛选时,直方图将显示2014年的总销售额情况,也就是说如果“日历”[年份]没有被过滤,销售总额将会是2014年的销售总额。

思路一旦出来,DAX语句也就很好写出来了:

Total sales with Default2 = IF ( ISFILTERED(Calender[Year]), SUM ('Sales SalesOrderHeader'[SubTotal]), CALCULATE ( SUM ( 'Sales SalesOrderHeader'[SubTotal] ), FILTER('Calender',Calender[Year]=2014) ) )

是不是很简单呢?嘻嘻。

那么,如果某个视图连接了多个切片器,该怎么办?比如下面这种情况:

三个切片器:'日历'[年] /'日历'[月] /'日历'[日期],任意一个切片器或组合都可以对视图进行筛选。

依然很简单,抓住ISFILTERED再找 OR 来帮个忙就好啦!

创建一个度量值[IsAnySlicerFiltered?],当这三个切片器中没有任何选择时,谁将返回False,并且当有任意一个切片器被筛选时将返回True。

IsAnySlicerSelected? =  OR( OR( ISFILTERED(Calender[Date]),ISFILTERED(Calender[Month])), ISFILTERED(Calender[Year]) )

现在,只需要用ISFILTERED(Calender [Year])替换[IsAnySlicerFiltered?] ,就可以实现我们的目标了。

Total sales with Default 3 = IF ( [IsAnySlicerSelected?], SUM ('Sales SalesOrderHeader'[SubTotal]), CALCULATE ( SUM ( 'Sales SalesOrderHeader'[SubTotal] ), FILTER('Calender',Calender[Year]=2014) ))

这就搞定一个视图链接多个切片器的情况咯!

让我们来看看效果:

但DAX的功能那么丰富,用ISFILTRED 函数绝对不是唯一解决方案,比如,我们可以换一种思路来定义切片器的默认初始值:

默认初始值 = 切片器没有进行选择= 切片器所属列被筛选的行数为0,也就是说我们可以用计行数来解决,COUNTROWS 一下。

如果被筛选的行数是默认值( Power BI会默认全选 ),那么结果就为初始默认值,否则默认值就失效。

这里需要借助两个中间度量值,来为我们确定是否切片器被筛选。其中一个用来记录当前切片器的选择值,我们称其为[CurrentSelection?]

CurrenctSelection? = COUNTROWS(DISTINCT(ALLSELECTED(Calender[Year])))

另外一个为切片器所包含列的所有可能性,[TotalSelection?]。

TotalSelection? = COUNTROWS(DISTINCT(ALL(Calender[Year])))

这里用到了DAX家族里功能十分强大的ALL 函数 和ALLSELECTED 函数。

Et voilà,如果 [CurrentSelection?] = [TotalSelection?],那么我们就需要展示切片器的默认初始值。

Total sales with Default = IF ( [CurrenctSelection?] = [TotalSelection?], CALCULATE ( SUM ( 'Sales SalesOrderHeader'[SubTotal] ), FILTER('Calender',Calender[Year]=2014) ), SUM ('Sales SalesOrderHeader'[SubTotal]))

下面为,使用ISFILTERED 以及 ALL 函数和ALLSELECTED 函数分别进行单一切片器初始默认值设置的演示:

今天的分享就到这里啦,DAX可以实现的可能性真的是太多了,不但许多Power BI本身可以实现的设置都可以被DAX代替,而且DAX还可以实现许多Power BI还未更新的功能呢,这个神仙语言,真的让我难以自拔啊。

顺便说一句,当在切片器中选择“全选”选项时,上文提到的方法都将不起作用。原因?这还用问嘛?


感谢AgnesJ分享的实用技巧,熟练使用DAX,可以帮助我们更灵活的控制图表,也欢迎更多的小伙伴分享自己的诀窍哦。

如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,帮你轻松熟悉PowerBI。

the end.

切片器可以设置日期格式?_在Power BI中设置切片器的默认值,你会吗?相关推荐

  1. wps斜杠日期格式_在WPS表格中轻松统一日期格式

    平常办公中经常需要收集汇总下级各部门上报的数据表格.由于各部门输入人员并没有按统一标准格式输入日期,汇总数据之后往往会发现汇总数据中的日期有很多种格式.除了2009-2-3.1978年5月6日等标准格 ...

  2. power bi指标呈现_在Power BI中使用关键绩效指标

    power bi指标呈现 In this article, we will learn Key Performance Indicators usage in Power BI and solve a ...

  3. power bi函数_在Power BI中的行上使用聚合函数

    power bi函数 Aggregate functions are one of the main building blocks in Power BI. Being used explicitl ...

  4. word如何设置上标形式_如何在word中设置特殊页码

    获取更多业界资讯和深度好文● 点击蓝字关注我们 ● 在日常工作中,我们编辑的word文档经常需要设置页码,但有时文档的第一页是封面,第二页才是正文,或者第二页是目录,第三页才是正文,如下图所示,而页码 ...

  5. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

  6. java中如何设置字体样式_如何在JAVA中设置字体样式和大小?

    我是新来的Java和无法弄清楚如何格式化我的代码是这样的: 字体"宋体"字体大小"9"大胆如何在JAVA中设置字体样式和大小? 我想整个段落的格式化文本.我真的 ...

  7. 未发现数据源名称_在Power BI中管理数据源Analysis Services

    添加数据源 有关如何添加数据源的信息,请参阅添加数据源. 如果要连接到多维或表格服务器,请选择 Analysis Services 作为"数据源类型" . 填写数据源的信息(包括服 ...

  8. python如何设置随机种子_如何在Python中设置全局随机种子

    与R一样,我希望为整个脚本/会话全局设置随机种子,而不是每次执行函数或运行模型时都必须调用随机种子函数.我知道sci kit learn使用的是numpy RNG,但也无法找到一种将其设置为全局的方法 ...

  9. python作图设置背景颜色_如何在matplotlib中设置绘图的外部背景颜色

    敬礼 我想更改matplotlib中绘图的外部颜色.我可以找到很多很多例子,如何改变内部背景颜色,但外部背景颜色拒绝改变.在 图像的白色部分就是我所说的"外部"背景.最外面的颜色只 ...

  10. 切片器可以设置日期格式?_Power BI 中的切片器

    何时使用切片器 在要完成以下操作时,切片器非常有用: 在报表画布上显示常用或重要的筛选器,用以简化访问. 更轻松地查看当前筛选的状态,而无需打开下拉列表. 按数据表中不需要的和隐藏的列进行筛选. 通过 ...

最新文章

  1. hdu 4937 Lucky Number(数学题 进制转换)2014多校训练第7场
  2. VTK:PolyData之SelectPolyData
  3. 【华为HCNA】访问控制列表ACL实例配置
  4. 自定义 ocelot 中间件输出自定义错误信息
  5. DBeaver连接达梦|虚谷|人大金仓等国产数据库
  6. Salesforce宣布5.82亿美元收购文件编辑公司Quip
  7. 万亿级流量高可用延时服务架构设计
  8. Kotlin学习笔记 第四章注解
  9. 双十一,老板的电话该不该接?
  10. 12,mac phpstorm xdebug
  11. 微信小程序云开发教程-小程序代码发布和上线运行
  12. java面向对象容许单独_java笔试题
  13. 23个海外求职找各种工作的招聘网站
  14. linux目录更改权限不够,Linux中文件夹访问权限不足
  15. 声源级、接收电压灵敏度(接收带内响应)
  16. js实现公历(阳历)和农历(阴历)的换算
  17. vuex mutaton与actions的区别
  18. 解决视频资源音乐资源在Android模拟器中不能播放的问题
  19. 代数余子式之和怎么算_小明说养老 | 养老金怎么算之算算过渡性养老金
  20. c语言使用双撇号为何不能运行,最简单的C程序设计——顺序程序设计

热门文章

  1. Android Wifi文件传输
  2. 论文解读:《Deep-4mcw2v: 基于序列的预测器用于识别大肠桿菌中的 N4- 甲基胞嘧啶(4mC)位点》
  3. LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机技巧.doc
  4. 285页解析百度、阿里、腾讯前端面试题,通关秘籍请收好!
  5. 46.把数字翻译成字符串
  6. MYSQL 知识点总结
  7. HDFS中Locality 为什么介于0~1之间?与HBase之间有什么关系?
  8. ios 故事板跳转
  9. 半小时一篇文过完C语言基础知识点
  10. 介绍Hosts文件和DNS及DNS的解析过程