连接到 Google BigQuery

项目:/looker/docs/studio/_project.yaml 图书:/looker/book-files/studio-guides/_book.yaml

BigQuery 是 Google 推出的全代管式低成本分析数据仓库,可支持 PB 级数据规模。利用 Looker Studio BigQuery 连接器,您可以在 Looker Studio 内访问 BigQuery 表中的数据。

准备工作

如需在 Looker 数据洞察中访问 BigQuery 数据,您需要提供 Google Cloud 结算账号。BigQuery 是一款付费产品,通过 Looker Studio 访问 BigQuery 时可能会产生 BigQuery 使用费。详细了解 BigQuery 价格

如何连接到 BigQuery

您可以将 Looker Studio 连接到 Google BigQuery 中的表、视图或自定义查询。

连接步骤

  1. 登录 Looker 数据洞察。

  2. 点击 创建,然后选择报告

  3. 系统会显示报告编辑器,并打开为报告添加数据面板。

  4. 如需创建新的嵌入式数据源,请选择 BigQuery 连接器

    1. 如需选择现有的可重复使用的数据源,请点击我的数据源标签页,然后选择您之前创建的或与您共享的任何类型的数据源。
  5. 配置数据源连接,以连接到您的 BigQuery 数据。您可以连接到 BigQuery 表或视图,也可以使用自定义 SQL 查询进行连接。

  6. 点击添加

稍后,与数据源关联的表格会显示在报告画布上。

嵌入式数据源与可重复使用的数据源说明

数据源可以是嵌入式,也可以是可重复使用的。报告可以包含嵌入式数据源和可重复使用的数据源。

在修改报告时创建的数据源会嵌入到报告中。如需修改嵌入式数据源,您可以在相应报告中进行修改。借助嵌入式数据源,您可以更轻松地协作处理报告和数据源。任何可以修改报告的人员也可以修改数据源并修改其连接。当您共享或复制报告时,任何嵌入的数据源也会一并共享或复制。

您在首页上创建的数据源可重复使用。您可以在不同的报告中重复使用这些数据源。借助可重复使用的数据源,您可以在整个组织内创建和共享一致的数据模型。只有您与之共享可重复使用的数据源的用户才能修改该数据源。只有数据源凭据的所有者可以修改连接。

详细了解数据源

初次使用 Looker Studio?

使用属性面板更改表格的数据和样式。使用工具栏向报告添加更多图表、控件和其他组件。

了解 Looker Studio

连接到 BigQuery 表或视图

BigQuery 包含按行整理的各条记录。每条记录都由列(也称为字段)组成。BigQuery 视图是由在 BigQuery 控制台中执行的 SQL 查询定义的虚拟表。

如需连接到表或视图,您需要提供以下信息:

  • BigQuery 项目
  • 数据集
  • 表或视图

项目

项目用于整理 BigQuery 资源,并提供结算所需的信息(如果报告超出 BigQuery 的免费配额)。您可以将同一项目用于结算和数据管理,也可以将一个项目用于数据,同时将另一个项目用于结算。详细了解 Google Cloud 项目

选择以下任一选项来选择项目:

  • 近期项目
  • 我的项目
  • 共享项目

近期的项目

近期项目选项会显示您最近在 Google Cloud 控制台中访问过的项目。您也可以手动输入项目 ID。您选择的项目将用于结算和数据访问。选择项目后,您需要选择数据集。

我的项目

借助我的项目选项,您可以选择自己有权访问的任何项目。您也可以手动输入项目 ID。您选择的项目将用于结算和数据访问。选择项目后,您需要选择数据集。

如果您有权访问多个项目,则这些项目可能不会全部显示在列表中。当列表中的项目数量超过上限时,您可以在输入字段中直接输入未列出的项目,以进入该项目。

共享项目

借助共享项目选项,您可以访问与您共享的项目。您可以为数据和结算选择不同的项目。

数据集

数据集用于组织和控制对数据的访问权限。从列表中选择数据集,或按名称搜索数据集。

公共数据集

BigQuery 公共数据集是公开的示例,其中数据集是共享的,但项目不是。如需查询此数据,您必须指定自己的结算项目,该项目将用于结算共享数据的处理费用。

