当前位置:首页 > 星座达人

花儿与少年第三季星座:

分享到

PowerBI的M与DAX之争

有一位读者留言一个问题,我写了个公式过去,来回几次都没有解决,最后发现她竟然把DAX公式写在了编辑查询器里,自学成材这件事注定要有试错的弯路,而这些弯路都会让你更深刻地认识一个知识点。DAX是什么?我把这些问题的答案都写在这一篇文章里。M和DAX,无论这两门语言的设计初衷和用途如何,同一个工具里面要用到两种不同的语言真让人有点分裂。并知道编辑查询器里面用的是M语言,新建度量值和列用到的是DAX,我们知道使用PowerBI做分析的流程是PQ+PP+PV,PowerQuery数据查询整理、PowerPivot数据建模、PowerView数据可视化,其实无论你用什么工具做分析,所以很有可能你见到的第一个写公式的地方是PQ而不是PP。M vs. DAX 撇开那些官方的抽象的定义,我们说PowerBI做数据分析的三个模块PQ+PP+PV这个过程就好比烹饪,PQ是获取食材、洗菜、切菜;M位于PQ中,DAX是在PP中使用,所以如果你想问M和DAX哪个更好,这个问题就好比问洗菜切菜重要还是烹饪更重要?再牛的大厨也做不出健康的美味。不过也请你意识到一个残酷的现实,洗菜工往往没有厨师赚钱。为什么说DAX是PowerBI的灵魂 管理学大师德鲁克的这句经典名言还有时下流行的增长黑客概念,都透露着数据化运营的前提在于度量。写度量值用的是什么?当老板问哪个渠道的客户在过去的80天里流失得最快?哪个产品线上个季度的利润率最高?能回答这些问题的就是用DAX写的度量值。把度量值称为Excel20年历史上最好的发明并不是空穴来风。M和DAX哪个更难 M是长下面这个样子的。DAX的样子,但与Excel里的公式还是有一定差别。M和DAX都叫语言,但对于DAX(Data Analysis Expression数据分析表达式)确切地说它是类似Excel的公式语言。对于懂代码的IT人,写M语言可能上手快;对于像我这样仅有Excel公式基础的人,对DAX的表达方式更容易理解。很多人说DAX难理解,我却享受于度量值的逻辑思考,反而是对M代码怀揣敬畏之心。我应该学习哪个 其实这个问题根据上面三个问题的回答,你可以自行推出适合自己的结论。DAX,所以先学习DAX(和数据建模)》,这篇稍有mgc味的文章Rob也做出了一些特别声明,意思是80%DAX,20%PowerQuery/M将会是你掌握PowerBI后的理想时间分配。M是一个强大的工具,我非常羡慕那些拥有M本领的大神弹指间就把一张丑陋的数据表变成了小清新。所以如果你的数据源很难看,M语言会有不可替代的价值。很多Excel用户接触的数据源并没有那么恶劣。从ERP系统或者从数据库中导出的数据往往是规范的。可能需要做些拆分和格式调整类的工作。

PowerBI引擎学习神器:DAX Studio介绍

