DAX语言Word下载.docx

上传人:b****7 文档编号:21956528 上传时间:2023-02-01 格式:DOCX 页数:12 大小:218.51KB
下载 相关 举报
DAX语言Word下载.docx_第1页
第1页 / 共12页
DAX语言Word下载.docx_第2页
第2页 / 共12页
DAX语言Word下载.docx_第3页
第3页 / 共12页
DAX语言Word下载.docx_第4页
第4页 / 共12页
DAX语言Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

DAX语言Word下载.docx

《DAX语言Word下载.docx》由会员分享,可在线阅读,更多相关《DAX语言Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

DAX语言Word下载.docx

输入表名称开始键入表名称。

公式记忆式键入功能会提供一个下拉列表,其中包含以这些字母开头的有效名称。

输入列名称键入括号,然后从当前表的列清单中选择列。

对于其他表中的列,首先键入表名称的前几个字母,然后从记忆式键入下拉列表中选择该列。

6DAX计算类型

●计算列

●计算度量值

6.1DAX表名和列名语法

创建新的列或度量值,表名的一般格式:

'

TableName'

[ColumnName]

如果表名中有空格,那么表名周围的单引号则是必需的。

如果表名没有空格,则可以省略单引号,语法如下:

TableName[ColumnName]

也可以完全省略表名而只使用列名,但这对于清晰的函数来说不是一个好的做法。

列名称必须始终包含方括号。

最佳做法是执行以下操作:

●表名中无空格;

●始终在公式中包含表名(不要将其省略掉,即使DAX允许)。

6.2创建计算列

当需要划分或筛选值,或者要对表中的每一行进行计算时,计算列非常有用。

计算列所需元素:

●新的列名

●至少一个函数或表达式

如果在计算列公式中引用一个表或列,则无需再表中指定行——PowerBI会为每个计算的当前行计算列。

6.3创建计算度量值

当计算百分比或比率,或者需要复杂的聚合时,使用计算度量值。

计算度量值的必需元素与计算列的必需元素是相同的:

●新的度量值名称

7DAX函数

DAX拥有许多可用于成形、组织或分析数据的函数。

●聚合函数

●计数函数

●逻辑函数

●信息函数

●文本函数

●日期函数

●…

7.1聚合函数

DAX提供多种聚合函数,包括以下常用函数:

●SUM

●AVERAGE

●MIN

●MAX

●SUMX(以及其他X函数)

这些函数仅适用于数字列,并通常一次只能聚合一列。

但是以X结尾的特殊聚合函数(例如SUMX则可同时处理多列。

这些函数循环访问表,并为每一行计算表达式)。

(1)求销售的咖啡杯数:

[销售量]=Sum(‘销售数量表’[数量])

(2)求数量列的平均值:

[平均销售量]=Average(‘销售数据表’[销售量])

(3)将每一行数据视为一位顾客购买的订单,求订单中最大的杯数:

[最大杯数]=Max(‘销售数据表’[数量])

7.2计数函数

DAX中经常使用的计数函数包括:

●COUNT

●COUNTA:

计算列中单元格不为空的数目

●COUNTBLANK:

计算列中单元格为空白的数量

●COUNTROWS:

求表中行的个数

●DISTINCTCOUNT:

对列中不重复值计数

这些函数用来计数不同的元素,如非重复值、非空值和表行。

(1)数据表中的每一行都是一笔订单,求行的个数就是求订单数量

[订单数量]=Countrows(‘销售数据表’)

(2)创建一个门店数量的度量值:

[门店数量]=Distinctcount(‘销售数据表’[门店])

7.3逻辑函数

DAX的逻辑函数包括:

●AND

●OR

●NOT

●IF

●IFERROR

这些特殊函数还可以用运算符表达。

例如,在DAX公式中AND可以输入为&

&

如果公式中存在两个以上条件,则可以使用运算符(如&

),但在其他情况最好使用函数名本身(如AND),以增强DAX代码可读性。

7.4信息函数

DAX中的信息函数包括:

●ISBLANK

●ISNUMBER

●ISTEXT

●ISNONTEXT

●ISERROR

