Power BI(二十一)power pivot之筛选上下文和行上下文
其实上下文概念并不深奥,但是对于习惯使用Excel计算函数的亲们来说在学习这块知识时感觉会比较别扭,这主要是因为在Excel中,某一段计算内容的确定是通过Excel表格中的坐标来确定的,非常直观,例如SUM(A1:A3),能让人一眼就明白要计算的内容是A1单元格到A3单元格之间所有数字的总和。而在DAX中,为了支持对大数据进行多样化的运算,它没有使用Excel中通过固定坐标定义函数运算范围的方式,转而通过上下文概念来定义函数所在的环境变量,即其运算范围,实现了函数对数据的处理可以根据上下文的不同而输出不同的运算结果。因此,只有充分理解了上下文含义才能更好的使用DAX来分析数据。
DAX中有两种类型的上下文分:行上下文(Row Context)和筛选上下文(Filter Context)。
行上下文
行上下文可以理解为当前行内容。行上下文的应用范围不只局限于当前一张表。如果两张表之间建立了关联关系,则通过该关联关系就形成一个跨表的行上下文。
筛选上下文
筛选上下文是指将原始数据按照一定规则进行筛选,然后将提取出来的结果再作为环境变量带入到函数中使用。通过设定筛选上下文,可以灵活的改变函数的运算范围,实现数据分类分析处理的目的。
需要记住的是,DAX的行上下文和筛选上下文共同作用于函数运算当中并对其结果产生影响。在分析行上下文对函数结果的影响时要以当前行中的数据为研究基准,而分析筛选上下文对函数结果的影响时则要从筛选出的子表单入手进行。
当创建计算列时,DAX会自动为其定义行上下文关系,即计算列中的每个值都受到其所在行数据的影响。而当使用度量值创建报表时,其运算都是基于表单中