DAX和Power Query(或M)有什么区别?

55

我已经在Power BI上工作了一段时间,但当我浏览它的帮助主题时,常常感到困惑。它们经常提到使用的函数和公式作为DAX函数或Power Query,但我无法区分这两者之间的差异。请指导。


抱歉 @teylyn。我有一段时间没有上stackoverflow了。谢谢你的回答。 - user2724541
这也将有助于了解DAX与M语言之间的主要区别。 - Mohamed
4个回答

99

M和DAX是两种完全不同的语言。

M用于Power Query(又称Excel 2016中的Get & Transform)和Power BI Desktop的查询工具。它的函数和语法与Excel工作表函数非常不同。M是一种混合查询语言,用于查询多种数据源。它包含转换数据的命令,并可以将查询和转换的结果返回到Excel表格或Excel或Power BI数据模型中。

更多有关M的信息可以在这里和使用您喜欢的搜索引擎找到。

DAX代表数据分析表达式。DAX是Power Pivot和Power BI Desktop中使用的公式语言。DAX使用函数对存储在表中的数据进行操作。一些DAX函数与Excel工作表函数相同,但DAX具有更多的函数以汇总、切片和解决复杂的数据情况。

如果您知道如何使用搜索引擎,可以找到许多有关DAX的教程和学习资源。或者从这里开始。

简而言之:首先使用Power Query(M)来查询数据源,清理和加载数据。然后使用DAX在Power Pivot中分析数据。最后,您可以使用Excel来构建数据透视表或使用Power BI可视化数据。


21
  • M 是过程的第一步:将数据导入模型。

在PowerBI中,当您右键单击数据集并选择“编辑查询”时,您正在使用M(通常称为Power Query,它使用M)。编辑窗口的标题栏中有一个关于此的提示,显示为“Power Query Editor”(但您必须知道M和PowerQuery本质上是相同的东西)。此外,当您单击“获取数据”按钮时,这会为您生成M代码。

  • DAX 用于PowerBI桌面版的报表窗格,主要用于聚合(切片和切块)数据,添加度量等。

两种语言之间存在很多交叉(例如,您可以在两种语言中都添加列和合并表)-关于何时选择哪种语言的讨论在这里这里


1
我不确定是否应该将M和Power Query视为同一物。在我看来,Power Query就像Excel公式/数据透视表/Vlookup对于VBA一样是M语言的一部分。你可以在不编写任何M“代码”的情况下使用Power Query,但你也可以只编写M“代码”来实现你在Power Query中想要的任何功能。 - TylerH
6
@TylerH 您的比较并不正确。当您使用Power Query时,您会生成M代码,每次都是如此。没有M代码就没有Power Query。PQ编辑器本身只是一个M代码记录器,您不必实际手动输入M代码来生成它。在Excel中,您可以做很多事情而无需使用VBA。 - teylyn
@teylyn 当我说“你甚至不需要编写M代码就可以使用Power Query”时,我是字面意思——你不需要手动编写M代码。 - TylerH
2
@TylerH 你说PQ对M就像Excel公式/数据透视表对VBA一样。这是错误的。你可以在不编写或生成VBA的情况下使用Excel公式/数据透视表。但是你不能没有M而使用PQ。 - teylyn

13

将Power Query/M视为ETL语言,用于在Power BI和/或Excel中格式化和存储物理表。然后将DAX视为您将使用的语言从源查询数据后,用于计算总数、执行分析和其他功能。

  • M (Power Query):查询时转换用于在提取数据时对其进行形状化处理
  • DAX:内存中转换可在提取数据后用于分析数据

2
另外一个值得一提的关于性能优化的事情是,你应该尽可能早地在数据处理流程中的“上游”部分剪枝(删除行/删除列)数据集;这意味着这样的操作最好在Power Query而不是DAX中完成;微软在这里提供了一些进一步的建议:https://learn.microsoft.com/en-us/power-bi/power-bi-reports-performance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接