近日,一场和 PowerBI DAX 之父 Jeffery Wang 的 AMA 活动。AMA 的意思是:Ask Me Anything。Jeffery Wang 在该活动中回答了很多关于 Power BI 尤其是 DAX 的相关重要问题。
本文做一些整理供大家参考。
PowerBI DAX 之父
Jeffery Wang,被大家称为:DAX 之父(The father Of DAX)。
以下是 Jeffery 的自我介绍。
I have worked on the Microsoft BI Engine team since 2004 therefore I witnessed firsthand the amazing transformation of Microsoft BI from an on-prem corporate BI product to a suite of cloud-based products that span the entire spectrum from self-service BI to corporate BI. My most recent focus has been on the engine that enabled the newly announced DirectQuery to PowerBI datasets. I am happy to answer your questions on Power BI, especially those related to DAX, modeling, DirectQuery, composite models, etc. I'll do my best for questions in other areas too.
大家问了 Jeffery 很多问题,这里挑选一些比较有意义的问题,做一个总结。
你想知道的
这里从整个对话中挑选有趣,有共性,有意义的问题做一个记录,不是大全,也不按照原文翻译。
参考:
https://www.reddit.com/r/PowerBI/comments/kvuarl/hi_i_am_jeffrey_wang_i_am_an_engineering_manager/?utm_source=share&utm_medium=web2x&context=3
(你有可能打不开这个链接,原因你懂的,就不要再问了)
问:可以在 PowerBI 可视化视图如:矩阵里加一个行号吗?而不利用DAX技巧。
答:不可以。你可以在PowerBI社区提出申请。
问:CALCULATE 函数的这个名字是谁起的?
答:忘记了,可能是 Amir Netz (PowerBI教父)
问:为何我在 PowerBI 界面创建一个度量值,界面要计算很久,等待很久,怎么解决?
答:用户其实会透过界面在 DAX 引擎中创建度量值和列等,这会导致依赖检查,包括依赖的度量值,计算列,计算表,关系等。如果模型很大,而且利用了很多计算,可能要消耗很久。尤其是使用了易失性函数时,会更慢,因为会计算。易失性函数包括:NOW, TODAY, UTCNOW, UTCTODAY, RAND, RANDBETWEEN。解决建议可以有:1、避免上述问题。2、用Tabular Editor。
问:Power BI Desktop 会加入自动 DAX 公式格式化吗?
答:目前没有这个计划。建议使用第三方工具,如:Tabular Editor。
问:Power BI Desktop 会加入调试功能吗,来协助编写复杂的 DAX 公式?
答:目前没有这个计划。
关于这个问题,继续给出了一个非常非常非常非常重要的说明如下:
请牢牢记住 PowerBI 的设计初衷是帮助业务人员的,而不是为了程序员的,业务人员需要的是简单,而不是去编程。因此,去做一个调试功能则违背了 PowerBI 的初衷。与此相反,短期目标会想办法解决复杂的 DAX 编写问题,例如:自定义总计值,running total,moving average,尤其是在表/矩阵中。
罗叔眼睁睁看着程序员们继续把 PowerBI 学成了编程序,并通过各种文章忽悠了一堆业务把编写 DAX 公式说成编写 DAX 代码;总之,是较劲脑汁硬生生地把 PowerBI 干成了编程序。然而,微软从一开始就定位于为业务人员做的 PowerBI。这点几乎在以 IT 为背景的人那里都得到了充分错误的表述。 业务驱动的数据分析,不是程序员,请跟随正确的体系,学习正确的思维模式, 不要把自己搞成一个 PowerBI 程序员。 问题来了,为什么大家都感觉写 DAX 公式似乎需要比编程更复杂的知识体系呢?答案很简单,源于两个原因:
- 第一,DAX 发明者的智商强大,清华大学本科毕业专业排名第一,因此,可能在这样的智商下看来的常识,对于普通人是有些挑战的。
- 第二,错误的学习路径,方法,内容。
基于上述两点,导致很多人付出了巨大的学习时间而不得要领,可惜啊~
问:Jeffrey 你曾写过解释 DAX 的深度博客内容,但后来又没写了,请问以后您会继续写一些内容吗?
答:不会。因为那个时候内容太少,所以写写。现在全世界都是讲 PowerBI 的,不需要我再写了。
问:为啥不能在度量值里使用 SUMMARIZECOLUMNS 这个函数?
这里不解释了。一般用来做可视化自动生成的查询,具体原因比较复杂,可以参考原文。
问:在你看来,哪个函数是用着简单,但实际内容运行原理是最复杂的?
答:SummarizeColumns。
问:PowerBI 默认可视化对象会开源吗?
答:至少短期不会。如果想要修改这个,可以参加 Power BI contributor program。
问:Power BI Report Server 会有一些本地化的定制改进吗?
答:不会。Power BI Report Server 是作为云端的附属物提供的,原则上不会看到 PBIRS 有的功能,而云端却没有。
问:我们知道一对多关系的实现是在SE引擎完成的,很快。那有没有计划进一步优化一对一,多对多以及TREATAS所创建的关系的性能呢?
答:不会在 SE 层面做这个优化。
这就是为啥我们要做默认一对多关系的重要原因:快。
问:我们知道 DAX 引擎叫:VertiPaq,到底是啥意思呢?
答:不确定,但我认为是:列(Vertically by columns)存储且数据被压到最大化(compacted by compression)。
问:会引入 DAX 自定义函数吗?会引入度量表吗?
答:原理上可以做到,但现在不会。
问:混合模型太牛了,下一步有什么大的计划吗?
答:首先,混合模型还没有完全好呢,所以现在是预览版本。Power BI 团队的确计划了很多大事件。但是说到和 DAX 引擎有关的,最大的计划就是如何让 DAX 更加简单以及在大数据规模下的更快。这些需要大量底层工作。
问:可以具体透露一下细节吗?
答:正在考虑呢,没细节。
问:为啥你们销售团队老是不接电话?
答:我很抱歉有这个问题,我将把这事反应给管理团队。
回:感谢,不过真的有这个问题。
总结
罗叔选择了一些问题并做了精简,不代表原作者的任何实际含义,大家可以看原文。
总之,Power BI 和 DAX 正在高速进化,由于错误的认知和错误的方法导致大量学习者走了很多弯路。请用智慧去感悟 DAX 之父的话语。
Power BI 的本质是什么?Power BI 教父讲过了,虽然全球只有几千人看过,我们直播过。
DAX 的本质是什么?DAX 之父也讲的很清楚了。
但罗叔非常肯定,误解和错误还是会大量充斥,尤其是中文世界,希望大家可以多多注意。
Power BI 尤其是 DAX,是伟大的发明,你对 DAX 有什么问题,可以留言。