DAX查询入门:DAX Studio介绍

《DAX查询入门:DAX Studio介绍》

DAX除了进行计算外,更可以直接作为一门查询语言,如果说SQL是IT的数据库查询语言,那么DAX就可以认为是分析师的查询语言。理解了DAX查询,意味着开始真正驾驭DAX。

你知道透视表就是等效的DAX查询吗

DAX在使用上,分成两大类,一类以DAX计算为核心,另一类以DAX查询为核心。本文是专对后者进行介绍的。
在之前的篇章,我们提到过:DAX计算就是在建立了关系的多个表构成的数据模型上,DAX通过筛选,找到需要进行计算的一个数据模型的子集,然后进行迭代处理后,完成聚合型计算。所以,一般而言,分析师用DAX计算关注某个值(度量值),而分析师常常可能需要的不仅仅是一个值,而是一个结果表。例如:不同类别及子类别下的销售额。

当然这个需求,可以用透视表实现,那相当于借助了Excel界面的拖拽来生成一个表,在具体的值位置,使用了DAX的度量值,这让我们得到了透视表结果。

如下所示:

《DAX查询入门:DAX Studio介绍》

这是Excel透视表默认的视图,它很简洁,稍加变化该透视表等效于:

《DAX查询入门:DAX Studio介绍》

可以使用如下的DAX查询实现等效的结果:

EVALUATE
FILTER (
    ADDCOLUMNS (
        SELECTCOLUMNS (
            GENERATE ( DimProductCategory, RELATEDTABLE ( DimProductSubcategory ) ),
            "Category", [ProductCategoryName],
            "SubCategory", [ProductSubCategoryName]
        ),
        "销售额", [销售额]
    ),
    [销售额] <> BLANK ()
)

结果如下:

《DAX查询入门:DAX Studio介绍》

可以看到这与透视表的结果是完全等效一致的。

注:在Excel中使用透视表对数据模型进行操作时,实际使用的是MDX查询。但由于 MDX查询 和 DAX查询 具有等效性,相当于 透视表操作 等效于 MDX查询 等效于 DAX查询。关于MDX查询不在这里讨论的范围。

不难发现:

  • 透视表可以实现的数据视图,使用DAX查询都可以做到。
  • 一些更复杂的数据视图,很难用透视表实现,而DAX查询也可以做到。
  • 就使用难度而言,透视表是拖拽式的,而DAX查询则要学习DAX语言。
  • 透视表面向普通办公场景,而DAX查询则是分析师专属。

作为数据分析师,我们必然是要掌握DAX查询的,以便获得DAX的全部能力,当然,这不是拖拖拽拽就能实现的,让我们一起开始学习吧。

进入DAX查询前的准备

要学习DAX查询,首先应该做好如下准备:

  • 了解并能初步使用Power Pivot。
  • 了解并能初步使用Power BI Desktop。
  • 大致了解Power Pivot与Power BI Desktop在DAX方面的共性。

更准确地说,需要理解DAX计算并至少在Excel Power Pivot或Power BI Desktop中实践过至少以下一种:

  • 自行创建度量值,并在Excel Power Pivot中借助透视表工具和度量值进行结合实践。
  • 自行创建度量值,并在Power BI Desktop中借助可视化化工具和度量值进行结合实践。

理解DAX查询的对象

所谓查询,那么一定具体指的是用户从A处按照某需求查询出结果B的过程。例如,我们熟知的SQL查询是用户从数据库(兼容SQL查询标准)按照业务需求(如:select * from user t where t.age > 20)查询出结果(大于20岁的用户)。
DAX查询从这个意义上讲,是完全一致的。DAX查询,是分析师从数据模型(内置DAX引擎)按照业务需求查询出结果的过程。

具备内置DAX引擎的数据模型目前有:

  • Excel 数据模型(归并在Power Pivot主题下)
  • Power BI / Power BI Desktop 数据模型
  • SSAS服务

关于SSAS服务的内容超过自助商务智能的范畴,不在讨论范围之内。

下面分别说明如何在Excel及Power BI Desktop下展开DAX查询。

