DAX从入门到精通 2-1-1 DAX的数据类型

第二章 介绍DAX

在上一章简单快速的介绍了DAX后,现在开始稍微深入的介绍下DAX语言。在这个章节里面,我们会学习DAX的语法,计算列和度量值的区别,这两者在DAX中使用频率非常高。
因为这个章节是作为一个大概介绍的章节,许多函数不会深入的讨论。在本书后面的章节,我们会进行详细深入的讨论。现在这阶段,只需要大概了解一些函数以及熟悉DAX语法即可。

了解DAX中的计算

要写出复杂的函数,就要从学习基础的DAX知识开始。包括语法,各种数据类型,运算符号,如何引用列和表。接下来会一一介绍它们。
你使用DAX对表中的列进行计算。你可以做聚合,计算,查找数值等,总而言之,所有的计算都涉及表和列的概念。因此,第一个需要学习的就是如何引用表中的列。
写法是先写表名,然后括号,接着列的名称,然后反括号

'Sales'[Quantity]

当表名不以数字开头的时候,不包含空格,不是使用系统保留的字符(例如date,sum)你可以忽略引号

划重点:
不在表名中使用空格是非常好的习惯。这样,你就避免了在公式中使用引号,也使得代码更适合阅读。牢记,表名会出现在你模型中的所有地方,无论是数据表,透视表,客户端工具例如Power View。因此,如果要在表名中包含空格,那么你就需要在所有使用到表的地方使用引号。

如果你引用的列或者度量值于你定义的函数是在同一个表,那么书写的时候,可以忽略表名。因此, 当你在sales表中写计算列或者度量值的时候,[Quantity]这样的写法是正确的。但是,即使这样写是正确的,但是当你选择列的时候(非书写时)用户界面会建议你使用表的名称作为前缀。这里,我们非常建议你只用表名前缀。这样有助于提高代码的可阅读性。

DAX的数据类型

DAX可以对多种的数据类型进行计算,一共有7种。如下列表,列出了DAX的名称以及他们通常的名称。例如:布尔值,在DAX中表现为TRUE/FALSE。

  • 整型
  • 小数
  • 货币类型
  • 日期
  • 布尔值
  • 文本
  • 二进制的对象

DAX拥有强大的功能处理不同类型的数据,所以你不必担心数据类型的问题。当书写一个DAX表达式的时候,结果的类型取决于表达式中使用的数据类型。对于这点,你需要特别注意,已避免返回的是预期之外的情况,如果这样,就必须要调整一下表达式使用的字段。
例如:一个求和计算中,一个表达式是日期类型,那么结果也是日期类型。同样,如果是整型,那么返回的也是整型。也称为计算决定数据类型。


image.png

另外,DAX会根据计算符自动转换文本和数字。例如,如果使用&连接,那么结果就是返回文本。如下公式

= 5 & 4

返回了“54”的字符串。对于这个公式

= "5" + "4"

这个公式返回的是数字9
计算的结果取决于计算的符号,而不是原始的计算列。即使这功能看起来很方便,也会在自动转换的时候出现一些错误。作者的建议是,避免使用系统的自动转换,如果需要进行一些转换,最好是人为的控制它,申明转换的内容。例如上面的转换,可以按如下的写法:

= VALUE ( "5" ) + VALUE ( "4" )

DAX的数据类型对于使用Excel和其他语言的人来说,应该是熟悉的。但是还是有必要简单介绍下DAX的数据类型。

  • 整型:DAX只有一种整型的类型,它可以存储64位的数值,所有整型的计算都是使用64位的值。
  • 浮点值:小数值,以双精度方式存储。对于TSQL的类型是Float。
  • 货币:以固定的小数位存储。包含4位小数,注意,所有于货币类型相关的计算,都会忽略超过4位的精度。如果需要更高精度的计算,就要把值转换位小数的类型。
    默认的货币类型包含了货币符号,你可以把货币类型应用到数字和小数类型的数值,另外也可以对货币类型的数值使用格式定义,从而不显示货币符号。
  • 日期类型:DAX存储日期格式使用DateTime格式。格式内部实际是使用浮点数字存储,日期的初始值是1899-12-30,小数部分代表了天,小时,分钟,秒。因此下面的表达式计算的是当前日期+1天。
= NOW () + 1

如果你仅需要日期部分,那么记得使用TRUNC函数来截除小数部分。

  • 布尔值:用来表达逻辑条件,例如使用如下表达式的一个计算列,值就是布尔值
    可以把布尔值是为数值,ture表示1,false表示0。这在排序的时候会比较有用,因为true>false
  • 字符类型:DAX中的字符都是以Unicode方式存储,每个字符用16bits存储,不区分大小书写,例如
    “Power Pivot”和“POWER PIVOT”是相同的。
  • BLOB:在数据模型中用来存储图片,一般是供给给客户端使用,例如Power View等来显示图片
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容