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

What's the difference between DAX and Power Query (or M)?

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

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

M用于Power Query(a.k.a.Get & Transform in Excel 2016)和Power BI Desktop的查询工具。它的函数和语法与 Excel 工作表函数有很大不同。 M 是一种混搭查询语言,用于查询大量数据源。它包含用于转换数据的命令,并且可以 return 将查询和转换的结果转换为 Excel table 或 Excel 或 Power BI 数据模型。

有关 M 的更多信息可以在 here 中找到并使用您最喜欢的搜索引擎。

DAX 代表数据分析表达式。 DAX 是 Power Pivot 和 Power BI Desktop 中使用的公式语言。 DAX 使用函数来处理存储在 table 中的数据。一些 DAX 函数与 Excel 工作表函数相同,但 DAX 有更多的函数来汇总、切片和切块复杂的数据场景。

如果您知道如何使用搜索引擎,有很多 DAX 教程和学习资源。或者开始here.

本质上:首先使用Power Query (M) 查询数据源,清理和加载数据。然后使用 DAX 分析 Power Pivot 中的数据。最后,您可以使用 Power BI 构建数据透视 tables (Excel) 或数据可视化。

  • M 是流程的第一步,将数据导入模型。

(在 PowerBI 中)当您 right-click 数据集和 select Edit Query 时,您正在使用 M(也称为 Power Query)。编辑 window 的标题栏中有一个关于此的提示 Power Query Editor。 (但您必须知道 M 和 PowerQuery 本质上 是同一回事)。此外(显然?)当您单击“获取数据”按钮时,这会为您生成 M 代码。

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

两种语言之间有很多交叉点(例如,您可以在两者中添加列和合并表)- 关于何时选择哪个语言的一些讨论 here and here

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

  • M(Power Query):查询时间转换 在提取数据时调整数据
  • DAX:内存中转换 在您提取数据后分析数据

另一件值得一提的关于性能优化的事情是,您应该 "prune" 您的数据集(删除行/删除列)尽可能 "upstream" - 数据处理顺序 - 尽可能;这意味着此类操作在 Power Query 中比在 DAX 中更好地完成; MS 的一些进一步建议:https://docs.microsoft.com/en-us/power-bi/power-bi-reports-performance