DAX Studio:DAX查询的专属工具

DAX Studio是一个专门编写DAX查询的免费工具。可以在这里获取:http://daxstudio.codeplex.com/
下载安装启动后,可以看到:

《DAX查询入门:DAX Studio介绍》

这里提示要连接到的数据模型,有三种选择,这与之前介绍的内置DAX引擎的三种数据模型相一致。

需要注意的是:

  • DAX Studio与Excel 数据模型的连接需要从Excel里启动DAX Studio,第一项可用。
  • 如果当前本地打开了Power BI Destop,则第二项可用。

连接后DAX Studio显示主界面如下:

《DAX查询入门:DAX Studio介绍》

各主要板块大致如下:

《DAX查询入门:DAX Studio介绍》

借助DAX Studio,我们可以完成:

  • DAX查询编写
  • DAX查询/DAX代码格式化
  • 数据模型元数据查看
  • 当前DAX引擎支持函数查看
  • 当前DAX引擎DMV
  • DAX查询结果查看
  • DAX查询结果数据导出
  • DAX引擎运行监控(为代码优化做准备)
  • DAX引擎时间跟踪
  • DAX代码性能优化

也就是说,编写DAX查询仅仅是DAX Studio支持的基础功能,这也是本文要介绍的主题,由于DAX Studio的深度使用,将在后续的文章中单独说明。

在Excel中使用DAX查询

在Excel中使用DAX查询必须满足一个前提,那就是:Excel已经使用了数据模型

安装DAX Stuido以后,Excel会出现一个新的选项卡,如下:

《DAX查询入门:DAX Studio介绍》

必须在这里点击DAX Studio才能打开DAX Studio与Excel数据模型的连接。

注:DAX引擎内置在Excel进程里,所以必须从Excel中打开DAX Studio以匹配该进程。

如下所示:

《DAX查询入门:DAX Studio介绍》

可以看到,连接的Excel数据模型显示为:Microsoft_SQLServer_AnalysisService,这进一步说明Excel内置了SSAS引擎。

DAX查询的语法是以 EVALUATE 开头的返回表的DAX表达式。那最简单的可以直接用一个已有的表,如下:

《DAX查询入门:DAX Studio介绍》

为了把这个结果返回到Excel,可以设置DAX查询的输出位置,如下:

《DAX查询入门:DAX Studio介绍》

这个加载到Excel中的表与其他表的不同在于,它是DAX查询返回的表,如下:

《DAX查询入门:DAX Studio介绍》

可以看到这个表格带有【编辑DAX】的菜单,如下:

《DAX查询入门:DAX Studio介绍》

看到这里,你应该意识到,这基本上属于开启了Excel的一个隐藏功能,而且是一个威力非常巨大的隐藏功能,你可以在这里编写任意的DAX查询以驾驭Excel数据模型。而编写DAX的任务可以完全在DAX Studio中完成,只需要把结果链接输出到这里或者把测试满足预期的DAX查询代码粘贴至此即可。

作为Excel透视表用户,也应该能意识到此时你将摆脱以前Excel数据透视表给你带来的任何限制,你可以实现任何你想象到的任务只有你具有这方面的数据即可。

我们完成本文开头的代码,填入:

《DAX查询入门:DAX Studio介绍》

这就得到了本文一开始等效于透视表的结果。

这里我们并不用特别在意该段DAX代码的,这需要知道DAX查询可以实现的效果。关于DAX查询如何逐步编写属于另外的独立话题。

如果没有安装DAX Studio,在Excel中其实还有一种打开DAX查询这项隐藏技术的门,操作步骤如下:
【步骤一】从外部获取数据,一般是Power Query获取数据并加载到数据模型。(如:表DimProductCategory)。
【步骤二】从【现有连接】打开表,如下:

《DAX查询入门:DAX Studio介绍》

下一步:

《DAX查询入门:DAX Studio介绍》

点击【打开】:

《DAX查询入门:DAX Studio介绍》

选择数据在工作簿的显示方式为【表】以及数据放置位置为【新工作表】,如下:

