Azure 数据资源管理器是一项快速且高度可缩放的数据探索服务,适用于日志和遥测数据。 Power BI 是一种业务分析解决方案,可以用来可视化数据,并在组织内共享结果。 使用动态 M 参数,可以创建 Power BI 报表,使查看者能够使用筛选器或切片器来设置 KQL 查询参数的值。
本文将以一个新的 Power BI 项目开始,并使用示例数据创建一个报表,该报表使用切片器筛选链接到 KQL 函数的动态 M 查询中的数据。
若要完成本文,需要满足以下条件:
- 用于登录到帮助群集的 Microsoft 帐户或 Microsoft Entra 用户标识。
- Power BI Desktop(选择“免费下载”)
- 启用动态 M 查询参数
首先,为 Power BI 设置一个连接器。
在 Power BI Desktop 的“主页”选项卡上选择“获取数据”,然后选择“更多”。
搜索“Azure 数据资源管理器”,选择“Azure 数据资源管理器”,然后选择“连接”。
在连接器屏幕上,使用以下信息填写窗体。
设置 “值” 字段说明 群集 https://help.chinaeast2.kusto.chinacloudapi.cn 帮助群集的 URL。 其他群集的 URL 采用 https://<ClusterName>.<Region>.kusto.chinacloudapi.cn 格式。 数据库 留空 托管在要连接到的群集上的数据库。 我们会在后面的步骤中选择此项。 表名称 留空 数据库中的一个表,或者类似 StormEvents | take 1000
的查询。 我们会在后面的步骤中选择此项。高级选项 留空 查询选项,例如结果集大小。 数据连接模式 DirectQuery 确定 Power BI 是导入数据还是直接连接到动态 M 查询。 备注
在导入模式下,数据将移到 Power BI。 在 DirectQuery 模式下,直接从群集查询数据。
在以下情况下使用导入模式:
- 数据集很小。
- 不需要接近实时的数据。
- 数据已聚合,或在 Kusto 中执行聚合
在以下情况下使用 DirectQuery 模式:
- 数据集非常大。
- 需要接近实时的数据。
高级选项
设置 示例值 字段说明 限制查询结果记录数 300000
结果中返回的最大记录数 限制查询结果数据大小 4194304
结果中返回的最大数据大小(以字节为单位) 禁用结果集截断 true
可以通过使用 notruncation 请求选项来启用/禁用结果截断 附加的 set 语句 set query_datascope=hotcache
设置查询持续时间的请求属性。 请求属性控制查询的执行方式并返回结果。 如果还没有连接到帮助群集,请登录。 使用组织帐户登录,然后选择“连接”。
在“导航器”屏幕上,执行以下操作:
- 展开 Samples 数据库。
- 选择 EventsByStates 函数。
- 对于 EventTypeParam,输入 High Wind,然后选择“应用”以预览数据。
- 选择“转换数据”。
函数在 Power Query 编辑器中作为动态 M 查询打开,我们将在其中继续创建用于动态 M 查询的参数。
备注
EventsByStates 函数是一个只读示例函数,可用于测试动态 M 查询参数的功能。 它定义支持多个并选择参数的所有值的最终版本。 如果要在你自己的群集中测试单一选择功能并逐步测试该功能,那么可以从以下函数的单一选择定义开始。
.create-or-alter function EventsByStates (EventTypeParam:string) { StormEvents | where EventType == EventTypeParam | summarize Events=count() by EventType, State }
在 Power Query 编辑器中,执行以下操作:
选择“管理参数”>“新建参数”。
填写以下信息,然后选择“确定”。
设置 建议值 说明 名称 Type_Param 参数的名称。 建议添加后缀(如 _Param),以便轻松识别该后缀,并将其与你可能创建的其他参数区别开来。 类型 文本 参数的类型。 参数的类型必须与 KQL 函数中声明的类型匹配。 Power BI 中的文本等效于 KQL 中的字符串。 当前值 High Wind 参数值。 必须为此字段提供默认值。
返回“导航”屏幕,将 M 函数的参数值替换为新参数。
(可选)重复这些步骤以创建更多参数,并将其替换为动态 M 查询中的参数。
创建包含报表切片器值的表。
备注
该表将列出要筛选的事件类型。 可以导入表或创建新表并手动输入数据。
在“主页”选项卡上,选择“最近使用的源”,然后选择帮助群集。
在“导航器”屏幕上,展开 Samples 数据库,选择“StormEvents”,然后选择“确定”。
在“连接设置”对话框中,选择“导入”,然后选择“确定”。
右键单击 EventType 列,然后选择“删除其他列”。
再次右键单击 EventType 列,然后选择“删除重复项”。
(可选)添加另一列以定义切片器值的排序顺序。
将表重命名为 SlicerValues。
在“主页”选项卡上,选择“关闭并应用”。
备注
出现有关安全风险的对话框警告。 单击 “确定” 继续。 显示对话框的原因是 Power BI 正在添加第二个数据源。 有关详细信息,请参阅 Power BI Desktop 隐私级别。 但是,此示例中的数据源使用方式是绝对安全的。
将 SlicerValues 表中的 EventType 列绑定到参数。
- 选择左侧的“模型”视图。
- 在 SlicerValues 表中,选择 EventType 列。
- 在“属性”窗格中,展开“高级”。
- 在“绑定到参数”下,选择 Type_Param。 这会将 EventType 列绑定到参数。
备注
出现有关安全风险的对话框警告。 单击“继续”以继续。 显示对话框的原因是 Power BI 源正在向另一个源发送数据。 有关详细信息,请参阅 Power BI Desktop 隐私级别。 但是,此示例中的参数使用方式是绝对安全的。
Power BI Desktop 中有了数据以后,即可创建基于该数据的报表。 你将创建一个简单的报表,其中包含一个表和一个切片器,前者按状态显示事件摘要,后者用于按事件类型筛选表。
选择左侧的“报表”视图。
将表添加到报表中。
- 在“可视化效果”窗格中,选择“表”。 向报表画布添加一个空白表。
- 在“字段”窗格中,展开 EventsByStates,然后选择“状态”和“事件”。 现在,你有一个表,其中按状态显示事件摘要。
将切片器添加到报表。
- 在“可视化效果”窗格中,选择“切片器”。 向报表画布添加一个空白切片器。
- 在“字段”窗格中,展开 SlicerValues,然后选择 EventType。 现在,你有一个显示事件类型的切片器。
报表现已准备就绪,可供查看。 请注意,在切片器中选择事件类型值时,基于 M 查询的表将按绑定到 M 查询参数的事件类型进行筛选。
保存报告。
如果要筛选切片器中的多个参数值,可通过调整 EventType 列的属性并修改 KQL 函数来实现此目的,如下所示:
调整 SlicerValues 表中的 EventType 列的属性。
- 选择左侧的“模型”视图。
- 在 SlicerValues 表中,选择 EventType 列。
- 在“属性”窗格中,展开“高级”,然后打开“多选”设置。
修改 KQL 函数,将参数类型设置为动态,并更改条件
where
以检查参数值列表。.create-or-alter function EventsByStates (EventTypeParam:dynamic) { StormEvents | where EventType in (EventTypeParam) | summarize Events=count() by EventType, State }
现在可返回到报表,在切片器中选择多个事件类型。
如果要筛选切片器中的所有参数值,可通过调整 EventType 列的属性,修改 KQL 函数并更新切片器控制来实现此目的,如下所示:
调整 SlicerValues 表中的 EventType 列的属性。
- 选择左侧的“模型”视图。
- 在 SlicerValues 表中,选择 EventType 列。
- 在“属性”窗格中,展开“高级”,然后打开“全选”设置。
- (可选)更改“选择所有值”设置。 在此示例中,需要使用默认值“全选”。
更新切片器控制以显示“全选”选项。
- 选择左侧的“报表”视图。
- 选择 EventType 切片器。
- 在“可视化效果”窗格中,选择“格式”,展开“选择控制”,然后开启“显示‘全选’选项”设置。 事件类型切片器在列表顶部显示“全选”选项。
修改 KQL 函数,将参数类型设置为动态,并更改
where
条件以检查“全选”值或参数值列表。.create-or-alter function EventsByStates (EventTypeParam:dynamic) { StormEvents | where ("__SelectAll__" in (EventTypeParam)) or (EventType in (EventTypeParam)) | summarize Events=count() by EventType, State }
现在可返回到报表,在切片器中选择所有事件类型。
使用动态 M 查询参数时,需要考虑以下注意事项和限制:
- 单个参数不能绑定到多个字段,反之亦然。
- 不支持以下参数类型:
- 任意
- Duration
- True/False
- 二进制
- 不支持以下筛选器:
- 相对时间切片器或筛选器
- 相对日期
- 层次结构切片器
- 多字段包含筛选器
- 排除筛选器/非筛选器
- 交叉突出显示
- 向下钻取筛选器
- 交叉钻取筛选器
- 前 N 个筛选器
如果不再需要为本文创建的报表,请删除 Power BI Desktop (.pbix) 文件。