如何在dbt中使用python依赖项注入或挂钩

2024-05-29 02:55:34 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以将基于python的挂钩与dbt一起使用

我正在使用种子数据创建jinja的动态模型,但我希望python比jinja本机提供的更具灵活性。作为比较,Django视图可以将变量注入模板

我是dbt的新手,可能处理这个问题的方法是错误的。感谢所有提供帮助或建议的人

下面是一个示例,我希望使用PythonZip,但最终使用了类似的sql逻辑。我同样需要使用python的enumerate。对于这些类型的场景,我应该只使用sql over python吗?我想大部分(如果不是全部的话)都可以通过sql实现(当涉及到这种类型的操作时,我恰好比sql更熟悉python)

当前使用sql的工作示例:

{% set mappings = dbt_utils.get_query_results_as_dict("select 
      CONCAT(my_field, ' AS ', my_alias) AS my_pairs FROM " ~  
      ref('data_seed_schema1_to_schema2') ) %}

SELECT
    {% for map in mappings %}
        {{',\n\t\t'.join(mappings[map]) }}
    {% endfor %}
FROM my_table

——>

SELECT  
    fooA AS barA,  
    fooB AS barb  
FROM my_table

所需的python示例:

{% set mappings = dbt_utils.get_query_results_as_dict("select * FROM " ~ 
      ref('data_seed_schema1_to_schema2') ) %}

# my_zip = [f"{x} AS {y} for x, y in zip(mappings['my_field'], mappings['my_alias'])]


SELECT
    {% for x in my_zip%}
        {{',\n\t\t'.join(x) }}
    {% endfor %}
FROM my_table

Tags: 方法infrom示例类型forsqlmy

热门问题