使用dbt redshift.unload_table宏时出现语法错误求助
问题排查与修复
你的代码存在几处语法和参数使用错误,直接导致第13行解析报错,逐一修复如下:
1. 替换中文单引号为英文单引号
第13、14行的aws_key = ‘XXXX'和aws_secret = ‘XXXX'中,开头的引号是中文单引号‘,这会被dbt判定为语法错误,需全部替换为英文单引号'。
2. 修正redshift.unload_table的参数传递
redshift.unload_table宏的第一个参数应为要导出的目标表,直接用this即可(this代表当前dbt模型对应的Redshift表),无需额外拼接dbt_test_ods或user_performance。若需指定其他表,可传入ref('user_performance')或字符串'dbt_test_ods.user_performance'。
3. 简化config写法
dbt的config函数不需要外层嵌套大括号,直接传入键值对参数即可,多余的大括号会引发解析异常。
修复后的完整代码
{{ config( materialized="table", post-hook=[ "{{ redshift.unload_table( this, s3_path = 's3://XXXX/user_performance/', aws_key = 'XXXX', aws_secret = 'XXXX', format = 'parquet', parallel = False ) }}" ] ) }}
内容的提问来源于stack exchange,提问作者brunondjoyer
相关产品推荐
相关产品推荐

