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

进阶筛选上下文

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

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

从行式到列式

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

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

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

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

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

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

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

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

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

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

本文隐藏内容查看价格为2G币,请先
单独购买的内容长期有效,不受时间限制(购买前先刷新当前页面)。加入VIP会员可享受全站权益,性价比更高。

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

18
说点什么

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

老师请教一下问题,有一个销售表和客户表,构造一个度量值如图1所示,然后把客户放到切片器上,把日期和客户放到矩阵上,现在在矩阵中选择客户a,如图2所示为什么矩阵会出现这个结果?
按照原理,切片器选择了a,矩阵里应该显示的只有a客户吧,然后公式中的 except覆盖矩阵中的客户,最后在矩阵中显示的应该只有a客户,为什么有其他客户?

9343fca46e6e3f3b0ef7df99523a2cd.png
1c89921c30dfb7a5df566850f9ce6fe.png
成员
Alfred

高老师,这篇是否可以这样理解:比如有两个筛选上下文,即Name为TV以及 clolor为red,DAX会分解为3步
1,在所有数据中把所有Name为TV的数据筛选出来,
2,再在所有数据中把color为RED的数据筛选出来,
3,取1和2的交集,
而不是先筛出Name为TV的数据,然后再在TV里面找Color为RED的数据,不知道这种理解是否正确?

成员
spongebill

高老师,有个案例能否请教一下问题出在哪:
需要统计水果在所售卖的门店的销售占比,为什么数据不对?公式应该怎么改?

p.s. 有些水果不是所有店都卖,所以对于这些水果希望销售占比的分母仅仅是所卖的店。

2.PNG
1.PNG
成员
139****3194

原来筛选上下文是可能一个或多个筛选条件或筛选器的组合,每个筛选器只能筛选单列,筛选单列后的结果可能一个或多个活动值的集合。多个列的活动值的集合取交集构造了初始筛选上下文,高老师,OK?

成员
freepoter

老师,高级原理什么时候更新呀

成员
token

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

DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组/连接函数

集合函数

其他函数