Google BigQuery

总结

项目 说明
发布状态 正式版
产品 Power BI(语义模型)
Power BI(数据流)
Fabric(数据流 Gen2)
Power Apps(数据流)
Customer Insights(数据流)
支持的身份验证类型 组织帐户
服务帐户

注意

由于部署计划和特定于主机的功能,某些功能可能只存在于一个产品中。

注意

自 2021 年 7 月起,Google 停止支持从嵌入式浏览器框架登录到 Google 帐户。 由于此更改,需要将 Power BI Desktop 版本更新到 2021 年 6 月或更高版本,才能支持登录到 Google。

先决条件

需要有 Google 帐户或 Google 服务帐户才能登录到 Google BigQuery。

支持的功能

  • 导入
  • DirectQuery(Power BI 语义模型)

从 Power Query Desktop 连接到 Google BigQuery 数据

要从 Power Query Desktop 连接到 Google BigQuery,请执行以下步骤:

  1. 在“获取数据”体验中选择“Google BigQuery” 。 Power Query Desktop 中的“获取数据”体验因应用而异。 要详细了解适用于你的应用的 Power Query Desktop“获取数据”体验,请转到在何处获取数据

  2. 如果要使用任何高级选项,请选择高级选项。 否则,选择确定继续。 详细信息:使用高级选项进行连接

    显示带有高级选项选择的初始对话框的图像。

  3. Google BigQuery 连接器支持通过组织帐户或服务帐户登录进行连接。 在此示例中,将使用组织帐户登录。 选择登录继续。

    登录 Google BigQuery。

    还可以使用 Google 服务帐户登录。 在这种情况下,选择服务帐户登录 ,然后输入服务帐户电子邮件和服务帐户 JSON 密钥文件内容。 然后选择“连接” 。

  4. 此时会显示使用 Google 登录对话框。 选择 Google 帐户并批准连接到 Power BI Desktop。

    登录 Google。

  5. 登录后,选择连接继续。

    连接到 Google BigQuery 数据。

  6. 成功连接后,将出现导航器窗口,其中显示服务器上可用的数据。 在导航器中选择数据。 然后选择转换数据以在 Power Query 中转换数据,或选择加载以在 Power BI Desktop 中加载数据。

    Power Query 导航器将 Google BigQuery 数据加载到桌面应用的图像。

从 Power Query Online 连接到 Google BigQuery 数据

要从 Power Query Online 连接到 Google BigQuery,请执行以下步骤:

  1. 在“获取数据”体验中选择“Google BigQuery”选项。 不同的应用通过不同的方式来使用 Power Query Online“获取数据”体验。 要详细了解如果从你的应用访问 Power Query Online“获取数据”体验,请转到在何处获取数据

    “获取数据”对话框的屏幕截图,其中重点介绍 Google BigQuery 连接器。

  2. Google BigQuery 数据库对话框中,可能需要创建新连接或选择现有连接。 如果使用的是本地数据,请选择本地数据网关。 然后选择登录

    登录对话框的图像。

  3. 此时会显示使用 Google 登录对话框。 选择 Google 帐户并批准连接。

    注意

    虽然登录对话框显示登录后将继续使用 Power BI Desktop,但会改为定向到联机应用。

    Google 登录对话框的图像。

  4. 如果要使用任何高级选项,请选择高级选项。 详细信息:使用高级选项进行连接

  5. 登录后,选择下一步继续。

    用户已成功登录的图像。

  6. 成功连接后,将出现导航器窗口,其中显示服务器上可用的数据。 在导航器中选择数据。 然后选择下一步以在 Power Query 中转换数据。

    Power Query 导航器将 Google BigQuery 数据加载到在线应用的图像。

使用高级选项进行连接

Power Query Desktop 和 Power Query Online 都提供一组高级选项,可以根据需要将其添加到查询中。

显示 Power Query 桌面中可用的高级选项。

下表列出了可以在 Power Query Desktop 和 Power Query Online 中设置的所有高级选项。

高级选项 说明
计费项目 ID Power Query 将对其运行查询的项目。 权限和计费与此项目相关联。 如果未提供计费项目 ID,则默认情况下将使用 Google API 返回的第一个可用项目。
使用 Storage API 一个标志,它允许使用 Google BigQuery Storage API。 默认情况下,此选项为 true。 此选项可以设置为 false,以不使用 Storage API,而是使用 REST API。
连接超时持续时间 标准连接设置(以秒为单位),用于控制 Power Query 等待连接完成的时间。 如果连接在 15 秒(默认值)之前未完成,则可以更改此值。
命令超时持续时间 Power Query 等待查询完成并返回结果的时间。 默认值取决于驱动程序默认值。 可以输入另一个值(以分钟为单位),使连接保持打开更长时间。
项目 ID 要在其中运行本机查询的项目。 此选项仅在 Power Query Desktop 中可用。
SQL 语句 有关信息,请参阅使用本机数据库查询从数据库导入数据。 在此版本的本机数据库查询功能中,需要使用格式 Database.Schema.Table 的完全限定表名,例如 SELECT * FROM DEMO_DB.PUBLIC.DEMO_TABLE。 此选项仅在 Power Query Desktop 中可用。

