概要
| 项 | DESCRIPTION |
|---|---|
| 发布状态 | Beta 版 |
| 支持的产品 | Power BI (语义模型) Power BI (数据流) Fabric(Dataflow Gen2) |
| 支持的身份验证类型 | 适用于所有 Power BI Desktop、 带网关的 Power Query Online 和 Power Query Online 的基本(用户名/密码) |
| 功能参考文档 |
直接查询函数支持 Power Query M 函数参考 |
先决条件
支持的功能
- 导入模式
- 直接查询模式 (Power BI 语义模型)
- 本机 Mongo 查询
从 Power Query Desktop 连接到 Azure Cosmos DB for MongoDB vCore 数据库
若要从 Power Query Desktop 连接到 Azure Cosmos DB for MongoDB vCore,请执行以下步骤:
在“获取数据”体验中选择 Azure Cosmos DB for MongoDB vCore。 Power Query Desktop 中的 “获取数据” 体验因应用而异。 要详细了解应用的 Power Query Desktop“获取数据”体验,请转到“获取数据的位置”。
在 Azure Cosmos DB for MongoDB vCore 中,输入 Cosmos DB 终结点。 (可选)提供数据库名称和集合名称。 如果未提供数据库名称,则即将到来的 导航器 屏幕将显示所有数据库及其各自的集合。 同时指定数据库和集合名称仅显示该集合。 指定没有数据库名称的集合名称会导致连接错误。
选择 “导入 ”或“ DirectQuery 数据连接”模式。
选择“确定”。
如果第一次连接到此数据库,请在选择 “连接”之前输入用户名和密码。
在 导航器中,选择所需的数据库信息。 集合列表显示在每个数据库下。 选择一个或多个集合,然后选择“ 加载 ”以加载数据或 转换数据 以继续在 Power Query 编辑器中转换数据。 如果以前提供了可选的数据库名称和集合名称,则数据库和集合列表将受到影响。
从 Power Query Online 连接到 Azure Cosmos DB for MongoDB vCore 数据库
若要从 Power Query Online 连接到 Azure Cosmos DB for MongoDB vCore 数据库,请执行以下作:
在获取数据体验中选择 Azure Cosmos DB for MongoDB vCore 选项。 不同的应用可以通过不同的方式访问 Power Query Online 来获取数据体验。 要详细了解如何从应用访问 Power Query Online 获取数据体验,请转到“获取数据的位置”。
在显示的 Azure Cosmos DB for MongoDB vCore 对话框中,输入 Cosmos DB 终结点。 (可选)提供数据库名称和集合名称。 如果未提供数据库名称,则即将到来的 导航器 屏幕将显示所有数据库及其各自的集合。 同时指定数据库和集合名称仅显示该集合。 指定没有数据库名称的集合名称会导致连接错误。
可以选择现有的连接或数据网关。 可以通过在 连接凭据 部分指定与终结点关联的用户名和密码的基本身份验证类型进行连接,然后选择“ 下一步”。
选择要导入和使用的一个或多个表,然后选择“转换数据”以在 Power Query 编辑器中转换数据。
本机 Mongo 查询
自定义 Value.NativeQuery 函数允许将本机 MongoDB 查询发送到数据源。 以下示例演示如何在最初加载数据时使用函数创建表。 但是,只要“转换数据”选项可用,就可以随时使用此功能。
本机 Mongo 查询 仅在 直接查询 模式下受支持。
使用导航器,选择至少一个集合并选择 “转换数据”。
选择 “高级编辑器”。 “ 高级编辑器 ”对话框显示将用于提取所选集合中的所有数据的初始查询。
Value.NativeQuery 函数采用两个参数:源和查询本身。 该
source变量使用连接到数据库所需的所有信息进行填充。 如果需要,请更新查询所针对的集合的名称。 集合不必与 导航器中选择的集合相同。第二个参数是有效的 MongoDB 查询,用双引号括起来。 查询中的引号将使用另一个引号进行转义,例如,
"num1"转义为""$num1""选择 “完成” 以转换数据。
由于执行查询后不会从 Cosmos DB 返回任何架构信息,因此结果表会将所有列类型标识为 任何列类型。 使用 检测数据类型 转换列,或者手动更改感兴趣的列的数据类型。 如果需要,请更新结果表的名称。
Power Query 编辑器关闭并应用更改后,生成的表将显示在“数据”窗格中。
直接查询支持
直接查询 支持以下 Power Query 函数:
-
Date.From、DateTime.From、DateTimeZone.From、Date.Day、Date.DayOfWeek、Date.DayOfYear、Date.Month、Date.WeekOfYear、Date.Year -
List.Average、List.Contains、List.First、List.Last、List.Max、List.Min、List.Sum -
Int64.From、Currency.From、Percentage.From、Text.From、Logical.From、Logical.FromText、Logical.ToText -
Number.Abs、Number.Mod、Number.Round、Number.RoundAwayFromZero、Number.RoundDown、Number.RoundTowardZero、Number.RoundUp Table.RowCount-
Time.Hour、Time.Minute、Time.Second -
Value.Add、Value.Divide、Value.Equals、Value.Multiply、Value.NullableEquals、Value.Subtract
故障排除和限制
由于尚不支持 Power Query 文本函数,因此在“直接查询”模式下转换数据时,两者均不在列中使“文本筛选器”。
- 此类筛选器的示例: 以开头、 结尾、 包含等。
- 出现类似于 不支持的操作错误消息:函数调用不受支持:“Text.StartsWith”
由于并非所有 Power Query 函数在使用 直接查询时都受支持,请切换到 导入模式 或发出 本机 Mongo 查询 ,以完成一个或多个缺少的 Power Query 函数的意图。
使用 本机 Mongo 查询时不返回架构信息。 所有列都被视为
any,需要手动转换为所需的数据类型。自定义
Value.NativeQuery函数仅采样从查询返回的第一个文档,以便构造结果表。 结果是,如果后续文档中有更多的字段,则这些字段不会包含在结果表中。 项目特定的列或查询特定的补偿视图。自定义
Value.NativeQuery函数只能与 直接查询 一起使用,而不能用于 导入模式。在应用内置筛选器时,Power BI 会从日期类型中删除毫秒数。 因此,如果某个日期类型包含毫秒,则这些内置筛选器不起作用。
Date.From、DateTime.From和DateTimeZone.From负 OLE 时间(从 1899 年 12 月 30 日开始的日期)无效。DateTimeZone.From使用 Power BI 函数会导致 Cosmos DB 服务器发生 (400):请求错误”,因为未将dateFromString功能添加到 Cosmos DB for MongoDB。不支持包含特殊字符的字段名称(例如,
$、.,@等等)。遇到除以 0 的情况时,使用直接查询的查询将失败。 它不同于通常
#infinity的 Power BI 结果,但与 MongoDB 行为保持一致。以下数据类型当前被视为字符串。 因此,使用这些数据类型的值不能用于直接查询中的筛选,因为下推失败:
- decimal128
- regularExpression
- 时间戳
对于要在 Power BI 中使用的任何字段,建议确保字段位于集合中的每个文档中。 它可确保它始终显示在 Power BI 中。