使用 DAX 查询视图

重要

DAX 查询视图目前为预览版

在 Power BI 中使用 DAX 查询视图,可以在语义模型中查看和使用 Data Analysis Expressions (DAX) 查询。

DAX 查询

在 Power BI 中,DAX 公式用于为数据定义不同类型的计算,也可用于定义角色安全性。 另一方面,DAX 查询可用于从模型返回数据。

DAX 查询类似于 SQL 查询,因为它们可以显示你已有的数据。 DAX 查询不会在模型中创建项,也不会在报表中创建视觉对象。

DAX 查询有两个主要部分:

  • EVALUATE 语句,此部分为必需。 它指定查询中返回的数据和返回的方式。
  • DEFINE 语句,此部分为可选。 它用于定义要在查询中使用的 DAX 公式,例如度量值。 在 DEFINE 中使用时,可以使用 CodeLens 将度量值添加到模型中。

若要详细了解查询的使用方式,请参阅 DAX 参考中的 DAX 查询

打开 DAX 查询视图

在 Power BI Desktop 中,选择左侧的“DAX 查询视图”图标。

Screenshot of the DAX query view icon in Power BI Desktop.

DAX 查询视图布局

让我们更深入地了解 Power BI Desktop 中的 DAX 查询视图。

Diagram that shows the DAX query view layout.

DAX 查询视图包含以下元素:

功能区

DAX 查询视图功能区具有编写 DAX 查询时使用的常见操作。

Screenshot of the DAX query view ribbon.

让我们仔细了解一下功能区中的元素:

设置查询格式

单击“设置查询格式”功能区按钮,或使用 SHIFT+ALT+F 设置当前查询的格式。 查询使用制表符进行缩进。 DAX 函数将改为 UPPERCASE,并会添加其他行。 设置 DAX 查询的格式被视为是最佳做法,可提高 DAX 查询可读性。 设置格式时还可以通过折叠和展开查询各部分的方式进行缩进。

Screenshot of the Format query button.

注释和取消注释

