【发布时间】:2022-08-03 01:01:04
【问题描述】:
大家好, 我有 28 个表(模型)要创建。我需要对这些表进行一些转换。所以我决定使用宏不重复自己,并且将来会有更多的转变。 我想从列中删除 \'%\'、\'$\' 标志并将其转换为浮动。 \'%\' 什么时候除以 100。
- 我必须提到我使用了引用: 标识符:真
我创建了这个模型:
SELECT
{{ clean_values(\'\"Data\"\') }} AS \"Data\"
FROM
{{ source(\'mml_staging_eastor\', \'DATAXIS_Development_indicators\') }}
我还创建了宏:
{% macro clean_values(value_column) -%}
{% do log(node, info=true) %}
{# {% set column_value = \'wme%mt\' %} #}
{% set column_value = value_column %}
{% set col_val_list = value_column | list %}
{% if \'%\' in col_val_list %}
\'{{ column_value | replace(\'%\', \'\') }}\'
{% elif \'$\' in col_val_list %}
\'{{ column_value | replace(\'$\', \'\') }}\'
{% else %}
{{ col_val_list }}
{% endif %}
{%- endmacro %}
在运行查询之前编译(模板化)宏。这意味着数据不会通过 jinja 模板运行。当您 {% set column_value = value_column %} 时,您只是将具有 value_column 值的字符串传递给 jinja,而不是来自具有该名称的字段的数据。
这是真的,我会在我的模型中得到如下结果: [ \“\“\“, \“数据\”, \”\”\” ].
可以使用 run_query 宏将数据拉入 jinja 上下文,但这很慢且容易出错。
*如果我使用注释行,那么专用字符串\'wme%mt\'变量它工作正常。
我该如何处理这个以在宏中清理此列?
先感谢您!*