使用dbt生成BigQuery连接模型时列未自动填充问题
dbt生成BigQuery模型列为空的解决办法
问题原因
你生成的模型代码中,renamed CTE的select子句后没有指定任何列,直接跟from source,导致最终查询返回空结果。
解决方法
方法1:手动补全列
直接在renamed段的select后列出目标表的所有字段,示例如下:
with source as ( select * from {{ source('staging', 'green_tripdata') }} ), renamed as ( select vendorid, lpep_pickup_datetime, lpep_dropoff_datetime, passenger_count, trip_distance, ratecodeid, store_and_fwd_flag, pulocationid, dolocationid, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, trip_type, ehail_fee from source ) select * from renamed
方法2:用dbt命令自动生成列
运行以下dbt操作命令,自动拉取BigQuery表的元数据并生成包含所有列的模型代码:
dbt run-operation generate_source --args '{"schema_name": "staging", "database_name": "你的BigQuery项目ID"}'
前置检查项
- 确认
profiles.yml中BigQuery的连接配置正确,包含有效的认证信息(如服务账号密钥路径),且有权限访问目标表。 - 确保
models/schema.yml中已正确定义stagingsource及green_tripdata表:
version: 2 sources: - name: staging database: your_bq_project_id schema: staging tables: - name: green_tripdata
内容的提问来源于stack exchange,提问作者Ayomide
相关产品推荐
相关产品推荐

