DAX从入门到精通 1-1-1 DAX简介 数据模型介绍 关系的方向介绍

章节1 什么是DAX

DAX是一种应用于SSAS,Power Pivot的编程语言,创建与2010年,第一个版本发布于excel2010的PowerPivot中。随着时间的的发展,DAX在excel中逐步发展,开始是在Excel中建模,然后是在BI领域使用DAX在SSAS中建立模型。

DAX是一种简单的语言,它和其他的编程语言不同,熟悉适应它需要一些时间。按照作者教过的数千学生得出的经验,学习DAX通常遵循以下的流程:你可以在学习几个小时后,就开始上手使用它,但是当开始需要了解一些高级的概念,例如上下文,迭代,和上下文转换时候,事情开始变得复杂起来,这时候别放弃!你需要一些耐心,一旦你的大脑开始消化这些概念,DAX语言,确实是一门简单的语言。你需要时间来了解学习它。

第一个章节会以一个简单的概括,来介绍什么是数据模型,表以及关系。在这里,建议所有的读者,无论您处于什么水平阶段,都阅读此部分,以熟悉一些这贯穿本书使用的概念,例如表,模型,不同的关系。

接下来的部分,对于有某些其他编程语言的读者——例如excel,SQL,MDX,我们提供一些建议。不同的章节针对不同的语言用户,我们对比了其和DAX的语言的区别,有助于您快速熟悉DAX。如果 您是Excel用户,但是觉的MDX语言非常难懂,这是完全正常的。这种情况,就直接跳过这个部分就可以了,因为这部分内容对于您而言几乎是毫无意义。所以直接到下一个章节,从那里,开始DAX的学习。

数据模型介绍

DAX语言是针对数据模型中的业务计算,特别设计的语言。你可能已经知道什么是数据模型,但是如果您对它还不是非常熟悉,非常建议您花一些时间,来了解什么是数据模型、关系,给后面的DAX语言建立一个良好的基础。

数据模型是一系列的表,它们之间通过关系连接起来。

我们知道,表是这样构成的:一系列包含数据的行,每行又分为许多列,每个列有各自的数据类型,并且包含各自代表的含义。通常我们称一行为一个记录。对于组织数据,表是一种十分方便的工具。一个数据表,其本身就是一个数据模型,也就是模型的最简单的一种形式。因此,当你在Excel工作簿中些名称和数字的时候,实际上你就是在建数据模型。

如果数据模型包含许多表,那么它们之间很可能存在关系。一个关系,连接了两张表。当两张表通过关系关联起来的时候,我们称他们关联了。看下图,关系被表示为连接两个表之间的线。


我们将学习关系的一些重要知识:

1.处于关系中的两个表,它们的角色是不相同的。一个是“一方”,一个是“多方”,看图中表Product和Product Subcategory。一个子类目包含了多个产品,而一个产品只有一个子类目。因此,Product Subcategory是关系中的“一方”,而Product则是“多方”。

2.用来创建关系的列,称为关系的键,在关系“一方”的列,需要是每行都是唯一值,不能有重复。“多方”的列,允许相同的值出现在多行。当一列都是唯一值的时候,我们称其为这个表的键。通常,表都有一个表示为键的列。

3.关系可以形成链条,每个product有一个subcategory,每个subcategory有一个categroy。那么,每个product就有一个category。要获得product对应的category,需要跨过两个关系组成的链条。图中展示了一个例子,由三个关系组成的链条,从Sales表开始,一直延伸到Product Category。

4.每个关系中,可能有一个或者两个箭头,图中可以看到Sales表和Product表中的关系,有两个箭头,而其他的关系只有一个箭头。箭头的方向,表示自动筛选的方向。这个功能,我们在后面的章节会深入的探讨,正确掌握筛选的方向,是一个重要的学习点。

5.在表格模型里,数据引擎支持的关系只能建立在一个列上,多列形成的关系是不支持的。

关系的方向介绍

上篇我们有提到,关系可以有一个或者两个筛选方向。筛选总是从关系的“一方”往“多方”筛选,如果关系是双向的,也就是有两个箭头,那么,筛选方向方向也可以是从“多方”往“一方”。

通过案例,您可以更好的理解这个筛选的问题。如果你按之前的数据模型,建立一个透视表,行是years, Sum of SalesAmount 和 Count of ProductName在值的位置,这样你会得到下面这个结果。


行标签是years,它来自于Date表。Date表在与Sales表的关系中,处于“一方”。所以,当你把 Sum of SalesAmount添加到透视表中,计算引擎会对sales表过滤年份。sales表和product表的关系是双向的。当你把count of product names 放到透视表,你就得到结果,即每年的 number of products。换一种说法就是,对于年份的过滤,通过关系链条,传导到了product表。

如果你调整下透视表,把color放导行,添加Count of FullDateLabel到值的位置,这个结果就有些难以理解。如下图


过滤条件是color列,它是product表其中一列,因为product表在与sales表关系中,处于“一方”,所以

Sum of SalesAmount可以正常筛选。Count of ProductNames也明显是正确的,因为它就是来自与product表。错误的是 Count of FullDateLabel。事实上,它在所有行返回的都是相同的值——即Date表的总行数。

过滤条件没有到达Date表的原因是,date表和sales表的关系是单项的,从date表指向sales表。因此,即使sales表有活动的过滤条件,但是这个条件无法传导下去到达date表,因为他们被表之间的关系阻止了。如果你改变date表和sales表的关系,更新为双向的。那么结果会是如下的:

如你所见,结果不同了,正确显示了至少有个特定颜色产品销售的天数。第一眼看去,你会觉的所有的关系似乎都应该定义为双向的,这样就可以让筛选条件自由传导而得到正确的结果。但是随着本书的学习,在设计数据模型的时候,这个方法不总是完全正确的。事实上,这要取决于你要解决的工作场景,以此来选择表间关系的设置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容