将 DuckDB 与 Google BigQuery 集成,允许直接查询和管理 BigQuery 数据集
维护者: hafenkran
安装和加载
INSTALL bigquery FROM community;
LOAD bigquery;
示例
-- Attach to your BigQuery Project
D ATTACH 'project=my_gcp_project' AS bq (TYPE bigquery, READ_ONLY);
-- Show all tables in all datasets in the attached BigQuery project
D SHOW ALL TABLES;
┌──────────┬──────────────────┬──────────┬──────────────┬───────────────────┬───────────┐
│ database │ schema │ name │ column_names │ column_types │ temporary │
│ varchar │ varchar │ varchar │ varchar[] │ varchar[] │ boolean │
├──────────┼──────────────────┼──────────┼──────────────┼───────────────────┼───────────┤
│ bq │ quacking_dataset │ duck_tbl │ [i, s] │ [BIGINT, VARCHAR] │ false │
| bq | barking_dataset | dog_tbl | [i, s] | [BIGINT, VARCHAR] │ false |
└──────────┴──────────────────┴──────────┴──────────────┴───────────────────┴───────────┘
-- Select data from a specific table in BigQuery
D SELECT * FROM bq.quacking_dataset.duck_tbl;
┌───────┬────────────────┐
│ i │ s │
│ int32 │ varchar │
├───────┼────────────────┤
│ 12 │ quack 🦆 │
│ 13 │ quack quack 🦆 │
└───────┴────────────────┘
关于 bigquery
DuckDB BigQuery 扩展将 DuckDB 与 Google BigQuery 集成,允许直接查询和管理 BigQuery 数据集。有关详细的设置和使用说明,请访问扩展存储库。
新增函数
函数名 | 函数类型 | 描述 | 注释 | 示例 |
---|---|---|---|---|
bigquery_attach | 表 | 附加到 BigQuery 项目。 | NULL | [ATTACH 'project=my_gcp_project' as bq (TYPE bigquery);] |
bigquery_scan | 表 | 直接从 BigQuery 扫描单个表。 | NULL | [SELECT * FROM bigquery_scan('my_gcp_project.quacking_dataset.duck_tbl');] |
bigquery_arrow_scan | 表 | 直接从 BigQuery 扫描单个表(更高效的重新实现)。 | NULL | [SELECT * FROM bigquery_arrow_scan('my_gcp_project.quacking_dataset.duck_tbl');] |
bigquery_query | 表 | 在 BigQuery 中运行自定义 GoogleSQL 查询并读取结果。 | NULL | [SELECT * FROM bigquery_query('bq', 'SELECT * FROM quacking_dataset.duck_tbl WHERE duck_id = 123');] |
bigquery_execute | 表 | 在 BigQuery 中执行任意 GoogleSQL 查询。 | NULL | [CALL bigquery_execute('bq', 'CREATE SCHEMA deluxe_dataset OPTIONS(location="us", default_table_expiration_days=3.75);')] |
bigquery_jobs | 表 | 列出 BigQuery 项目中的作业。 | NULL | [SELECT * FROM bigquery_jobs('bq');] |
bigquery_clear_cache | 表 | 清除内部缓存以从 BigQuery 重新获取最新的项目信息。 | NULL | [CALL bigquery_clear_cache();] |
新增设置
名称 | 描述 | 输入类型 | 范围 |
---|---|---|---|
bq_arrow_compression | BigQuery Storage Read API 的压缩编解码器。选项:UNSPECIFIED、LZ4_FRAME、ZSTD。默认为 LZ4_FRAME。 | VARCHAR | GLOBAL(全局) |
bq_bignumeric_as_varchar | 将 BigQuery BIGNUMERIC 数据类型读取为 VARCHAR | BOOLEAN | GLOBAL(全局) |
bq_curl_ca_bundle_path | curl 的 CA 证书包路径 | VARCHAR | GLOBAL(全局) |
bq_debug_show_queries | 调试设置:将所有发送到 BigQuery 的查询打印到标准输出 | BOOLEAN | GLOBAL(全局) |
bq_default_location | BigQuery 查询的默认位置 | VARCHAR | GLOBAL(全局) |
bq_experimental_enable_bigquery_options | 是否在 CREATE 语句中启用 BigQuery OPTIONS | BOOLEAN | GLOBAL(全局) |
bq_experimental_filter_pushdown | 是否使用谓词下推(目前处于实验阶段) | BOOLEAN | GLOBAL(全局) |
bq_experimental_use_incubating_scan | 是否使用孵化中的 BigQuery 扫描实现。这目前是实验性的,未来目标是成为默认值。 | BOOLEAN | GLOBAL(全局) |
bq_experimental_use_info_schema | 是否从 BQ 信息模式中获取表信息(目前处于实验阶段)。可能比从 REST API 获取快得多。 | BOOLEAN | GLOBAL(全局) |
bq_max_read_streams | BigQuery Storage Read 的最大读取流数。设置为 0 可自动匹配 DuckDB 线程数。preserve_insertion_order 必须为 false 才能进行并行化。 |
BIGINT | GLOBAL(全局) |
bq_query_timeout_ms | BigQuery 查询的超时时间(毫秒) | BIGINT | GLOBAL(全局) |