从数据到信息
从信息到洞察

进阶筛选上下文

筛选上下文是一个复杂的概念,我们按复杂性递进的顺序将文章分为了初识、进阶理解三部分。在读完理解筛选上下文之后,你才能最终明白它是如何工作的。请按顺序阅读这三篇文章,以便一步一步地接近最后的真相。

在上一篇文章中,我们给筛选上下文的最初定义是:”应用于模型的一组筛选器,它改变了整个数据库中可见的行“。即使这是一个正确的定义,它仍然是非常初级的。为了深入下一个级别,你需要记住 VertiPaq (运行 DAX 的数据库)是一个列式数据库,你应该停止以表格的思维考虑问题,转而考虑列。

从行式到列式

例如,你可以将产品表看作一个常规表,如图所示

你可以将产品表视为一个标准形式的表,由行组成,每行被划分为多个列

但是,因为 VertiPaq 是一个列式数据库,所以表的正确表示形式应该是一组列,而不是单个表实体。因此,同一个表更合理的的展示形式是这样的。

产品表的准确展示形式是一组列的集合,每列被分成多个行

表的内容没有变化,但是现在更容易把不同列视作存储在内存中的不同单元。显然,相同的表示方法适用于数据模型中的任何表。因此,你应该在心里将模型中的每个表划分为单独的列,最终会得到一组列的集合。虽然从逻辑上被称为表,但每个列与其他列分离。

当你在切片器中添加颜色时,DAX 对该列应用了一个筛选器。请仔细阅读这段话:它不会对包含列的整张表应用筛选器。它只对列应用筛选器。然后,因为列是表的一部分,因此表也会有一个筛选器。然而,筛选器一次只对一列生效(此处描述的内容已经接近真实情况;我们将在理解对筛选上下文中进行最终阐述)

当你在切片器中筛选,比如说,红色产品的时候,模型将具有此筛选器,如图所示

筛选红色产品会产生一个只应用于颜色列的筛选器

你可以将这个单列的筛选器想象成针对列值创建的位图索引,或者用一种更容易理解的方式,理解为列的活动值列表。

最后,我们对筛选上下文做一个更准确的定义: 

此处为隐藏内容 VIP会员和付费用户可见

请记住,这还不是筛选上下文的正确定义。在成为一个真正的 DAX 大师之前,你必须学习许多其他方面的知识。尽管如此,这个定义对于开始使用筛选上下文已经非常有用。

下载面板

以上隐藏内容查看价格为2G 币,请先
注:加入 VIP 会员可享受全站权益,性价比更高。单独购买的内容长期有效,不受时间限制。

2
说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
1 评论数
1 被回复的评论
1 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
token
成员
token

老师,这篇文章开头说“筛选上下文……分为了初识、进阶和理解三部分。”目前只看到有“初识”和“进阶”,没看到有“理解筛选上下文”,请问是这一章没更新完,还是要放到高级原理那一章?