[英]DBT incremental materialization on huge BigQuery use a full scan
我在 BigQuery 上有一个巨大的表,我想增量加载以节省 BigQuery 处理。
这是伪代码/配置:
config(
materialized='incremental',
incremental_strategy = 'insert_overwrite',
partition_by = {'field': 'load_date', 'data_type': 'date'}
)
}}
select * from {{ source('huge_table') }}
{% if is_incremental() %}
where load_date >= (select max(load_date) from {{ this }})
{% endif %}
该表在load_date
列上进行了分区,我希望使用max(load_date)
来优化查询并使用最后一个分区。
相反,查询正在执行完整扫描并消耗许多资源。
有人知道如何优化这个 DBT 加载吗?
如果这是您的完整配置,那么我认为问题在于使用insert_overwrite
策略而不指定partitions
键。
Jeremy Cohen 在这里写了一篇很棒的文章。
但基本上,如果您要替换一组固定的分区,只需在配置中定义这些分区,优化器就会感谢您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.