dax 筛选 包含某个字_Power BI 利器——DAX

 2023-09-08 阅读 13 评论 0

摘要:定义 数据分析表达式(DAX)是一种函数和运算符库,它和Excel的公式非常类似,可以在 Excel 中的 Power BI Desktop、Azure Analysis Services、SQL Server Analysis Services 和 Power Pivot 中使用。 它是Microsoft的SQL Server Analysis Services团队开发的ÿ

定义

数据分析表达式(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示例如下:

5a1de5009062205e5baca2fc610a0993.png

DAX 计算公式用于度量值、计算列(新增加一列)、计算表(通过DAX新生成的表)和行筛选器(对数据进行筛选)。

为什么

你可以创建显示有价值见解的报告,而无需使用任何 DAX 公式。但是,如果您需要分析产品类别和不同日期范围的增长百分比,该怎么办?或者,你需要计算与市场趋势相比的同比增长?DAX 公式也提供了这种能力和许多其他重要能力。学习如何创建有效的 DAX 公式将有助于您充分利用数据。

入门案例

59909adb84f2c7d245766aa80edc5a5f.png

为了更好地理解此公式,我们可以像处理其他公式一样对其进行分解:

此公式包含以下语法元素:

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也提供一些常见的函数帮助用户快速的计算分析数据。

例如:

d442ecb0fe3a173e9ed5682c960948b3.png

使用表或列作为函数的输入时,通常必须限定列名。 列的完全限定名称是表名,后面是方括号中的列名:例如,"美国销售" [Products]。所有对象名称都不区分大小写。以下特殊字符以下字符在对象的名称中无效:

1.,;':/ * |?&% $! + = () [] {} < >

操作符

在DAX表达式中,常用的操作符是:

  1. 文本使用双引号作为界定符
  2. 等号是“=”号,不等号是:<>
  3. 赋值使用“=”号
  4. 布尔值使用 TRUE()和FALSE()函数
  5. 空值使用BLANK()函数表示
  6. 集合使用大括号{}表示,例如,包含三个元素的集合: {1,2,3}
  7. 字符的连接符号是:&
  8. 逻辑运算符号是:逻辑与是 &&,逻辑或是: ||
665d52ebd84e965d938f35797b00fafd.png

函数

DAX 包括一些函数,可用于使用日期和时间执行计算、创建条件值、处理字符串、基于关系执行查找以及循环访问表以执行递归计算。 如果熟悉 Excel 公式,其中的许多函数会显得非常相似。

函数的分类如下:

  1. 日期和时间函数(Date and time functions):这些函数可帮助你根据日期和时间创建计算。 DAX 中的许多函数与 Excel 日期和时间函数类似。 DAX 函数使用日期时间数据类型,并且可以采用列中的值作为参数。例如:将文本格式的日期转换为日期时间格式的日期,返回跨两个日期之间的间隔边界的计数。
  2. 时间关系函数(Time-intelligence functions):基于时间段(包括日、月、季度和年)对数据进行计算操作。例如常见的YTD,MTD,QTD,同时也会提供一些针对日期上下文的操作,当前日期的前一天,后一天,最后一天等
  3. 筛选器函数(Filter functions):筛选函数允许您操作数据上下文来创建动态计算。
  4. 信息函数( Information functions):输入的参数(单元格、数据行)是否与预期的类型匹配。例如 ISBLANK是否为空,ISERROR检查是否错误
  5. 逻辑函数(Logical functions):逻辑函数对表达式执行操作,以返回有关表达式中的值的信息。 例如,TRUE 函数使您可以了解您正在计算的表达式是否返回 TRUE 值。
  6. 统计函数(Statistical functions):提供了许多用于创建聚合(例如求和、计数和平均值)的函数,例如SUM,MIN,MAX等
  7. 文本函数(Text functions):提供了一系列针对字符窜处理的方法,例如字符窜截取,大小写转换,格式化等
  8. 数学和三角函数:提供一些的数学函数方法,例如:求绝对值,余弦,最大公约数等
  9. Parent 和 Child 函数:DAX 提供了五个函数,以帮助用户管理在其模型中显示为父子层次结构的数据
71f337b1c1934eb634c73ffd892ba914.png

上下文

“上下文”这个术语经常迷惑我们非IT类的学习者。你可以把“上下文”理解成“环境”,在设定的环境下执行计算。DAX 中有两种上下文类型;行上下文和筛选上下文。

行上下文:行上下文可以理解为当前行内容。例如下图中要求每个产品的利润,可以创建一个计算列Profit利用下面公式获得。

9dc43f4acb8900110ec832614e79bc5a.png
Profit = 'Product'[Price] - 'Product'[Cost]

筛选器上下文:是指将原始数据按照一定规则进行筛选,然后将提取出来的结果再作为环境变量带入到函数中使用。通过设定筛选上下文,可以灵活的改变函数的运算范围,实现数据分类分析处理的目的。例如对上面表单的数据,可以将Total_Sales改写为下面形式来只计算Country是Australia的销售额。

0391d2e31e4fda37d6767cad699c0704.png
a4c466ead1983ea47e9fa4f7f4e1535f.png

计算Australia销售总额的Total_Sales计算列中调用了一个FILTER函数,目的是生成一个只包含Country是Australia相关数据的子表单。SalesInfo[Country] = "Australia"即是筛选上下文条件,将函数SUMX的计算范围从原始数据中的所有Country变成只针对Australia进行计算。

变量

您可以使用VAR在表达式中创建变量。 VAR 是一个关键字,用来将表达式的结果存储为命名变量。 然后,可以将该变量作为参数传递给其他度量值表达式。 例如:

5fc52caefe513c73179e39c431f8b958.png

在这个示例中, TotalQty 作为命名变量传递给其他表达式。 变量可以是任何标量数据类型(包括表)。

数据类型

0fb20ef0eb55aaacdc1a5393c44956af.png

DAX 查询

DAX可以在 SQL Server Management Studio (SSMS)和开源工具(如 DAX Studio (daxstudio.org))中创建和运行 DAX 查询。 不同于 DAX 计算公式(只能在表格数据模型中创建),也可以针对 Analysis Services 多维模型运行 DAX 查询。 与多维数据表达式(MDX)查询相比,DAX 查询通常更易于编写,而且效率更高。

DAX 查询是一个语句,类似于 T-sql 中的 SELECT 语句。 最基本类型的 DAX 查询是一个计算语句。 例如:

6f861fb9f69288b6cf5385f7b4018755.png
8dc3f6320fca087b600bbb4309198f24.png

参考资料

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/19486.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息