问题描述
我正在尝试编写列定义(concat列名称和数据类型) 到redshift表,以便在重播存档文件时可以重用这些列定义 s3文件重播到数据仓库中。我的第一步是获取列defs 在以下模型中:
with cte_redshift_column_deFinitions as
(
select
col_nam || '-' || col_datatype as colnameandtype
from {{ ref('redshift_columns') }}
where schemaname = 'schema1'
and tablename = 'plans'
order by
col_index
)
select * from cte_redshift_column_deFinitions
然后我使用宏将colnameandtypt放入字典:
{% macro macro_concatcolumns() %}
{% set column_defs = dbt_utils.get_query_results_as_dict("select * from " ~ ref('redshift_column_deFinitions') ~ "") %}
{% set sql %}
select {{ column_defs }}
{% endset %}
{% do run_query(sql) %}
{% endmacro %}
所以我可以设置column_defs,但是由于字典结构,当我运行时 选择{{column_defs}},我在日志中得到以下内容:
select {'colnameandtype': ('[id][VARCHAR(512)]','[received_at][TIMESTAMP WITHOUT TIME ZONE]','[uuid][BIGINT]','[amount][BIGINT]','[created][TIMESTAMP WITHOUT TIME ZONE]','[currency][VARCHAR(512)]','[interval][VARCHAR(512)]','[interval_count][BIGINT]','[name][VARCHAR(512)]','[statement_descriptor][VARCHAR(512)]','[trial_period_days][BIGINT]','[uuid_ts][TIMESTAMP WITHOUT TIME ZONE]','[Metadata_netsuite_service_sale_item_tag][VARCHAR(512)]','[Metadata_netsuite_service_sale_item_id][VARCHAR(512)]','[is_deleted][BOOLEAN]','[Metadata_netsuite_service_sale_item_cf_id][VARCHAR(512)]','[Metadata_netsuite_service_sale_item_cf_tag][VARCHAR(512)]')}
2020-11-03 16:20:41.407959Z: Postgres error: Syntax error at or near "'colnameandtype'"
LINE 5: select {'colnameandtype': ('[id][VARCHAR(512)]','[rec...
我只想使用列,但是我不确定如何处理dict结构以删除“ {'colnameandtype':(”。
jinja和dbt相当新,因此任何帮助将不胜感激。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)