Power Pivot 系列 (4) - DAX 查询

Power Pivot 系列 (4) - DAX 查询,第1张

Power Pivot 通过 DAX 查询可以实现从不同的视角查看数据。但在 Excel 中编写 DAX 查询却不太方便,所以本篇在讲解 DAX 查询用法的时候,以 DAX Studio 作为工具。关于 DAX Studio 请自行在网上搜索,我的上一篇也有介绍。

本篇的示例数据来自 《DAX 圣经》这本书,示例数据我已经上传到 github,文章的末尾有链接,方便大家学习。

DAX 查询一般从 EVALUATE 关键字开始,可以把 DAX 查询语句理解为 EVALUATE 关键字引导的表达式构成的语句。比如我要查询 Sales 表的所有数据,DAX 查询语句为:

相当于 SQL 语句的 SELECT FROM Sales; 第一行是注释。

DAX 查询的 ORDER BY 关键字引导的表达式对查询结果进行排序。升序为 ASC,降序为DESC 。

DAX 支持按多个字段排序:

SQL 语句选择指定字段很直观: SELECT A, B FROM sometable 。DAX 查询选择指定字段用 SUMMARIZE 函数。 SUMMARIZE 函数第一个参数为 table 的名称,后面跟若干个字段,即可以选择指定的列:

DAX 查询结果的界面:

数据筛选用 FILTER 函数, FILTER 函数第一个参数为 table 名称,第二个参数为筛选表达式,返回值为 table。比如我们要筛选出 Product 表中所有 Class 为 Economy 的数据:

数据透视表就是分组计算,如果我们要数据透视表的逻辑,但并不需要数据透视表的格式,使用 DAX 查询的分组计算作为输出就非常合适。分组计算用到 SUMMARIZE 函数的标准用法。 SUMMARIZE 函数语法如下:

