我有一些在 BigQuery 编辑器中编写和使用 UDF 的经验,但是我对它们在 DBT 中作为宏的实现知之甚少。
具体来说,我想到的是以下 BQ UDF:
CREATE TEMP FUNCTION dtform(s STRING)
RETURNS DATE AS (DATE(TIMESTAMP(REPLACE(s, "Z", ""), "time_zone")));
需要重新调整本地时区日期,这些日期由我用来从原始数据源传输到 BQ 仓库的传输工具自动设置为 UTC。
我的问题是如何将其渲染为 DBT 宏?如果有人有耐心详细解答,将不胜感激!
您可以创建一个持久性 UDF 函数并使用它。例如,以下持久函数可以工作
CREATE FUNCTION public.dtform(s STRING)
RETURNS DATE AS (DATE(TIMESTAMP(REPLACE(s, "Z", ""), "time_zone")));
与其重新发明 UDF,不如检查它是否已在
中可用https://github.com/GoogleCloudPlatform/bigquery-utils/tree/master/udfs
这是一个公共项目,可以直接使用其下的UDF
如果您觉得这个答案有用,请点赞或标记为已回答