别掉队)DAX除了进行计算外,更可以直接作为一门查询语言,如果说SQL是IT的数据库查询语言,那么DAX就可以认为是分析师的查询语言。理解了DAX查询,意味着开始真正驾驭DAX。你知道mgc表就是等效的DAX查询吗DAX在使用上,一类以DAX计算为核心,另一类以DAX查询为核心。本文是专对后者进行介绍的。DAX计算就是在建立了关系的多个表构成的数据模型上,DAX通过筛选,找到需要进行计算的一个数据模型的子集,然后进行迭代处理后,完成聚合型计算。分析师用DAX计算关注某个值(度量值),而分析师常常可能需要的不仅仅是一个值,不同类别及子类别下的销售额。那相当于借助了Excel界面的拖拽来生成一个表,在具体的值位置,使用了DAX的度量值,这让我们得到了mgc表结果。这是Excelmgc表默认的视图,稍加变化该mgc表等效于:可以使用如下的DAX查询实现等效的结果:可以看到这与mgc表的结果是完全等效一致的,在Excel中使用mgc表对数据模型进行操作时:实际使用的是MDX查询。相当于 mgc表操作 等效于 MDX查询 等效于 DAX查询,关于MDX查询不在这里讨论的范围。mgc表可以实现的数据视图。使用DAX查询都可以做到。一些更复杂的数据视图:很难用mgc表实现,而DAX查询也可以做到。就使用难度而言,mgc表是拖拽式的,而DAX查询则要学习DAX语言。mgc表面向普通办公场景,而DAX查询则是分析师专属,我们必然是要掌握DAX查询的,以便获得DAX的全部能力。这不是拖拖拽拽就能实现的,进入DAX查询前的准备要学习DAX查询,了解并能初步使用Power BI Desktop,大致了解Power Pivot与Power BI Desktop在DAX方面的共性:更准确地说。需要理解DAX计算并至少在Excel Power Pivot或Power BI Desktop中实践过至少以下一种。并在Excel Power Pivot中借助mgc表工具和度量值进行结合实践,自行创建度量值:并在Power BI Desktop中借助可视化化工具和度量值进行结合实践,理解DAX查询的对象所谓查询。那么一定具体指的是用户从A处按照某需求查询出结果B的过程,我们熟知的SQL查询是用户从数据库(兼容SQL查询标准)按照业务需求(如,select * from user t where t.age > 20)查询出结果(大于20岁的用户)。DAX查询从这个意义上讲,DAX查询。是分析师从数据模型(内置DAX引擎)按照业务需求查询出结果的过程,具备内置DAX引擎的数据模型目前有。连接后DAX Studio显示主界面如下:DAX查询编写DAX查询/DAX代码格式化数据模型元数据查看当前DAX引擎支持函数查看当前DAX引擎DMVDAX查询结果查看DAX查询结果数据导出DAX引擎运行监控(为代码优化做准备)DAX引擎时间mgcDAX代码性能优化也就是说,编写DAX查询仅仅是DAX Studio支持的基础功能,将在后续的文章中单独说明。在Excel中使用DAX查询在Excel中使用DAX查询必须满足一个前提,Excel已经使用了数据模型。安装DAX Stuido以后,Excel会出现一个新的选项卡,必须在这里点击DAX Studio才能打开DAX Studio与Excel数据模型的连接。DAX引擎内置在Excel进程里,所以必须从Excel中打开DAX Studio以匹配该进程。连接的Excel数据模型显示为:这进一步说明Excel内置了SSAS引擎。DAX查询的语法是以 EVALUATE 开头的返回表的DAX表达式。那最简单的可以直接用一个已有的表,为了把这个结果返回到Excel,可以设置DAX查询的输出位置,这个加载到Excel中的表与其他表的不同在于,它是DAX查询返回的表,可以看到这个表格带有【编辑DAX】的菜单,这基本上属于开启了Excel的一个隐藏功能,而且是一个威力非常巨大的隐藏功能,你可以在这里编写任意的DAX查询以驾驭Excel数据模型。而编写DAX的任务可以完全在DAX Studio中完成,只需要把结果链接输出到这里或者把测试满足预期的DAX查询代码粘贴至此即可。也应该能意识到此时你将摆脱以前Excel数据mgc表给你带来的任何mgc,你可以实现任何你想象到的任务只有你具有这方面的数据即可。我们完成本文开头的代码,这里我们并不用特别在意该段DAX代码的,这需要知道DAX查询可以实现的效果。关于DAX查询如何逐步编写属于另外的独立话题。如果没有安装DAX Studio,在Excel中其实还有一种打开DAX查询这项隐藏技术的门,【步骤一】从外部获取数据,一般是Power Query获取数据并加载到数据模型。【步骤二】从【现有连接】打开表,点击【打开】:选择数据在工作簿的显示方式为【表】以及数据放置位置为【新工作表】,这种表就是使用DAX查询得到的表,此时便可以自由地编写DAX查询了。尽量用刚才的方式加载一个小表作为占位符表,然后再修改DAX查询。如果选择了一个FactSales这样几百万行的表,Excel是无法加载进工作表的,当然大表也会占据更多时间。已经借助DAX Studio或从Excel原生开启了DAX查询的序幕。接下来就完全是DAX查询的阶段了。DAX Studio中完成DAX 查询的调试后,放入Power BI Desktop构建独立的表。开始在DAX Studio中编写DAX查询在DAX Studio中编写DAX查询是以EVALUATE开始的,可以在DAX Studio中实现对任意DAX表达式的测试,这不仅有利于完全理解DAX表达式的运行以深入学习DAX,也可以完成非常复杂的表达式的编写和调试工作。测试返回表的表达式:DAX查询可以测试返回表的DAX表达式EVALUATEnADDCOLUMNS ( 'Product Category',只是希望返回类别和销售额:如何进一步特定化DAX查询?将在后续进一步说明,测试返回值的表达式。由于DAX查询必须返回表,可以用ROW来构建一个表:但实质是为了测试一个值,Excelmgc表可以用等效的DAX查询表示DAX查询可以表示出任意复杂的查询结果,这种能力远远超过Excelmgc表本身DAX Studio是编写DAX查询的强大武器DAX Studio除了编写DAX查询外:

演出 | 「Flash in the Pan · 曾经呈现灵气」中文原创音乐分享会