DAX 概念

DAX 概念

授之以鱼不如授之以渔,有关DAX的概念性介绍我特意地拖到这个章节统一来讲,以免在前面穿插让大家混淆。DAX是Data Analysis Expression的缩写,即数据分析表达式,DAX公式同Excel一样,公式繁多可以编汇成一部字典,我们不可能一夜之间把这本字典背下来,在这种情况下教会大家原理和学会查字典的方法尤为重要。

如果掌握了原理和二十几个常用函数,完全可以应对80%以上的分析需求,对于剩下的20%我们可以按需去资料库里面搜索公式和方法。这就是本节和下一章节《DAX公式》的学习目标。我们现在把数据类型、运算符、命名规则、函数、上下文、查字典、输入,在这一个章节中一气呵成地说完。

1

数据类型

与PQ中的数据类型类似,PP也提供了数据的修改功能,并且还能细化分类和摘要,尤其在识别地理位置来绘制地图时非常的有用。当电脑未能自动识别类型时,将会默认为文本类型。

这个数据类型是运用DAX的基础,当出现问题时,第一时间去检查你的数据类型。

2

运算符

如下表,DAX的运算符与Excel是基本一样的,差别在于增添了,&&相当于AND函数,||相当于OR函数,在实践操作中运用逻辑运算符比函数要方便得多。

3

命名规则

在数据模型中,有几个关键词,表、列、和度量值,它们都有自己固定的命名规则。我们以咖啡数据为例子来看,记住这个规则非常重要,因为我们所有的公式都是按照它来完成的。

当度量值公式引用列名称时,一定要带上表的名称,而引用其他度量值时不需要带表名称。按照这个原则,你会很容易分辨度量值与列来避免混淆。(例外:当你在写计算列公式时可以省略表名称,因为极少的情况你会在计算列中引用度量值)

4

函数

度量值的工作原理是筛选和计算,用于计算的函数与Excel很相似,还有很多是共用的函数,用法完全一致。而主要的区别在于Excel可以引用单个单元格或行列,PP只能引用完整的数据表或数据列,这个时候筛选函数体现了它的价值,再配合聚合、时间智能、迭代等函数,你对如数据会如庖丁解牛一样,游刃有余。

我们在Chapter4中会按照下面的目录学完这二十几个最常用的函数,掌握了他们,再配合一些实战练习,你完全可以胜任市面上至少80%以上的分析需求。

5

认识“上下文”

这不是一个新的概念!我们前面介绍的计算列和度量值都是在上下文中完成的计算。“上下文”这个术语经常迷惑我们非IT类的学习者,然而在所有的DAX书籍中你都不可避免地读到它,所以我不得不把它提出来做一个知识性的归纳。你可以把“上下文”理解成“环境”,在设定的环境下执行计算。DAX中有两种上下文,筛选上下文和行上下文。

上面的表中,2016年11月份拿铁小杯的销售量为1096,这个销售量度量值在计算它时的环境就是筛选上下文,环境是什么,即'咖啡数表'中[日期]=2016年11月,[咖啡种类]=拿铁,[杯型]=小 的数据表。

对应的,行上下文引用一般出现在计算列,利润列中的19.8的计算环境是当前所在行,即他的行上下文。

一般情况,筛选上下文只出现在度量值,行上下文只出现在计算列,当然也有特殊情况,比如可以用迭代函数SUMX,EARLIER等在度量值中引用行上下文,这个在下一章节具体函数讲解中再来说明。

6

查字典

如果需要学习某一个特定函数怎么办?百度“DAX语法”,进入微软的官方中文DAX网页,在函数中你会找到每一个函数的解释以及小例子。不过由于是官方直译过来的解释,易学性较低,这也是我为什么要专写一章《DAX公式》的原因。

7

输入

注意DAX语句中的标点符号要完全用英文格式,这点与Excel一样,尤其在我们中英文穿插使用的时候经常会不小心的犯错。在输入方面,这里有个PowerBI相比Excel的小优点,DAX公式栏不仅沿用了Excel语法提示的功能,而且用颜色和光标凸显出公式、度量值、括号等,帮助我们更好地把公式写完整。

如果你是一个完美主义者,可通过空格和Shift+Enter在语句中留出间隔,使语句优美易读。下面就是一个标准书写的例子,可以看到DAX公式的函数之间是可以随意留白空格的。

