全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
1786 0
2020-09-11
创建切片器以过滤Power BI中的多列
Power BI为单个列提供切片器,但是在某些情况下,将单个切片器中多个列的替代过滤器合并起来可能很有用。从技术上讲,通过标准的可视化视图在Power BI中是不可能的,但是您可以使用特定的数据建模技术来获得所需的结果。
考虑具有地理层次结构(具有Continent,  Country和  State)的Customer表的情况  。要求是使用单个切片器在加利福尼亚州(州),法国(国家)或亚洲(大陆)上启用过滤器,如以下屏幕截图所示。
实施解决方案所需的第一步是在“ 客户” 表中创建一个计算列,该列  定义过滤器的粒度。因为  州  可能不是唯一的,所以我们 通过将State  和  Country串联起来在Customer表中  创建一个计算列  。在  大陆  不需要列,因为每个  国家  只能属于一个  大陆  -在不同的情况下,可以考虑连接所有定义为表的每一行的唯一值的列。
StateCountry = COMBINEVALUES(“ |”,Customer [州],Customer [CountryRegion])
该  StateCountry  需要列创建表的关系  切片  昭示着在单个项目可能的选择。这样的表具有一个  Slicer [Selection] 列,其中在切片器中显示的每个项目至少具有一个值,并且StateCountry  值的所有组合都  针对每个可能的选择进行过滤。
通过这种方式获得的  Slicer表必须在Slicer [StateCountry]  和  Customer [StateCountry]之间具有关系  。此关系具有许多基数和单个过滤器方向,因此  Slicer  过滤“  客户”  (而不是相反)。
切片器= DISTINCT(联合(SELECTCOLUMNS(客户,“选择”,Customer [州],“ StateCountry”,客户[StateCountry]),SELECTCOLUMNS(客户,“选择”,Customer [CountryRegion],“ StateCountry”,客户[StateCountry] ),SELECTCOLUMNS(客户,“选择”,客户[Continent],“ StateCountry”,客户[StateCountry]))))
现在模型准备就绪。通过在切片器中选择一个项目,可以将过滤器应用于“  切片器[选择]”  列。 由于在上一步中创建的关系,此过滤器自动传播到Customer [StateCountry]列  。这是支持本文开头显示的报告的模型。
显然,  Slicer [Selection]  可以用作视觉对象中的常规列。以下屏幕截图显示了一个矩阵,其中澳大利亚的销售分为两行:亚洲和澳大利亚。每当报告中涉及多对多基数关系时,该度量是非累加的,并且“总计”显示的数字不是可见行的总和-总计对应于考虑到每个状态的选定状态的累积数量仅陈述一次。
对于具有几百个唯一值的关系基数的模型,此解决方案应该很好用。如果  Slicer [StateCountry]  列具有数千个或更多的唯一值,则最好考虑一种基于物理强关系的方法,该方法依赖于使用Slicer [StateCountry]的唯一值创建的中间表  。在不支持关系中多对多基数的Analysis Services版本中,还可以使用以下技术。您可以 使用以下计算的表定义创建中间表  StateCountry:
StateCountry = ALLNOBLANKROW ( Slicer[StateCountry] )
使用以下命令复制DAX公约代码#3格式代码
通过启用Slicer  表 和  StateCountry表之间的双向过滤器  (应将其隐藏在报表视图中),您将获得多对多基数关系的相同结果,并提高了性能。
每当您要在单个列中显示表的不同列中本机存在的值时,本文提供的技术就很有用,以提供更好的用户体验和简化的报表用户界面。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群