尽管这些函数在具体情况下有用,但提前知道列的数据类型,而不依赖这些函数来提供数据类型仍很有价值。

DAX使用MAX和MIN函数来聚合和比较值。

7.5文本函数

DAX中的文本函数包括:

●CONCATENTATE

●REPLACE

●SEARCH

●UPPER

●FIXED

这些文本函数与同名的Excel函数工作方式类似。

7.6日期函数

DAX包含以下日期函数:

●DATE

●HOUR

●NOW

●EOMONTH

●WEEKDAY

尽管这些函数对于从日期值中计算和提取信息很有用,但它们并不适用于使用日期表的时间智能。

7.7Calculate函数

计算由指定筛选器修改的上下文中的表达式。

语法:

CALCULATE(<

expression>

<

filter1>

filter2>

…)

参数:

术语

定义

expression

要进行计算的表达式

filter1,filter2,…

(可选)定义筛选器的布尔表达式或表达式的逗号分隔的列表

Eg:

Calculate销售量=calculate([销售量],’产品表’[咖啡种类]=”拿铁”,’产品表’[杯型]=”中”)

7.8All函数

返回表中的所有行或返回列中的所有值,同时忽略可能已应用的任何筛选器。

可用于清楚筛选器并对表中的所有行创建计算。

ALL({<

table>

|<

column>

[,<

[,…]]]})

All函数可以引用表或者列。

table

要清除其筛选器的表

column

要清除其筛选器的列

All函数的参数必须或者是对某一基表的引用,或者是对某一基列的引用,不能将表的表达式或列的表达式与All函数一起使用。

All销售量=calculate([销售量],all(‘销售数据表’))

注意

引用表比较简单,即清除该表的所有筛选限定条件,当使用All函数引用列时,需注意:

(1)必须保证All函数所清除的筛选列和初始筛选条件中的筛选列一致(同一张表的同一列)。

(2)All函数所有引用列参数必须来自同一张表,否则是无效的。

7.9Allexcept和Allselected函数

7.9.1Allexcept函数

删除表中除已应用于指定列的筛选器之外的所有上下文筛选器。

ALLEXCEPT(<

[,<

[,…]])

Allexcept函数的语法组成分为两部分,第一部分是表,第二部分是想要排除的列,与All函数一样,它可以引用多列,并且返回的结果是表,所以在度量值中不能够单独使用,需要配合像Calculate和Countrows这些可以引用表的函数使用。

Eg:

Allexcept=calculate([销售量],allexcpt(‘产品表’,’产品表’[杯型]))

7.9.2Allselected函数

对表中所显示的筛选条件执行清除筛选,而其他筛选条件皆保留。

ALLSELECTED([<

tableName>

columnName>

])

Allselected(表或列),它返回的结果也是表。

7.10Filter函数:

高级过滤器

筛选器函数,返回结果是一张表,无法单独使用,经常与Calculate函数搭配,也可以直接与某些聚合函数搭配使用,比如Countrows(Filter(表,筛选条件))公式来计算表的行数。

FILTER(‘表’,筛选条件)

例子:

求拿铁中杯咖啡的销售量

Filter销售量=calculate([销售量],

filter(‘产品表’,’产品表’[咖啡种类]=”拿铁”&

’产品表’[杯型]=”中”))

等同于:

注意:

当筛选条件出现如下类型,Calculate函数中的直接筛选条件不可用,需要用Filter函数:

●[列]=[度量值]

●[列]=公式

●[列]=[列]

●[度量值]=[度量值]

●[度量值]=公式

●[度量值]=固定值

如:

求每个季度拿铁咖啡的销售量超过200杯的门店的销售量。

Filter销售量=calculate([销售量],filter(‘门店信息表’,[销售量]>

200))

7.11Divide函数:

安全除法

Divide(分子,分母,可选项)

可选项如果不选则默认返回空值,也可以特别设定,比如将此可选项设为1,则当分母为0时返回1。

作用:

可以在分母为0时,防止出现报错信息。

①Divide([数量],0),得到的结果为空值。

②年比年增长率=([销售量]-calculate([销售量],previousyear(‘日历表’[日期])))

/

