BigQuery联邦数据源API配置及文件加载配置技术咨询
BigQuery联邦数据源API配置指南
嘿,既然你已经熟练搞定了批量加载文件到BigQuery的配置,那咱们来拆解一下联邦数据源的API配置怎么弄。联邦数据源的核心是让BigQuery直接查询外部数据源,不用先把数据导入到BigQuery表中,下面给你几个常见场景的配置示例和关键参数说明:
一、核心配置结构基础
联邦数据源的API配置主要通过configuration.query来定义,其中外部数据源的核心信息会通过EXTERNAL_QUERY函数的参数传递,替代了你之前加载配置里的load块。
二、常见外部数据源配置示例
1. 联邦查询Cloud Storage上的JSON/CSV文件
假设你要查询GS桶里的 newline-delimited JSON 文件(和你之前加载的格式一致),配置如下:
config = { 'configuration' => { 'query' => { 'query' => 'SELECT * FROM EXTERNAL_QUERY(@external_config)', 'parameterMode' => 'NAMED', 'queryParameters' => [ { 'name' => 'external_config', 'parameterType' => { 'type' => 'JSON' }, 'parameterValue' => { 'value' => JSON.generate({ 'sourceUris' => ['gs://my_bucket/my_files_*'], 'sourceFormat' => 'NEWLINE_DELIMITED_JSON', 'schema' => { 'fields' => fields_array }, # 和你之前的schema结构完全兼容 'maxBadRecords' => 10 # 可选:允许的错误记录数 }) } } ] } } }
2. 联邦连接Cloud SQL MySQL实例
如果要连接Cloud SQL的MySQL数据源,配置会涉及数据库连接信息:
config = { 'configuration' => { 'query' => { 'query' => 'SELECT * FROM EXTERNAL_QUERY(@external_config)', 'parameterMode' => 'NAMED', 'queryParameters' => [ { 'name' => 'external_config', 'parameterType' => { 'type' => 'JSON' }, 'parameterValue' => { 'value' => JSON.generate({ 'connectionName' => 'my-project:us-central1:my-mysql-instance', 'database' => 'my_db', 'table' => 'external_table_name', 'dialect' => 'MYSQL', 'username' => 'db_user', # 推荐用Secret Manager存储密码,避免明文暴露 'password' => 'your_db_password' }) } } ] } } }
三、关键参数说明
EXTERNAL_QUERY函数:这是联邦查询的核心入口,通过传入JSON格式的配置参数来连接外部数据源并执行查询- 通用参数(文件类数据源):
sourceUris:外部数据的存储路径,支持通配符(和你之前加载配置的用法一致)sourceFormat:外部数据格式,支持NEWLINE_DELIMITED_JSON、CSV、PARQUET等schema:外部数据的结构定义,和你之前加载配置里的schema格式完全兼容
- 数据库类数据源专属参数:
connectionName:Cloud SQL/Spanner等数据库实例的连接名称(格式为项目ID:区域:实例名)dialect:数据库类型,比如MYSQL、POSTGRESQLdatabase/table:要查询的目标数据库和表名
四、和你现有加载配置的区别
你之前的配置是将数据加载到BigQuery表中(load操作),属于数据导入;而联邦数据源配置是直接查询外部原始数据(query操作),不需要把数据导入BigQuery,适合实时查询、数据量过大不想存储副本,或者多数据源联合分析的场景。
内容的提问来源于stack exchange,提问作者Raoot
相关产品推荐
相关产品推荐

