【发布时间】:2021-12-26 23:23:00
【问题描述】:
起始上下文:
-
有一个 dbt_utils “pivot” 功能。这个问题不与那个函数有关。
-
有somediscussion关于雪花内置PIVOT的限制,即无法使用动态列和/或该函数的值。
example_model.sql
with pivot as (
select *
from {{ ref('my_base_model') }}
pivot( sum(VALUE) for KEY in (
{{ dbt_utils.get_column_values(table=ref('my_base_model'), column='KEY') }}
) )
)
select * from pivot
dbt 可以轻松解决这个问题,除了一个小问题。当上面的代码被编译时(下面的代码块),当雪花期待更像一个元组(...)时,它会生成一个python列表[...]的值
with pivot as (
select *
from DB.SCHEMA.my_base_model
pivot( sum(VALUE) for KEY in ( ['value_1', 'value_2', 'value_3', 'value_4', 'value_5', 'value_6', 'value_7'] ) )
)
select * from pivot
我正在考虑使用 as_native 之类的东西将结果列表转换为元组,但到目前为止还没有成功。
dbt run 中的错误:
001003 (42000): SQL compilation error:
syntax error line 5 at position 39 unexpected '['.
syntax error line 5 at position 961 unexpected ']'.
compiled SQL at target\run\dbtproject\models\staging\my_application
\my_base_model.sql
【问题讨论】:
标签: jinja2 snowflake-cloud-data-platform dbt