小编Bar*_*dia的帖子

雪花存储过程因 dbt 失败

我在通过 dbt 在 Snowflake 中执行存储过程时遇到问题:

我的过程的描述如下: MyStoredProcedure(ARRAY, VARCHAR, VARCHAR)

因此,当我想运行它时,我使用array_construct函数来创建第一个参数,例如: call MyStoredProcedure(array_construct(array_construct('str_1', 'str_2')), 'schema_name', 'table_name');

当我在 Snowflake 中运行它时,这是有效的。但是,当我从 dbt 运行此命令时,它失败并出现以下错误:

不允许修改在不同范围启动的事务。

我确信这与在此调用中调用 array_construct 有关。

我应该提到,为了从 dbt 运行它,我定义了一个如下宏:

{% macro MyStoredProcedure() %}
    {% set query -%}
        CALL MyStoredProcedure(
           array_construct(array_construct('str_1', 'str_2')),
           'schema_name',
           'table_name');
    {%- endset %}

    {% do run_query(query) %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

当然,像这样运行它:dbt run-operation MyStoredProcedure

我很感激任何帮助我解决这个问题的提示或想法。

谢谢

stored-procedures snowflake-cloud-data-platform dbt

5
推荐指数
1
解决办法
3190
查看次数