函数的第一个参数是 table 名称;第二组参数是一系列列名称,根据列名进行分组,比如先按照客户,再按照产品名称等等;第三组参数由 name 和 expression 成对构成,比如 name 为 toal quantity, expression 为 SUM([Quantity],就根据 Quantity 列来计算合计数。假设我们需要按客户来计算销售的数量:

多字段分组:先按照客户,再按照产品分组计算销售数量的合计:

前面的示例都是基于一个表,接下来讲解多表关联的 DAX 查询。Power Pivot 中表的关系在关系图视图中维护,关系维护好后,在 DAX 查询时, 表的关系都为左连接且不能修改为其它连接方式 。这种机制虽然降低了灵活性,但却让 DAX 基于多表的查询语法变得非常简单。

比如我们要查询基于客户名称和产品名称的销售数量明细。我们刚才讲过,返回指定字段用 SUMMARIZE 函数:

查询结果截图如下:

这个查询涉及到 3 个表的关联,相同功能的 SQL 语句要复杂得多。同理,基于多个表的分组计算,也是只需要选择某个表的字段,而不需要关注表的关系。我们来对基于客户和产品计算销售数量合计的查询进行变更:

查询的截图如下:

嵌套使用 FILTER 和 SUMMARIZE 函数能达到这种效果。先用 SUMMARIZE 函数返回一个包含指定列的表,然后用 FILTER 函数基于这个计算表进行筛选:

添加列在 Power Pivot 中非常容易,但我们也可以在 DAX 查询中使用 ADDCOLUMNS 函数来添加列。 ADDCOLUMNS 函数的语法如下:

根据函数的语法,我们知道,可以一次添加多个列。下面的示例添加了一个计算列:计算出每一行的销售金额(单价 数量):

在 DAX 查询中,可以使用 VAR 定义变量,使用变量能够简化 DAX 查询语句的编写。定义变量需要在 EVALUATE 之前用 DEFINE 关键字引导,用 VAR 定义变量。比如,我们先定义一个按客户的国别和产品品牌分组计算销售数量的表,将这个表保存在变量 groupedSales 中,然后对销售按品牌进行筛选:

DAX 查询也可以定义度量值。度量值用 MEASURE 关键字定义,MEASURE 返回一个标量值。比如我们要按照品牌计算出销售额,先定义一个度量值,然后再基于品牌来作为筛选上下文计算。这种方法相对难懂,仅为了介绍定义度量值的方法。注意下面 DAX 查询中度量值的表达方法。

github - sample data

ax+b=cx+d

ax+b-cx=cx+d=cx

(a-c)x+b=d

(a-c)x+b-b=d-b

(a-c)x=d-b

x=(d-b)/(a-c)

ax+b=cx+d化成最简单的一元一次方程是 x=(d-b)/(a-c)

由题可知,a,b∈N+(非0自然数),且a÷3=b。

可知b是a的因数,且b是b自身的最大因数,所以a的因数集与b的最大因数集的交集,即b,就是a和b的最大公因数。

所以应选B。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/3724628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-03-17
下一篇2024-03-17

随机推荐

  • 如何设计王者荣耀皮肤平面图?

    王者荣耀皮肤设计一般需要角色人设设置,有个人设大纲之后才能开始皮肤设计,根据你的人设性格、背景等画出人物的皮肤外观,然后需要带上皮肤三视图(正,反,侧)皮肤设计需要美术功底,使用ps或者sai绘制,如果没有美术功底很难画出心仪的皮肤,现在王

    2024-04-15
    45800
  • 看过来!精致女孩必备的身体乳合集(二)

    作为一个精致的猪猪女孩,身体乳一定是必不可少的。接下来就给大家推荐一些好用的身体乳吧!aleble皇后身体乳我第一次刚挤出来的时候觉得挺像雪花秀的那个滋润面霜的,放在手心随便你怎么动它都不会“乱跑”,让它涂脖子,绝不会流到肚子上,这款身体乳

    2024-04-15
    46600
  • 用到空瓶的后天气丹,抗初老界的扛把子选手~

    熟龄肌必备的高端韩妆,天气丹|集补水、去黄、抗皱、美白一体的全能套装。后天气丹套装作为一个马上就要奔30的老阿姨,抗老我已经早早的提上了日程。天气丹作为后里面的高端系列也不是浪得虚名。据说它是集补水、去黄、抗皱、美白一体的全能套装。于是我立

    2024-04-15
    35600
  • 精华液排名前十名推荐

    精华液排名前十名推荐为赫莲娜夜间修护精华、海蓝之谜修护精粹液、SK-II肌因光蕴环采钻白精华露、雅诗兰黛特润修护肌透精华露、兰蔻小黑瓶面部精华肌底液、伊丽莎白雅顿新生时空胶囊、资生堂红妍肌活精华露、倩碧双星淡斑精华、欧莱雅青春密码面部精华液

    2024-04-15
    28300
  • 精华露在什么时候用??爽肤水后还是前,乳液后还是前??

      精华露用在爽肤水后乳液前。  1、化妆水  化妆水的作用在于再次清洁以恢复肌肤表面的酸碱值,并调理角质层,使肌肤更好地吸收,为使用保养品作准备。伊伊建议油性皮肤使用紧肤水,健康皮肤使用爽肤水,干性皮肤使用柔肤水,混合皮肤T区使用紧肤水,

    2024-04-15
    34100
  • 白云山巧依依美白淡斑菁华乳好用吗

    好用。巧依依美白淡斑菁华乳的祛斑效果是很不错的,在它里面的成分可以帮助肌肤达到美白的效果,也有帮助淡化斑点的效果。如果想要让存在的斑点问题能够更好得到改善,建议在使用的时候就要坚持使用,否则就会因为自己没有坚持使用依露美美白精华霜而导致美白

    2024-04-15
    29900
  • 乳液和精华露先擦哪个

    先擦精华露。先用精华露再用乳液,因为精华露的质地更轻盈,吸收更快针对性功能更适合前期使用,它需要在洁面以及化妆水后用,而乳液的质地比前者要稍黏和油一点,且功能通常为保水,所以它在护发的靠后的时候用,通常的护肤品使用的顺序是洗面奶、化妆水、精

    2024-04-15
    35700

发表评论

登录后才能评论
保存