2、运算符与数据类型

  从本篇文章开始,我们将正式开始学习DAX的相关知识。本篇文章将介绍DAX的运算符、数据类型以及数据类型间的转换与计算方面的内容。


运算符

运算符含义示例
( )改变计算优先级和分组(1+2)*3
+相加1+2
相减2-1
*相乘1*2
/相除8/2
=等于1=2
<>不等于1<>2
>大于2>1
>=大于或等于200 >= 100
<小于5 < 0
<=小于或等于5 <= 100
==严格相等0 == BLANK()
&文本连接符“Value is” & “A”
&&逻辑"与"[CountryRegion] = “USA” && [Quantity]>0
||逻辑"或"[CountryRegion] = “USA” || [Quantity]>0
NOT逻辑"非"NOT [Quantity] > 2
IN元素包含在列表中[CountryRegion] IN {“USA”, “Canada”}
NOT IN元素不包含在列表中NOT [CountryRegion] IN {“USA”, “Canada”}

数据类型

数据类型含义
Integer整数
Float十进制数
String文本
TRUE/FALSE布尔值
Currency货币
DateTime日期
Binary二进制
Blank空值
Variant变体

  上述列出的数据类型中,根据含义应该都比较好理解,所以我就只介绍一下其中的变体类型。变体类型指的是一个表达式的结果有可能存在两种或以上的数据类型,当我们使用了IF函数且各个结果分支所返回的值的数据类型都不一致时,该表达式的结果的数据类型即为变体。

  我们常用的数据类型可以概括为:数值、文本与空值,其中数值既包括了整数与小数,也包括了布尔值与日期,因为布尔值与日期本质上是以整数的形式存储在DAX引擎中的。一般来说,我们无需重点关注数据类型,因为数据在存储的时候我们就已经设置好了各个数据的数据类型了,而且当需要手动转换成指定的数据类型时,IDE也会自动给出数据类型的名称提示,所以我们不需要背下各种数据类型的名称,大概了解下即可。

数据类型转换

  • 自动转换规则:

    • 数据类型的自动转换是根据运算符来判断的,运算符会自动把参与运算的值的数据类型转换成合适的类型,转换失败则报错

    • 将非零值用作布尔值,则自动转换成TRUE

    • 将零值用作布尔值,则自动转换成FALSE

    • 将TRUE用做整数,则自动转换成1

    • 将FALSE用作整数,则自动转换成0

    • 空值遇到相加、相减与逻辑运算符时,会自动转换成零或布尔值

    • 日期可直接当作整数进行处理,1899年12月30日对应零,每增加一天则整数加一,但需注意1900年的闰年错误

    • 日期遇到相加、相减运算符时,结果仍为日期类型,遇到相乘、相除运算符时,结果为数值类型

    • 严格相等运算符不会自动进行数据类型转换

  • 手动转换:

    • 使用CONVERT函数,例如:将整数:123 转换为字符串:CONVERT(123,STRING)
    • 利用自动转换规则,例如:将整数:123 转换为字符串:123&"";将字符串:“123” 转换为整数:“123”*1 或 “123”+0
  • 一些参考例子:

表达式结果
“1” + “2”3
1 & 3333“13333”
IF(-5,“TRUE”,“FALSE”)TRUE
IF( 5,“TRUE”,“FALSE”)TRUE
IF( 0,“TRUE”,“FALSE”)FALSE
TRUE( ) *11
FALSE( ) *10
BLANK ( )空值
BLANK ( ) = 0True
BLANK ( ) == 0False
BLANK ( ) == BLANK ( )True
BLANK ( ) && TRUEFalse
BLANK ( ) | | TRUETrue
BLANK ( ) + 00
BLANK ( ) – 4-4
4 / BLANK ( )无穷大
BLANK ( ) * 4空值
BLANK ( ) / 4空值
INT ( BLANK ( ) )空值

  数据类型转换是最基础的内容,但其作用不容轻视。须知万丈高楼平地起,基础不牢,地动山摇。因此我建议大家多读几遍本文中关于数据类型转换的内容,并且最好亲自动手去实践一下,在掌握好数据类型转换之后,再去学习后续的内容!


  DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值