单击“注释”功能区按钮,将双反斜杠 (//) 添加到光标所在行或所有选定行的开头。 此操作会注释掉行,当运行 DAX 查询时,将忽略这些行。

单击“取消注释”功能区按钮,移除光标所在的任意行或所有选定行的开头的 //。 它不适用于添加多个行注释表示法的行。

还可以使用 Ctrl+/ 在注释和取消注释之间切换。

Screenshot of the Comment and Uncomment buttons in the DAX query view ribbon.

查找和替换

单击“查找”功能区按钮或使用 Ctrl+F 在 DAX 查询编辑器中搜索文本。 查找包含多个选项,如区分大小写、整字匹配、使用正则表达式,以及循环浏览当前查询的所有匹配项。 还可以单击“查找”框左侧的 V 形进入“替换”。

Screenshot of the find button in the DAX query view ribbon.

单击功能区中的“替换”按钮,或使用 CTRL+H 在 DAX 查询编辑器中搜索和替换文本。 替换也包括多个选项,如保留大小写、一次替换一个或全部替换。

Screenshot of the Replace capability in the DAX query view ribbon.

命令面板

单击“命令面板”功能区按钮或使用 CTRL+ALT+P 打开命令面板框。 可以搜索其他 DAX 查询编辑器操作并查看其关联的键盘快捷方式。

Screenshot of the DAX query view command palette.

命令栏

DAX 查询视图命令栏包含使用 DAX 查询视图时最重要的操作。 “运行”按钮执行 DAX 查询或查询的选定行。 运行查询后的状态将显示在下方的状态栏中。

Screenshot of the DAX query view command bar.

查询运行时,该按钮将变为“取消”按钮,可用于停止正在运行的查询。

Screenshot of the DAX query view cancel.

DAX 查询编辑器

DAX 查询视图包括查询编辑器,可在其中编写和编辑查询。 这不仅仅是一个更大的 DAX 公式栏。 它的功能更强大,与 VS Code 中提供的 DAX 编辑器有很多相似之处。

DAX 查询编辑器具有以下元素:

建议和 Intellisense

键入查询,并在编辑时获取有关建议和 Intellisense 的帮助。

Screenshot of the DAX query editor intellisense.

使用 ENTER 或 TAB 添加突出显示的 Intellisense,或使用 SHIFT+ENTER 或 ALT+ENTER 移动到另一行,而无需添加 intellisense 选项。 单击 ESC 可关闭任何覆盖层。

悬停可查看度量值公式

当 DAX 查询中包含度量值时,可以将鼠标悬停在上面以查看公式、名称和说明。

Screenshot of the hover to see measure formula feature.

单击可查看度量值灯泡快速操作

在没有 DEFINE 语句的查询中,单击 EVALUATE 语句中的度量值将显示快速操作灯泡。 单击“定义”或“使用引用定义”以使用此度量值的公式(带或不带引用度量值 DAX 公式)创建 DEFINE 语句。

使用 CodeLens 更新模型度量值

创建度量值时,使用 DEFINE MEASURE 非常有用。 可以在一个窗口中编辑多个度量值,然后运行查询以查看所有度量值的结果,或者通过特定组(按列划分)仅查看其中某些结果。 无需在报表视图中创建表视觉对象并在度量值公式之间来回切换。 CodeLens 在功能上更进一步,当模型中已存在度量值时它会提供提示,如果不存在度量值,它还可以进行添加。

度量值更新工作流

灯泡快速操作和 CodeLens 可以在完整的工作流中一起使用:

  1. 在度量值的上下文菜单中,选择“快速查询”,然后选择“评估”,以便在新的“查询”选项卡中为你创建查询。
  2. 单击查询中的度量值以定义或使用引用定义,从而添加 DEFINE 语句。
  3. 对度量值进行表达式更新,然后运行 DAX 查询以显示更改。
  4. 如果更改按预期显示,则使用 CodeLens 更新模型:覆盖度量值以将其保存回模型。

以下方法可以更直观地了解工作流:

Diagram of the workflow.

结果网格

运行查询时,结果将显示在“结果”网格中。

Screenshot of the results grid.

如果查询编辑器中有多个 EVALUATE 语句,则可以返回多个结果。 可以使用“结果”下拉列表在各个结果之间切换。 “复制”按钮将整个网格复制为带标题的制表符分隔的表。 可以使用右上角箭头调整网格大小,也可以使用结果网格和查询编辑器之间的边框上的光标进行手动调整。

如果查询导致错误,结果网格会显示该错误。

Screenshot of the error message in the results grid.

复制按钮会将错误发送到剪贴板。 错误的开头指示查询中错误的位置。 在上图中,错误为:

“查询 (4, 23) 无法确定“Sales 2”的值。该列不存在,或者此列没有当前行。”

查询 (4, 23)”表示错误位于第 4 行,第 23 个字符处。

查询选项卡

DAX 查询视图可以有多个查询选项卡,可以重命名或移除这些选项卡。 它们还会显示查询的当前状态。

Screenshot of the Query tabs.

每个选项卡都包含状态指示器:

  • 在运行查询之前,不会显示任何指示器。
  • 绿色选中标记表示查询运行成功。
  • 红叉表示发生了错误。
  • 包含实心方块的圆圈表示查询已取消。
  • 时钟指示查询正在运行。

查询可以在后台运行,使你能够继续处理其他查询选项卡。

保存 DAX 查询

从 Power BI Desktop 保存时,DAX 查询视图查询选项卡将保存在文件中,因此可以在再次打开文件时从离开的位置继续。 如果使用开发人员模式保存 Power BI 项目,则每个查询选项卡将作为 .dax 文件包含在语义模型文件夹的 DAXQueries 文件夹中。 在 Power BI 开发人员模式文档中查看详情。

目前无法在Power BI 服务中查看或编辑 DAX 查询。 报表或语义模型的查看者看不到随语义模型一起保存的 DAX 查询。

“数据”窗格

数据”窗格显示模型中的项,以帮助编写查询。 查询视图中阻止了其中大多数项的编辑路径。

快速查询

数据”窗格上下文菜单包括“快速查询”。 使用快速查询在表、列和度量值的新查询选项卡中创建查询。 快速查询旨在提高常见任务的工作效率,并且可以轻松地进一步修改这些任务。 所有快速查询都是在新查询选项卡中创建的,并且会自动运行。

任何位置

“定义模型中的所有度量值”会创建一个查询,其中包含查询中显示的所有度量值公式。 轻松搜索所有度量值公式。

  • “显示前 100 行”通过使用 SELECTCOLUMNS() 创建查询来显示表的前 100 行。 列显示在每一行中,支持通过注释掉行来轻松修改。 还包含 ORDER BY 以指定排序顺序。

    Screenshot of the show top 100 rows.

  • “显示列统计信息”会创建一个查询,其中显示表中每一列的统计信息。 请参阅多个公式,了解如何将列聚合为 MIN、MAX、AVERAGE、COUNT 等。

  • “定义此表中的所有度量值”会创建一个查询,其中包含查询中显示的此表的度量值公式。

  • “显示数据预览”使用 DISTINCT() 创建查询以查看列的值。

    Screenshot of the show data preview.

  • “显示列统计信息”会创建一个查询,其中显示此特定列的统计信息。 请参阅多个公式,了解如何将列聚合为 MIN、MAX、AVERAGE、COUNT 等。 返回的查询因列的数据类型而异,将显示数字、文本和日期列的不同统计信息。

    Screenshot of the show column preview.

度量值
  • “计算”将创建一个查询以显示度量值的结果。 SUMMARIZECOLUMNS() 用于按列添加任何组,以按特定组(如国家/地区、产品等)显示度量值。

    Screenshot of evaluate measure.

  • “定义和计算”将创建一个查询来显示度量值的结果,并在可修改的 DEFINE 语句中显示度量值的公式。

    Screenshot of the define and evaluate measure.

  • “使用引用定义并计算”将创建一个查询来显示度量值的结果,并且不仅会在可修改的 DEFINE 语句中显示度量值公式,还会显示度量值公式中引用的任何其他度量值。 编辑度量值的完整上下文中的任何部分。

    Screenshot of define with references and evaluate.

从性能分析器获取可视化 DAX 查询

报表视图中的视觉对象将通过创建 DAX 查询从模型获取数据。 可以使用性能分析器在 DAX 查询视图中查看视觉查询。 性能分析器可以让你深入了解视觉对象可能显示意外值的原因,或者只是作为快速启动查询的一种方式来对查询做进一步更改。

在“报表视图”中,转到“优化”功能区,然后单击“性能分析器”。 单击“开始录制”,然后单击“刷新视觉对象”。 在下表中,展开视觉对象以查看用于复制查询或在 DAX 查询视图中运行的选项。 在 DAX 查询视图中单击“运行”获取可视化查询,将其添加为 DAX 查询视图中的新“查询”选项卡,然后运行它。

Screenshot of the visual DAX queries in Performance Analyzer feature.

注意事项和限制

DAX 查询视图目前为预览版。 请记住以下几点:

  • 更新模型:覆盖度量值 CodeLens 会移除 DAX 公式中的注释。
  • 更新模型:覆盖度量值 CodeLens 在只有格式更改时不会显示。
  • 更新模型:覆盖度量值 CodeLens 在出现语法错误时可能会引入其他行。
  • 在 DAX 查询编辑器中输入 500 个以上的行时将出现明显的延迟。
  • 仅当查询选项卡中没有 DEFINE 语句时,才会显示度量值的灯泡快速操作。
  • 设置查询格式会中断 RANKX 函数。
  • 命令面板显示尚不起作用的命令。
  • 查询选项卡尚不允许移动。
  • 结果网格尚未显示具有指定格式的列和度量值,例如货币和千位整数等。
  • 从 Power BI 服务下载此文件不包括在已发布的语义模型中保存的 DAX 查询。
  • 从工作区设置初始 Git 集成不包括在已发布的语义模型中保存的 DAX 查询。 在 Fabric Git 集成了解详情。

还有一些限制需要注意:

  • 每个查询的数据大小最多不超过 15MB。 超过 15MB 后,会完成当前行,但不会写入其他行。
  • 每个查询最多包含 1,000,000 个值。 如果查询 20 列,可以返回最多 50,000 行(100 万行除以 20)。
  • 当度量值超过 500 时,定义此表或模型中的所有度量值不可用。