皆非的万事屋 - BI
type: channel
link: http://makeyourchoice.cn/tag/BI/
items: 【DAX】Data Analysis expressions learning notes (1)

【DAX】Data Analysis expressions learning notes (1)
type: item
date: 2023-03-30T12:47:00+00:00
description: 该系列记录博主学习DAX的总结 第一章看完“DAX是什么之后”给我的感觉还是有点生的，DAX (Data Analysis eXpressions) 主要是 Power BI 中使用的编程语言，首先确定 DAX 是一种编程语言，放在更广的一层概念，DAX 属于DSL的一种。 举些例子，Mysql软件使用的编程语言是SQL（结构化查询语言），Power BI 软件使用的则是DAX DAX是一种函数式编程语言，没有类似 SQL 一样声明特定的操作（SELECT， FROM ， GROUP， WHERE），这些在 DAX 中都变成了一个一个的函数（说着说表达式），SQL重声明弱计算流程，DAX弱声明重计算流程；也就是说作为SQL的使用你可能大部分不需要了解SQL的逻辑执行计划，而 DAX 就如同不断地在编写执行计划一样，在计算中就查询出了相应的结果。 第一章并没有着重讲 DAX 的内容，而是在对比 EXCEL、SQL、MDX，DAX操作的都是表和列，DAX从执行计划方面和SQL类似，从公式写法上和 EXCEL类似。第一章着重强调了好几次重要的概念：计值上下文、CACULATE、迭代、上下文转换等，这些会在第4、5章着重介绍。 第一章还简单的介绍了“数据模型”，在DAX中数据模型可以是一张表，或是几张表并建立了相应的关系 这里的关系可以理解为我们一开始学习SQL中ER图的那个，不同实体之间有 1:1，1:n和n:m三种关系，在数据模型中也是，不过具体说明了表之间的1对多的关系。（1:1和多对多为弱关系，不提倡使用，具体还没看为什么） 例如，类别表和产品表是 1:n，那么称类别表为1端，产品表为多端，而基于模型在DAX的公式中为自动帮你建立关联关系：默认为 多端 LEFT OUTER JOIN 一端。 同时在关系上还存在着方向，而相应的筛选可以沿着方向进行传递，从而在报表中展示出不同的结果。（我看第一章时就这个地方不是太理解，筛选是什么，为什么能传递，为什么要传递） 然后文章最后一部分是写给 MDX 开发者的话术，没有怎么仔细看。 总体来说第一章介绍的内容还是比较少的，从第二章开始会更详细的介绍DAX！