重要的备注:至此,我们的对数据建模概念性的讲解告一段落。Chapter3的知识非常偏概念化,如果你有一些地方还是云里雾里并不是很明白,完全可以先放下,结合下一章节的实践操作回头来看概念就豁然开朗了。

感谢您关注公众号PowerBI大师

本文分享自微信公众号 - PowerBI大师(PowerBIMaster)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 「网安夜校」开课啦!多门网络安全课程开启限时优惠报名

    众志成城,共抗疫情。腾讯安全联合腾讯云大学、腾讯课堂启动「网安夜校」,为大家提供限时优惠的网络安全课程。欢迎网络安全从业者和信息安全专业学生报名参加学习,快速充电提升自我。

    腾讯安全
    安全培训腾讯云大学
  • Flink源码走读(一):Flink工程目录

    导语 | Flink已经成为未来流计算趋势,目前在很多大厂已经有了大规模的使用。最近在学习Flink源码,就想把自己学习的过程分享出来,希望能帮助到志同道合的朋友。开始阅读源码,说明读者已经对flink的基本概念有一些了解,这里就不再重复介绍Flink了。本文作为学习过程的第一章,首先对Flink的工程目录做一个解读,了解了工程下各个模块的作用,才能在遇到问题时准确定位到代码,进一步学习。

    2011aad
    大数据解决方案
  • Flink源码走读(二):Flink+Kafka实现端到端Exactly Once语义

    Flink通过Checkpoint机制实现了消息对状态影响的Exactly Once语义,即每条消息只会影响Flink内部状态有且只有一次。但无法保证输出到Sink中的数据不重复。以图一所示为例,Flink APP收到Source中的A消息,将其转化为B消息输出到Sink,APP在处理完A1后做了一次Checkpoint,假设APP在处理到A4时发生错误重启,APP将会重新从A2开始消费并处理数据,就会导致B2和B3重复输出到Sink中两次。

    2011aad
    大数据解决方案Kafka
  • kubernetes系列教程(十九)使用metric-server让HPA弹性伸缩愉快运行

    kubernetes监控指标大体可以分为两类:核心监控指标和自定义指标,核心监控指标是kubernetes内置稳定可靠监控指标,早期由heapster完成,现由metric-server实现;自定义指标用于实现核心指标的扩展,能够提供更丰富的指标支持,如应用状态指标,自定义指标需要通过Aggregator和k8s api集成,当前主流通过promethues实现。

    HappyLau谈云计算
    Kubernetes容器微服务微服务架构腾讯微服务平台 TFS
  • 三分钟入坑指北 🔜 Docsify + Serverless Framework 快速创建个人博客系统

    之前由于学摄影的关系,为了提高自己的审美,顺便锻炼下自己的英文能力,翻译了不少国外艺术类的 文章。最近一直想搭一个个人博客来存放这些内容,又懒得折腾建站,遂一直搁置。

    Aceyclee
    ServerlessHTML网站GitGitHub
  • NVM作为主存上对数据库管理系统的影响

    implications of non-volatile memory as primary storage for database management systems

    yzsDBA
    存储缓存数据库数据结构SQL
  • DevOps平台架构演进

    附最新架构图https://www.processon.com/view/5cbd897de4b0bab90962c435

    我思故我在
    DevOps 解决方案微服务架构架构设计
  • 【腾讯云AI小程序大赛】中山大学作品《小耳朵天使》

    ----------------------------------------------------------------------------------

    陈华山
    小程序 · 云开发小程序语音识别文字识别对话机器人
  • Kona JDK 在腾讯大数据领域内的实践与发展

    经常听人谈到 OpenJDK,那它到底是什么呢?相信大家都听说过 Java SE、ME、EE等规范, 通常意义上对 Open JDK 的定义指:Java SE规范的一个免费和开源参考实现。

    腾小云
    JDKJavaJVM大数据Oracle
  • 公告丨腾讯安全产品更名通知

    为了更好地为政企客户的安全保驾护航,腾讯安全即日起更新旗下身份安全、网络安全、终端安全、应用安全、数据安全、业务安全、安全管理、安全服务等八类安全产品的命名,致力于打造全栈安全产品“货架”,让客户选购安全产品/服务更加便捷,更快地找到合适的安全产品,从而对自身的安全建设“对症下药”。

    腾讯安全
    DDoS 防护应用安全 MS验证码(业务安全)应用安全(移动安全)漏洞扫描服务

扫码关注云+社区

领取腾讯云代金券