外部数据源简介
本页面简要介绍了如何查询存储在 BigQuery 外部的数据。
外部数据源是可以直接从 BigQuery 查询的数据源,即使数据未存储在 BigQuery 存储中也是如此。例如,您可能在其他 BigQuery 数据库、Cloud Storage 中的文件或其他云产品中拥有您想在 BigQuery 中分析但不准备迁移的数据。
外部数据源的使用场景包括:
- 对于提取、转换和加载 (ELT) 工作负载,可一次性加载和清理数据,并使用
CREATE TABLE ... AS SELECT
查询将清理后的结果写入 BigQuery 存储空间。 - 将 BigQuery 表与外部数据源中频繁更改的数据联接。通过直接查询外部数据源,您无需在每次数据发生更改时将数据重新加载到 BigQuery 存储。
BigQuery 有两种不同的外部数据查询机制:外部表和联合查询。
外部表
外部表与标准 BigQuery 表类似,因为这些表会将其元数据和架构存储在 BigQuery 存储空间中。但是,其数据位于外部来源中。
外部表包含在数据集中,它与标准 BigQuery 表的管理方式相同。例如,您可以查看表的属性、设置访问权限控制等等。您可以查询这些表,在大多数情况下,您可以将它们与其他表联接起来。
有四种外部表:
- BigLake 表
- BigQuery Omni 表
- 对象表
- 非 BigLake 外部表
BigLake 表
利用 BigLake 表,您可以使用委托访问权限功能来查询外部数据存储区中的结构化数据。委托访问权限功能将对 BigLake 表的访问权限与对底层数据存储区的访问权限分离。与服务账号关联的外部连接用于连接到数据存储区。由于服务账号负责从数据存储区中检索数据,因此您只需授予用户访问 BigLake 表的权限。这样,您就可以在表级层强制执行精细的安全措施,包括行级和列级安全措施。对于基于 Cloud Storage 的 BigLake 表,您还可以使用动态数据遮盖。 如需详细了解将 BigLake 表与 Amazon S3 或 Blob Storage 数据配合使用的多云分析解决方案,请参阅 BigQuery Omni。
如需了解详情,请参阅 BigLake 表简介。
对象表
对象表可让您分析 Cloud Storage 中的非结构化数据。您可以使用远程函数执行分析,或使用 BigQuery ML 执行推理,然后将这些操作的结果与 BigQuery 中的其余结构化数据进行联接。
与 BigLake 表一样,对象表使用访问权限委托功能,将对对象表的访问权限与对 Cloud Storage 对象的访问权限分离开来。与服务账号关联的外部连接用于连接到 Cloud Storage,因此您只需向用户授予访问对象表的权限。这样,您就可以强制执行行级安全措施,并管理用户有权访问哪些对象。
如需了解详情,请参阅对象表简介。
非 BigLake 外部表
利用非 BigLake 外部表,您可以查询外部数据存储区中的结构化数据。如需查询非 BigLake 外部表,您必须拥有外部表和外部数据源的权限。例如,如需查询使用 Cloud Storage 中的数据源的非 BigLake 外部表,您必须拥有以下权限:
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
如需了解详情,请参阅外部表简介。
联合查询
借助联合查询,您可以将查询语句发送到 AlloyDB、Spanner 或 Cloud SQL 数据库,并将结果作为临时表返回。联合查询使用 BigQuery Connection API 与 AlloyDB、Spanner 或 Cloud SQL 建立连接。在查询中,您可以使用 EXTERNAL_QUERY
函数,通过该数据库的 SQL 方言向外部数据库发送查询语句。结果将转换为 GoogleSQL 数据类型。
如需了解详情,请参阅联合查询简介。
外部数据源功能比较
下表比较了外部数据源的行为:
BigLake 表 | 对象表 | 非 BigLake 外部表 | 联合查询 | |
---|---|---|---|---|
使用委托访问权限功能 | 是,通过服务账号 | 是,通过服务账号 | 否 | 是,通过数据库用户账号(仅限 Cloud SQL) |
可以基于多个源 URI | 是 | 是 | 是(仅限 Cloud Storage) | 不适用 |
行映射 | 行代表文件内容 | 行代表文件元数据 | 行代表文件内容 | 不适用 |
可使用连接器通过其他数据处理工具访问 | 是(仅限 Cloud Storage) | 否 | 是 | 不适用 |
可以联接到其他 BigQuery 表 | 是(仅限 Cloud Storage) | 是 | 是 | 是 |
可以作为临时表访问 | 是(仅限 Cloud Storage) | 否 | 是 | 是 |
与 Amazon S3 搭配使用 | 是 | 否 | 否 | 否 |
与 Azure Storage 搭配使用 | 是 | 否 | 否 | 否 |
与 Bigtable 搭配使用 | 否 | 否 | 是 | 否 |
与 Spanner 搭配使用 | 否 | 否 | 否 | 是 |
与 Cloud SQL 搭配使用 | 否 | 否 | 否 | 是 |
支持 Google 云端硬盘 | 否 | 否 | 是 | 否 |
与 Cloud Storage 搭配使用 | 是 | 是 | 是 | 否 |
后续步骤
- 详细了解 BigLake 表。
- 详细了解对象表
- 详细了解外部表。
- 详细了解联合查询。
- 了解 BigQuery 价格。