calculate([销售量],previousyear(‘日历表’[日期]))

③年比年增长率divide=divide(([销售量]-calculate([销售量],previousyear(‘日历表’[日期])))

calculate([销售量],previousyear(‘日历表’[日期]))

7.12If/Switch函数

①If年龄分层=if([年龄]>

20&

[年龄]<

=30,”21-30”,

if([年龄]>

30&

=40,”31-40”,

if([年龄]>

40&

=50,”41-50”,

if([年龄]>

50,”50以上”))))

If函数当有特别多条件,会“外套”套“外套”,使用Switch函数能解决这个问题。

新建一个度量值,用Switch+True函数的方法来定义不同条件的返回值,明显会使表达式更清晰。

②Switch年龄分组=switch(true,

[年龄]>

[年龄]>

[年龄]>

[年龄]>

50,”50以上”)

Switch+True函数适用于逻辑判断,如果逻辑判断是以一个准确值作为依据,那么Switch函数还可以直接引用表达式,如下:

Switch日历=switch(‘日历表’[月],

1,”一月”,2,”二月”,3,”三月”,4,”四月”,5,”五月”,6,”六月”,

7,”七月”,8,”八月”,9,”九月”,10,”十月”,11,”十一月”,12,”十二月”)

7.13关系函数:

Related、Relatedtable和Lookupvalue

Lookup表与数据表

Related函数专为关系管道建立,所以使用时不用考虑上下文在关系模型中转换的问题。

数据表引用Loolup表(多对一)

产品名称=related(‘产品表’[产品名称])

可嵌入其他公式:

收入=[数量]*related(‘产品表’[价格])

一对多,使用Relatedtable:

在产品表中添加一个“订单数量”列,求每种产品对应的订单数量。

订单数量=countrows(relatedtable(‘销售数据表’))

多条件查询,Lookupvalue

Looupvalue(‘产品表’[价格],目标输出结果列

’产品表’[咖啡种类],’销售数据表’[咖啡种类],条件1

’产品表’[杯型],’销售数据表’[杯型])条件2

Lookupvalue函数主要包括3各部分:

第一、输入目标输出结果的列名称,即产品表中的“价格”列;

第二、输入目标表中将要搜索的范围;

第三、输入原标中需要搜索的关联字段。

7.14TimeIntelligence函数:

时间只能函数

获取日历表

①利用Excel制作

②在PowerQuery中直接建立一张日期表。

第一步:

新建一个空查询;

第二步:

在公式中输入公式:

=List.Dates。

注意:

在编辑查询器中输入的公式用的是M语言,要区分大小写。

输入Start(日期起点)、Count(长度)、Step(颗粒度)等。

第三步:

单击“转换”选项卡中的“到表”命令,将其转换成表格格式。

8书写规则

举例:

度量值=CALCULATE([销售量],’产品表’[咖啡种类]=“拿铁”)

等号左边是度量值名称,等号右边是度量值公式。

在输入公式时,使用单引号引用某张表,使用中括号表示度量值或列。

*在写度量值公式时,如果想引用的是哪张表中的某一列,那么需要使用限定列。

限定列:

明确所引用的是哪张表中的哪一列。

9运算符

算数运算符

含义

示例

+(加号)

3+3

-(减号)

减或符号

3-1-1

*(星号)

3*3

/(正斜杠)

3/3

^(插入号)

求幂

16^4

比较运算符

=

等于

‘产品表’[咖啡种类]=“拿铁”

>

大于

‘日历表’[日期]>

“Jan12015”

<

小于

‘销售数量表’[数量]<

5

大于或等于

[销售量]>

=200

小于或等于

[销售量]<

=100

文本运算符

(与号)

连接(或串联)两个值以生成一个连续的文本值

‘产品表’[咖啡种类]&

‘产品表’[杯形]&

”杯”

(双与号)

And和,同时满足几个条件

‘门店信息表’[门店]=”北京市”&

’产品表’[咖啡种类]=”拿铁”

||(双竖线符号)

Or或,满足任意一个条件

’(产品表’[咖啡种类]=”拿铁”||’产品表’[杯型]=”中”)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1