DBT 在 set_sql_header 中摄取相同的模型名称

问题描述

我有一个模型 test1_scd2.sql,它在 set_sql_header 中运行一个存储过程。适配器是 bigquery 并且我不拥有存储过程,我只需要调用它。 SP 已经过战斗测试并且运行良好。我目前正在将我们的一些管道迁移到 DBT。

 -- depends on: {{ ref('ingest_table_temp') }}
 -- depends on: {{ ref('test1_target_table') }}
 {{ config(hours_to_expiration = 1)
 }}
 

{% call set_sql_header(config) %}
call `{{target.schema}}`.scd2( 
        "{{ ref('ingest_table_temp') }}","{{ ref('test1_target_table') }}",'is_latest_flag',['submission_id'],['last_reported_dt'])
{%- endcall %}


select * from {{ ref('ingest_table_temp') }} limit 1

但在编译后的版本中,您可以看到 {{ ref('ingest_table_temp') }}{{ ref('test1_target_table') }} 已被模型名称替换

call `sp`.scd2( 
        "`proj`.`datasn_sp`.`test1_scd2`","`proj`.`datasn_sp`.`test1_scd2`",['last_reported_dt'])

  create or replace table `proj`.`sp`.`test1_scd2`
  
  
  OPTIONS(
      expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(),INTERVAL 1 hour)
    )
  as (
   

select * from `proj`.`sp`.`ingest_table_temp` limit 1
  );
-- ingest_table_temp.sql
with ingest_table_temp
  AS (
    SELECT             DATETIME(2020,01,15,00,00) ingest_ts,DATE(2020,1,15) last_reported_dt,"001" submission_id,"XXX" journal,100 views
    UNION ALL SELECT   DATETIME(2020,00),15),"002","XXX",150
    UNION ALL SELECT   DATETIME(2020,"003",500
    UNION ALL SELECT   DATETIME(2020,"004",200
  ) select * from ingest_table_temp

-- test1_target_table.sql

with test1_target_table as (
    select true as is_latest_flag,* from {{ ref('ingest_table_temp')}} 
        where 1=2
        ) select * from test1_target_table

我在日志中得到的错误是:

Syntax error: Expected end of input but got keyword CREATE at [10:3]

我做了大量的研究,并在 dbt slack 频道问过,但没有运气。

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)