阅读圣经丨DAX数据类型

2021-09-01 14:39:56 浏览数 (1)

之前的时候,白茶是一个纯小白,有一些东西,网上并没有详细的基础介绍,或者说,没有免费的资源。这就导致说与大佬们沟通的时候,很多大佬都不愿意搭话。不是不愿意回答,而是问的问题太基础了,就好比问人家1 1等于几一样。痛定思痛,基础终究是需要自己静下心来学习的。

之前呢,说了一下PowerBI。其实白茶读圣经2的时候,觉得好难啊,晦涩难懂。首先就是圣经是由两个外国人写的,很多内容并不符合我们中国人的阅读习惯,而且有的地方描述显得有些臃肿了,白茶喜欢捞干的说。

DAX,也就是数据模型语言,它一共可以执行八种不同的数据类型。分别是:整数(Integer),十进制数(Decimal),货币(Currency),日期时间(Date Time),布尔值(Boolean),文本(String),变体(Variant),二进制(Binary)。

为什么要说一下可以执行的数据类型?因为这个对于我们的运算逻辑会有影响。比如说:我有一个表,其中的一列是日期,那么这个数据能进行汇总统计么?比如说1月1日 2月1日,结果等于3月2日?这是不现实的,不能单纯的累计,而是要选择对应的函数才能求出相关的结果,这也就是为什么我们要知道DAX可以执行数据类型的意义,虽然不起眼,但是很重要,万丈高楼平地起啊,基础才是王道。

整数:这个是我们应用范围最广的一个数据类型,经常用到的就是各类计算,比如说SUM聚合汇总,MIN求最小值,MAX求最大值。这里需要注意的是,小数的计算函数也属于整数,但是要考虑到四舍五入这个概念。比如事实表明明没有空值和0,但是计算结果呈现在表格里面有,这就有可能是系统四舍五入了。

十进制数:这个白茶接触的不多,但是听群里面大佬说过,需要注意的就是一些数值,原本是整数,但是我们在使用函数进行运算之后,结果可能会出现偏差,这个就是进制转换的问题。

货币:白茶的理解,货币其实就是整数和小数添加了单位。但是为什么要单独提出来描述一下呢?它处于整数小数与文本函数的中间地带,常用的聚合类函数针对的都是整数,文本函数不嵌套其他函数是无法进行直接计算的。但是货币属于带单位的可计算类型,常用的SUM啊、MIN啊、MAX啊等等,对它都是可进行计算的。

日期时间:这类函数不能直接使用聚合函数,因为不符合逻辑。需要我们使用日期函数或者其他函数转换之后才能进行聚合计算。但是最常用的还是为数据限制时间概念,比如说财务经常涉及到的同比、环比、年/季度/月累计等等,设定一个时间范围,进行聚合计算。

布尔值:布尔值最开始白茶看到一脸懵逼,这是啥?!后来才明白,哦,原来是函数表达式啊。比如:SUM('表'销售金额),这就是一个布尔值,也是计算表达式。

文本:文本函数。比如说:我有一组销售事实表,里面有一列是订单号:2019010112034001。虽然是纯数字的整数,但是这个订单这个名字能直接计算么?比如使用SUM进行聚合,那出来的结果会是一个无限大数值,也不符合我们的计算逻辑,我可能只是想知道近期的订单成交数量。这个时候就需要我们使用文本计数函数:COUNTROWS函数。再比如说,之前白茶写的优质客户判定法,我需要知道同一个客户购买过的商品名称,属于文本类型的聚合,但是不能这么叫,正确的名称是文本连接,使用的函数是:CONCATENATEX。

变体:变体这个概念可能比较朦胧,说的具体一点就是我们常用的VAR函数写法。将原本的变量,定义为常量,进行比较,同时这个常量是可以系统自动匹配的。是不是特别绕?举个例子:

代码语言:txt复制
优化帕累托累计求和 =
VAR HQ = [排名优化第4次]
RETURN
    CALCULATE ( [消费额], FILTER ( ALL ( '示例' ), [排名优化第4次] <= HQ ) )

这是白茶在RANKX最终话写的一段代码。将排名这个变量,转化为常量,在CALCULATE聚合中进行比较,自动匹配相关的大小按照顺序求和。

二进制:这个函数白茶接触的也不多。唯一有印象的就是排名依据的值,如果带小数的话,在系统运算过程转化为二进制会影响排名结果的。(如果有了解这个类型的小伙伴记得告诉白茶哦。)

这就是DAX函数可以执行的八种数据类型,这里提醒各位小伙伴一声,将数据导入PQ中的时候,一定要对数据的格式进行设置,这个很重要。

好啦,就说到这里。


小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

0 人点赞