打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
进阶筛选上下文
筛选上下文是一个复杂的概念,我们按复杂性递进的顺序将文章分为了初识、进阶和理解三部分。在读完理解筛选上下文之后,你才能最终明白它是如何工作的。请按顺序阅读这三篇文章,以便一步一步地接近最后的真相。
在上一篇文章中,我们给筛选上下文的最初定义是:”应用于模型的一组筛选器,它改变了整个数据库中可见的行“。即使这是一个正确的定义,它仍然是非常初级的。为了深入下一个级别,你需要记住 VertiPaq (运行 DAX 的数据库)是一个列式数据库,你应该停止以表格的思维考虑问题,转而考虑列。
从行式到列式
例如,你可以将产品表看作一个常规表,如图所示
你可以将产品表视为一个标准形式的表,由行组成,每行被划分为多个列
但是,因为 VertiPaq 是一个列式数据库,所以表的正确表示形式应该是一组列,而不是单个表实体。因此,同一个表更合理的的展示形式是这样的。
产品表的准确展示形式是一组列的集合,每列被分成多个行
表的内容没有变化,但是现在更容易把不同列视作存储在内存中的不同单元。显然,相同的表示方法适用于数据模型中的任何表。因此,你应该在心里将模型中的每个表划分为单独的列,最终会得到一组列的集合。虽然从逻辑上被称为表,但每个列与其他列分离。
当你在切片器中添加颜色时,DAX 对该列应用了一个筛选器。请仔细阅读这段话:它不会对包含列的整张表应用筛选器。它只对列应用筛选器。然后,因为列是表的一部分,因此表也会有一个筛选器。然而,筛选器一次只对一列生效(此处描述的内容已经接近真实情况;我们将在理解筛选上下文中对此进行最终阐述)
当你在切片器中筛选,比如说,红色产品的时候,模型将具有此筛选器,如图所示
筛选红色产品会产生一个只应用于颜色列的筛选器
你可以将这个单列的筛选器想象成针对列值创建的位图索引,或者用一种更容易理解的方式,理解为列的活动值列表。
最后,我们对筛选上下文做一个更准确的定义: 筛选上下文是一组表的集合。每个表包含一列,每列包含引擎认为在当前上下文中可见的所有值。所有这些筛选条件置于 AND 逻辑中取交集,形成了筛选上下文。
对于透视表的单个单元格,筛选条件可以来自切片器、筛选器;可以来自透视表的行和列。每个筛选条件都对由单列组成的表的集合进行操作。因此,在前面的示例中,筛选上下文包含三个独立的筛选条件:一个用于类别,一个用于子类别(都位于透视表的行标签),一个用于颜色(来自切片器)。
小结
以上描述帮助我们更好地理解了筛选上下文在更新时发生了什么,如果你想要更新筛选上下文,你需要为模型中某些或所有被筛选的列提供一个新的值列表。DAX 将用新列表替换该列(且仅替换该列)上的筛选器,通过这种方式,DAX 生成了一个新的筛选上下文。
当使用列作为筛选器时,需要记住的两个重要方面是:
每个筛选器都对应了某一列活动值的集合
每个筛选器只施加到单列
请记住,这还不是筛选上下文的正确定义。在成为一个真正的 DAX 大师之前,你必须学习许多其他方面的知识。尽管如此,这个定义对于开始使用筛选上下文已经非常有用。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
03 什么是DAX函数?
DAX 公式中的上下文
DAX中的KEEPFILTER函数:简明指南 - Power Excel
DAX:概述ALL函数
超级透视表和Power BI:深入理解行上下文
为什么学不会Excel超级透视表?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服