选择所需的高级选项后,在 Power Query Desktop 中选择确定,或在 Power Query Online 中选择下一步,以连接到 Google BigQuery 数据。

限制和注意事项

本节介绍 Google BigQuery 连接器的任何限制或注意事项。

在 Power BI Desktop 中连接到 Google BigQuery

将 Google BigQuery 连接器与 Power BI 配合使用时,需要牢记一些限制和注意事项。

连接器可用性

Power BI Desktop 和 Power BI 服务中提供了 Google BigQuery 连接器。 在 Power BI 服务中,可以使用从 Power BI 到 Google BigQuery 的云到云连接访问连接器。

“访问被拒绝”错误。

尝试从 Power BI Desktop 连接到 Google BigQuery 时,可能会收到以下错误消息:

Datasource.Error: ODBC: ERROR [HY000][Microsoft][BigQuery] (100) Error interacting with REST API: Access Denied: Project <project name>: The user <user name> bigquery.jobs.create permissions in project <project name>.

在这种情况下,可能需要在 Power Query 连接设置计费项目高级选项中输入计费项目 ID。

此外,如果还使用网关在 Power BI 服务中创建报告,则仍可能会收到此错误。 在这种情况下,必须使用 Power Query 编辑器或 Power Query 编辑栏在连接的 M 代码中手动包含计费项目 ID。 例如:

Source = GoogleBigQuery.Database([BillingProject="Include-Billing-Project-Id-Here"])

嵌套字段

为了优化性能注意事项,Google BigQuery 在非规范化、平展和嵌套时能很好地处理大型数据集。

Google BigQuery 连接器支持嵌套字段,这些字段以 JSON 格式加载为文本列。

Google BigQuery 嵌套字段支持。

用户应选择转换数据 ,然后使用 Power Query 编辑器中的 JSON 分析功能提取数据。

  1. 转换功能区选项卡下,选择文本列类别,选择分析,然后选择 JSON
  2. 使用展开列选项提取 JSON 记录字段。

设置 Google 服务帐户

有关设置或使用 Google 服务帐户的详细信息,请转到 Google 文档中的创建和管理服务帐户密钥

通过 Google 服务帐户进行身份验证

在 Power BI Desktop 中通过 Google 服务帐户进行身份验证时,连接器需要特定的凭据格式。

  • 服务帐户电子邮件:必须采用电子邮件格式
  • 服务帐户 JSON 密钥文件内容:下载此 JSON 密钥后,必须从文件中删除所有新行,以便内容位于一行中。 JSON 文件采用该格式后,可以将内容粘贴到此字段中。

在 Power BI 服务或 Power Query Online 中通过 Google 服务帐户进行身份验证时,用户需要使用“基本”身份验证。 用户名字段映射到上面的服务帐户电子邮件字段,密码字段映射到上面的服务帐户 JSON 密钥文件内容字段。 在 Power BI Desktop、Power BI 服务和 Power Query Online 中,每个凭据的格式要求保持不变。

无法使用 Google BigQuery Storage API 进行身份验证

默认情况下,Google BigQuery 连接器使用 Google BigQuery Storage API。 此功能由名为 UseStorageApi 的高级选项控制。 如果使用精细权限,则此功能可能会出现问题。 在此场景中,可能会看到以下错误消息,或无法从查询中获取任何数据:

ERROR [HY000] [Microsoft][BigQuery] (131) Unable to authenticate with Google BigQuery Storage API. Check your account permissions

通过正确调整 BigQuery Storage API 的用户权限,可以解决此问题。 需要这些存储 API 权限才能使用 BigQueryStorage API 正确访问数据:

  • bigquery.readsessions.create:通过 BigQuery Storage API 创建新的读取会话。
  • bigquery.readsessions.getData:通过 BigQuery Storage API 从读取会话读取数据。
  • bigquery.readsessions.update:通过 BigQuery Storage API 更新读取会话。

这些权限通常在 BigQuery.User 角色中提供。 有关详细信息,请参阅 Google BigQuery 预定义角色和权限

如果上述步骤无法解决问题,可以禁用 BigQuery Storage API。

无法在直接查询模式下使用 DateTime 类型数据

存在一个已知问题,即通过直接查询不支持 DateTime 类型。 选择具有 DateTime 类型的列将导致“查询无效”错误或视觉对象错误。

要查询的列名与表名相同时的限制

如果要查询的列名与表名相同,BigQuery 会将该列解释为 struct,其中包含表中的所有列而不是指定的列。 例如,SELECT debug FROM dataset.debug 会返回一个 struct,其中包含调试表中的所有列,而不是指定的调试列。 此行为通常并不直观,正在调查修正方案。 有三种解决方法可用:

  • 解决方法 1:使用与列名不冲突的视图包装表—CREATE VIEW dataset.new_view AS SELECT * FROM dataset.debug
  • 解决方法 2:重命名列以避免与表名冲突—ALTER TABLE dataset.debug RENAME COLUMN debug to new_debug
  • 解决方法 3:更改 SELECT 查询以使用 table.column 来引用冲突列—SELECT debug.debug FROM dataset.debug