PowerBI DAX中的上下文该怎么理解呢?

上下文,是英文context翻译过来的,百度:上下文; 语境; (事情发生的)背景,环境,来龙去脉。在编程语境中,一般都用上下文来表示。这是一种形象的说法。就像是写文章,上下文,字面上就是你所在的位置上面和下面的语境。在大多数情况下,上下文表示环境、范围。在PowerBi的DAX函数库涉及到两类上下文:行上下文、筛选上下文。
要理解以下两个概念:
  • 数据表的结构。在数据库中,表是由行列组成,定义表时需指定列名、类型,而数据是一行行存储的。
  • 行的迭代。这个词现在比较流行,听起来挺高大上,实际就是循环读取行数据的意思,比如for row in rows循环。
理解了这两个概念,我们再来看PowerBI中函数的上下文。
  • 行上下文函数:指的是该函数对数据的读取是逐行进行的,依据每行的数据进行计算。因此就有行上下文只管迭代的说法,就是循环读取每行数据。
  • 筛选上下文函数:指的是该函数受数据列筛选的影响。列筛选可以理解为Excel中筛选列的操作。
那么哪些是行上下文函数?哪些是筛选上下文函数呢?比较典型的:
  • 行上下文:
    • 新建列。在PowerBI中,新建一个数据列实际是对现有表中的数据进行计算,比如:列3=列1-列2,可以理解为对表中数据逐行读取,用每行的第1列数减去第2列得到的数组成第3列。但是如果在新建列中用了聚合函数,比如sum,那么就会忽略行上下文,从而得到一个唯一值。
    • 以X结尾的函数,这类函数是专门用于逐行计算的函数,比如:sumx,得到的是逐行计算的数组。
  • 筛选上下文:
    • 度量值。度量值是对列进行计算,因此受列筛选的影响。比如:列1中有A、B、C三个数据,countrows(列1)(countrows为计算行数的函数)在没有筛选的情况下,countrows(列1)=3。如果对列1进行筛选了A,那么列1只剩下A这1个数据,所以countrows(列1)=1。形象的理解可以类比Excel中筛选操作,列1筛选了A,那么B、C都被隐藏,所以只剩下A一个数据。在PowerBI矩阵表和Excel透视表中,行标签代表着对列的筛选,因此可以实现分类统计。
在对上下文的理解中,需要注意的是:使用聚合函数(统计函数)会自动忽略行上下文,因为聚合函数本来就是就列进行统计

 

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值