问题描述
尝试将数据构建工具添加到我们的生态系统并面临标题问题。我们目前正在使用巨大的 BigQuery 表,因此我们希望每天对它们进行分区和扩展。 IDK 如果这很重要,但一切都在 docker 容器中运行。您可以通过以下方式重现它:
用于创建源表的bigquery SQL查询:
create table `***.dbt_nick_test.partition_test_20210304` (
session_date DATE,user_id STRING
);
insert into `***.dbt_nick_test.partition_test_20210304` (session_date,user_id)
values ('2021-03-04','1234'),('2021-03-04',NULL),'1235');
dbt_project.yml - 模型定义部分:
models:
***:
test:
+schema: test
profiles.yml - 以防万一,确保一切配置正常:
***-bq:
target: "{{ env_var('DBT_TARGET','dev') }}"
outputs:
dev:
type: bigquery
method: service-account
project: ***
dataset: dbt_nick_test
threads: 4
keyfile: /root/.dbt/bq-creds.json
timeout_seconds: 300
priority: interactive
retries: 1
cat models/test/test.sql:
{{
config(
partition_by={
"field": "session_date","data_type": "date","granularity": "day"
},partitions=dbt.partition_range(var('dates',default=yesterday())),verbose=True
)
}}
SELECT
session_date,user_id
FROM `***`.`dbt_nick_test`.`{{ date_sharded_table('partition_test_') }}`
昨天的宏是dbt教程的默认设置。
运行 dbt -dS run -m test --vars 'dates: "20210304,20210304"'
后(一切正常)dbt 报告表创建成功。现在,转到 BigQuery,我可以看到该表实际上已创建,但它的“分区依据”字段错误 -- _PARTITIONTIME 而不是“session_date”screenshot。
如果我手动创建正确分区的表,然后运行 dbt run
- 它会按预期工作,一切都很完美。
此外,使用 dbt 从该表创建的表也被严重分区。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)