您可以将 Looker 数据洞察数据源连接到单个表或视图。

连接到日期分区表

Looker Studio 可以利用 BigQuery 的按日期分区的表。当您连接到按 DATEDATETIMETIMESTAMP 字段分区的表时,Looker Studio 可以将该字段用作基于此数据源的图表的日期范围维度。如需启用此选项,请选中数据源连接页面配置列中显示的将字段名称用作日期范围维度复选框。

如果 BigQuery 中的分区表需要分区过滤条件,系统会默认选中将字段名用作日期范围维度复选框,并且无法取消选中。

详细了解 BigQuery 中的日期分区表

使用自定义 SQL 查询连接到 BigQuery

借助自定义查询选项,您可以通过编写 SQL 来连接到数据。自定义查询语法遵循标准 SQL 方言。如需使用旧版 BigQuery SQL 方言,请选择使用旧版 SQL 选项。

使用 BigQuery 界面撰写并测试查询,然后将该查询复制并粘贴到 Looker Studio 自定义查询框中。

结算项目

借助结算项目选项,您可以通过搜索或手动输入项目 ID 来为自定义查询提供结算项目。如果您的组织有许多 BigQuery 项目,您可能需要使用手动输入方法来找到相应项目。

如需使用一个项目进行结算,并使用另一个项目来存储数据,请在界面中选择或输入结算项目,然后在自定义查询的 SELECT...FROM 子句中添加数据项目。

BigQuery 自定义查询配置示例,其中结算项目设置为 Looker Studio 项目,而查询的 FROM 子句中指定了 BigQuery 公共数据集。

查询参数

借助参数,您可以制作更灵活、更可自定义的报告。您可以在 BigQuery 数据源中将参数传递回底层查询。如需在自定义查询中使用参数,请遵循 BigQuery 中运行参数化查询的语法指南。

详细了解如何在自定义查询中使用参数

自定义查询的限制

Looker Studio 会将您的自定义 SQL 用作所生成的每个数据库查询的内部 SELECT 语句。实际上,您的自定义查询会生成一个新的虚拟表,然后 Looker Studio 会使用其生成的“外部”SQL 查询该表。因此,Looker Studio 中的自定义查询会受到以下几项限制:

自定义 SQL 查询只能包含一条语句

例如,以下代码无法正常运行,因为它包含多条 SQL 语句:


DECLARE cost_per_tb_in_dollar FLOAT64 DEFAULT 4.2;

SELECT total_bytes_billed / (1024 * 1024)* cost_per_tb_in_dollar)/(1024*1024))) FROM billing-table;

在联接中使用明确的字段名称

自定义联接查询无法处理重复的列名称。如果图表使用的数据源基于包含重复字段的自定义查询,则会返回类似于以下内容的用户配置错误:

错误消息文本:用户配置错误

为避免此问题,请务必在自定义查询中使用明确的字段名称。

例如,假设您要联接两个具有相同架构的表,并根据这两个表中都有的 Criteria_ID 字段进行联接。


    SELECT * FROM (
          SELECT Criteria_ID, Parent_ID, Name FROM 'table_1'
            ) As table_1
          LEFT JOIN (
            SELECT Criteria_ID, Parent_ID, Name FROM 'table_2'
            ) As table_2
          ON
            table_1.Criteria_ID = table_2.Criteria_ID

此查询包含以下重复的列名称:

  • Criteria_ID
  • Parent_ID
  • Name

为避免出现 Field is ambiguous 错误,您可以使用 AS 关键字明确重命名重复的字段:


    SELECT *
          FROM (
            SELECT
              Criteria_ID AS Criteria_ID_1,
              Parent_ID AS Parent_ID_1,
              Name AS NAME_1
           FROM
             'table_1' ) AS table_1
           LEFT JOIN (
             SELECT
               Criteria_ID AS Criteria_ID_2,
               Parent_ID AS Parent_ID_2,
               Name AS NAME_2
             FROM
               'table_2' ) AS table_2
             ON
               table_1.Criteria_ID_1 = table_2.Criteria_ID_2;

如果您只需要重命名几个字段,可以选择除要重命名的字段之外的所有字段,例如:


SELECT * EXCEPT (city), city AS city_1 FROM 'table_1'

查询超时

Looker Studio 中的自定义查询可能会在 3 到 5 分钟后超时。如果自定义查询超时,请尝试以下方法来解决问题:

  • 简化查询,以便更快地运行。
  • 在数据库中运行查询,并将结果存储在单独的表中。然后,连接到数据源中的相应表。

多天表格

BigQuery 支持跨多个表执行查询,其中每个表都包含一天的数据。表格的格式为 YYYYMMDD。当 Looker Studio 遇到格式为 YYYYMMDD 的表时,该表将被标记为多日表,并且在表选择中仅显示名称前缀_YYYYMMDD。

创建图表以直观呈现此表时,Looker Studio 会自动创建过去 28 天的默认日期范围,然后正确查询过去 28 个表。您可以配置此设置,方法是修改报告、选择图表,然后在图表的数据标签页中调整日期范围属性。

查看向 BigQuery 发出的 SQL

您可以在 BigQuery 查询历史记录界面中查看 Looker 数据洞察生成的所有 BigQuery SQL。

“记录数”指标

BigQuery 数据源会自动提供默认的记录数指标。您可以使用此功能细分维度,以显示图表汇总的记录数。

支持 VPC Service Controls

Looker Studio 可以通过基于查看者 IP 的访问权限级别连接到受 VPC Service Controls (VPC-SC) 边界保护的 BigQuery 项目。BigQuery 连接器会将报告查看者的 IP 地址传递给 BigQuery,然后 BigQuery 可以强制执行已设置的任何基于 IP 的访问权限级别。

直观呈现 BigQuery GEOGRAPHY 多边形

您可以在报告中使用 Google 地图可视化图表显示 GEOGRAPHY 多边形。如需查看相关教程,请参阅使用 Looker 数据洞察直观呈现 BigQuery GEOGRAPHY 多边形

使用作业标签分析 Looker Studio 查询

Looker 数据洞察发送到 BigQuery 的所有查询都带有 BigQuery 作业标签 requestor:looker_studio。您可以使用此作业标签来识别与 Looker Studio 相关的 BigQuery 查询。如需详细了解 BigQuery 中的标签,请参阅 查看标签 BigQuery 文档页面。

如果您是 BigQuery 数据源的所有者,还可以点击 Powered by BigQuery 图标来查看作业详情。

如需详细了解如何跟踪 Looker 数据洞察图表和报告的性能和费用,请参阅 使用 Looker 数据洞察分析数据 BigQuery 文档页面。

BigQuery 对话框

如果您拥有 BigQuery 数据源的所有者凭据,Looker Studio 会在任何使用 BigQuery 的图表的右上角显示 BigQuery 图标。将鼠标悬停在图表上,然后点击 BigQuery 图标以打开 BigQuery 对话框。该对话框会显示指向 BigQuery 作业详情页面的链接。BigQuery 作业详情页面包含以下信息:

  • 图表的 SQL 查询
  • SQL 查询返回的数据
  • 查询步骤的阶段细分
  • 查询统计信息,例如总运行时和使用的槽数

使用 BigQuery Storage Read API 提升性能

对于使用分页结果的查询,启用 BigQuery Storage Read API 可以缩短查询时间。当使用 Storage Read API 可以缩短查询运行时长时,Looker Studio 会自动使用该 API。

如需启用 BigQuery Storage Read API,请向连接到 Looker 数据洞察的 BigQuery 用户授予以下权限:

  • bigquery.readsessions.create
  • bigquery.readsessions.getData

配额和一般限制

使用 BigQuery 连接器可返回的行数上限为 200 万行。当数据行数超过 200 万时,Looker Studio 会发出指示,但不会指定行数。

此外,BigQuery 数据源与 BigQuery 本身一样,受相同的速率限制和配额限制约束。

对于 BigQuery 数据源,MEDIAN 是使用 BigQuery APPROX_QUANTILES 函数实现的。对来自 BigQuery 的数据应用 MEDIAN 可能会返回与对来自其他数据源类型的相同数据应用 MEDIAN 略有不同的结果。