数据分析表达式(DAX)是一种函数和运算符库,它和Excel的公式非常类似,可以在 Excel 中的 Power BI Desktop、Azure Analysis Services、SQL Server Analysis Services 和 Power Pivot 中使用。
它是Microsoft的SQL Server Analysis Services团队开发的,存在于2009年发布了Excel 2010的PowerPivot。随着时间的推移,DAX在Excel社区中流行起来,它使用DAX在Excel中创建Power Pivot数据模型,以及在商业智能(BI)社区中使用DAX来构建带有SSAS的模型。
DAX示例如下:
DAX 计算公式用于度量值、计算列(新增加一列)、计算表(通过DAX新生成的表)和行筛选器(对数据进行筛选)。
你可以创建显示有价值见解的报告,而无需使用任何 DAX 公式。但是,如果您需要分析产品类别和不同日期范围的增长百分比,该怎么办?或者,你需要计算与市场趋势相比的同比增长?DAX 公式也提供了这种能力和许多其他重要能力。学习如何创建有效的 DAX 公式将有助于您充分利用数据。
为了更好地理解此公式,我们可以像处理其他公式一样对其进行分解:
此公式包含以下语法元素:
A. 度量值名称 Store Sales。
B. 等号运算符 ( = ) 表示公式的开头。
C. CALCULATE 函数会在根据指定筛选器所修改的上下文中,作为参数来计算表达式。
D. 括号 () 会括住包含一个或多个参数的表达式。
E. 同一表中作为表达式的 [Total Sales] 度量值。 Total Sales 度量值的公式为:=SUM(Sales[SalesAmount])。
F. 逗号 ( , ) 会分隔第一个表达式参数和筛选参数。
G. 完全限定的引用列为 Channel[ChannelName] 。 这是我们的行上下文。 此列中的每行各指定一个通道:Store、Online 等。
H. 将特定值 Store 作为筛选器。 这是我们的筛选上下文。
此公式可确保仅针对以“Store”值为筛选器的 Channel[ChannelName] 列中的行,计算 Total Sales 度量值所定义的销售额值。
DAX语言主要包含三部分:语法、函数和上下文。当然,DAX 还有其他重要的概念,下面将介绍几个比较重要的DAX的概念。
语法
DAX 公式始终以等号(=)开头。在等号后,可以提供常量或者表达式。表达式可以使用标量运算符的表达式(+,-, *、/、> =,..., & & ...),在表达式里面可以引用列或表,同时DAX也提供一些常见的函数帮助用户快速的计算分析数据。
例如:
使用表或列作为函数的输入时,通常必须限定列名。 列的完全限定名称是表名,后面是方括号中的列名:例如,"美国销售" [Products]。所有对象名称都不区分大小写。以下特殊字符以下字符在对象的名称中无效:
1.,;':/ * |?&% $! + = () [] {} < >
操作符
在DAX表达式中,常用的操作符是:
函数
DAX 包括一些函数,可用于使用日期和时间执行计算、创建条件值、处理字符串、基于关系执行查找以及循环访问表以执行递归计算。 如果熟悉 Excel 公式,其中的许多函数会显得非常相似。
函数的分类如下:
上下文
“上下文”这个术语经常迷惑我们非IT类的学习者。你可以把“上下文”理解成“环境”,在设定的环境下执行计算。DAX 中有两种上下文类型;行上下文和筛选上下文。
行上下文:行上下文可以理解为当前行内容。例如下图中要求每个产品的利润,可以创建一个计算列Profit利用下面公式获得。
Profit = 'Product'[Price] - 'Product'[Cost]
筛选器上下文:是指将原始数据按照一定规则进行筛选,然后将提取出来的结果再作为环境变量带入到函数中使用。通过设定筛选上下文,可以灵活的改变函数的运算范围,实现数据分类分析处理的目的。例如对上面表单的数据,可以将Total_Sales改写为下面形式来只计算Country是Australia的销售额。
计算Australia销售总额的Total_Sales计算列中调用了一个FILTER函数,目的是生成一个只包含Country是Australia相关数据的子表单。SalesInfo[Country] = "Australia"即是筛选上下文条件,将函数SUMX的计算范围从原始数据中的所有Country变成只针对Australia进行计算。
变量
您可以使用VAR在表达式中创建变量。 VAR 是一个关键字,用来将表达式的结果存储为命名变量。 然后,可以将该变量作为参数传递给其他度量值表达式。 例如:
在这个示例中, TotalQty 作为命名变量传递给其他表达式。 变量可以是任何标量数据类型(包括表)。
数据类型
DAX可以在 SQL Server Management Studio (SSMS)和开源工具(如 DAX Studio (daxstudio.org))中创建和运行 DAX 查询。 不同于 DAX 计算公式(只能在表格数据模型中创建),也可以针对 Analysis Services 多维模型运行 DAX 查询。 与多维数据表达式(MDX)查询相比,DAX 查询通常更易于编写,而且效率更高。
DAX 查询是一个语句,类似于 T-sql 中的 SELECT 语句。 最基本类型的 DAX 查询是一个计算语句。 例如:
https://docs.microsoft.com/zh-cn/dax/dax-syntax-reference#dax-operators-and-constants
https://www.jianshu.com/p/483dadc83880
https://blog.csdn.net/jessica_seiya/article/details/90904341
https://cloud.tencent.com/developer/article/1481633
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态