【发布时间】:2021-11-30 15:29:05
【问题描述】:
我基本上想传入一个列,然后进行计算,自动计算我最终将作为 Decimal(x,x) 参数传递给我的 CAST 的数字,所以我总是考虑最大的 Decimal,所以没有四舍五入发生。
我想传入一个在周期上分割的目标列,计算左边的max len(),然后计算右边的max len(),然后返回(left+right,right)所以它是类似于 22,8。
到目前为止,这是我的宏:
{% macro cast_decimal(max_field, table_name) %}
{%- call statement('cast_decimal_max', fetch_result=True) -%}
WITH mq AS
(
SELECT MAX(len(split_part({{ max_field }},'.',1))) AS max_l,
MAX(len(split_part({{ max_field }},'.',2))) AS max_r
FROM {{ table_name }}
)
SELECT (max_l + max_r) || ',' || max_r AS max_total
FROM mq
{%- endcall %}
{%- set max_existing_total = load_result('cast_decimal_max').table.columns['max_total'].values()[0] -%}
{{ return(max_existing_total) }}
{%- endmacro %}
我不断收到此错误:“无”没有属性“表”,我不确定自己做错了什么。
如果你能告诉我如何从我的 FROM 语句中自动传入当前表,那么我不需要它作为我的宏中的参数,而不是像这样这样做:
SELECT {{ cast_decimal(close_price, public.stable_prices) }}
FROM public.stable_prices
【问题讨论】:
标签: dbt