《DAX查询入门:DAX Studio介绍》

这种表就是使用DAX查询得到的表,如下:

《DAX查询入门:DAX Studio介绍》

此时便可以自由地编写DAX查询了。

注意:尽量用刚才的方式加载一个小表作为占位符表,然后再修改DAX查询。如果选择了一个FactSales这样几百万行的表,Excel是无法加载进工作表的,当然大表也会占据更多时间。

至此,已经借助DAX Studio或从Excel原生开启了DAX查询的序幕。接下来就完全是DAX查询的阶段了。

在Power BI Desktop中使用DAX查询

在Power BI Desktop中使用DAX查询相比在Excel使用DAX查询更加简单,因为首先你看到的一切在Power BI Desktop拖拽生成的图形元素背后,都是DAX查询的结果,类似于本文开篇透视表的结果。

也就是说,不管是饼图,条形图或是地图等,背后用到的数据都是DAX查询的结果,当然Power BI Desktop做了数据量级的限制以确保图形的合理显示。

Power BI Desktop图形元素自动生成DAX查询不在本文讨论范围之内,后续再说明。

首先Power BI Desktop直接给出了可以返回表的机会,也就是直接可以编写DAX查询如下:

《DAX查询入门:DAX Studio介绍》

当然,Power BI Desktop也可以与DAX Studio相连接,如下:

《DAX查询入门:DAX Studio介绍》

只要Power BI Desktop是打开的,随后再打开DAX Studio就可以选择Power BI Desktop进行连接。连接后如下所示:

《DAX查询入门:DAX Studio介绍》

略加观察不难发现,这里的连接是具体的Power BI Desktop文件名称。回忆前述的DAX Studio连接Excel的方式是不显示具体文件名称的。因为,Power BI Desktop会开启独立的SSAS进程。

强调这两点是在引导一种对于分析师更强大的组合使用模式,那就是:分析师可以直接使用Power BI Desktop作为本机的分析服务器。而DAX查询将最大化地发挥分析师的能力。

分析师可以在DAX Studio中完成DAX 查询的调试后,放入Power BI Desktop构建独立的表。

开始在DAX Studio中编写DAX查询

在DAX Studio中编写DAX查询是以EVALUATE开始的,可以在DAX Studio中实现对任意DAX表达式的测试,这不仅有利于完全理解DAX表达式的运行以深入学习DAX,也可以完成非常复杂的表达式的编写和调试工作。

测试返回表的表达式:

DAX查询可以测试返回表的DAX表达式

EVALUATE
ADDCOLUMNS ( 'Product Category', "Total", [Sales Amount] )

返回:

《DAX查询入门:DAX Studio介绍》

只是希望返回类别和销售额?如何进一步特定化DAX查询,将在后续进一步说明。

测试返回值的表达式:

EVALUATE
ROW( "Total", [Sales Amount] )

返回:

《DAX查询入门:DAX Studio介绍》

由于DAX查询必须返回表,可以用ROW来构建一个表,但实质是为了测试一个值。

总结

通过本文的介绍,我们可以知道:

  • Excel透视表可以用等效的DAX查询表示
  • DAX查询可以表示出任意复杂的查询结果,这种能力远远超过Excel透视表本身
  • DAX Studio是编写DAX查询的强大武器
  • DAX Studio除了编写DAX查询外,还具备其他更多特性
  • 理解如何借助DAX Studio完成DAX查询与Excel的连接
  • 理解如何直接在原生Excel中实现DAX查询
  • 理解如何在Power BI Desktop中进行DAX查询
  • 理解如何借助DAX Studio测试DAX查询(返回表或返回值)

现在,赶快下载DAX Studio开启DAX查询的无限可能吧。
在你完成一定探索后,会发现一些问题,相信在后续关于DAX Studio及DAX查询的文章中会找到你要的答案。

如果你喜欢本文,欢迎在朋友圈进行分享。

留言后下载本文使用示例数据文件。

《DAX查询入门:DAX Studio介绍》

    原文作者:PowerBI战友联盟
    原文地址: https://www.jianshu.com/p/185edd99083f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