我们正在使用JDE作为SOurce和snowflake作为DW进行DataWarehousing工作。因此,我们需要在当前具有JDE_Julian日期的许多字段中具有正常日期。
当前,如果我们有6个需要在查询中转换的日期,则必须将我们的Date维表绑定6次(snowflake可以做到这一点),但是我们正在寻找一种更干净的UDF形式的解决方案该函数仅返回给定JDE_Julian_Date的日期。我们已经解决了这个问题,但收到了可怕的“ SQL编译错误:无法评估不支持的子查询类型”
我在这里产生了这个问题。不幸的是,对我来说,它似乎是一个雪花虫。但是我对任何不强迫我对查询表进行6次联接的见解都是开放的。
CREATE OR REPLACE TABLE mydd (day date,JDE_Julian INT);
INSERT INTO mydd
VALUES
('2017-01-01',117001),('2017-01-02',117002),('2017-01-03',117003);
CREATE OR REPLACE TABLE mySource (id INT,j1 INT);
INSERT INTO mySource
VALUES
(1,(2,(3,117003),(4,117001);
CREATE OR REPLACE FUNCTION jdetest(julian_date_in int)
RETURNS date
VOLATILE
COMMENT = 'Convert JDE Julian date to regular Date'
AS
$$
SELECT day FROM mydd
WHERE JDE_Julian = julian_date_in
$$;
SELECT jdetest(117001); --Works
SELECT jdetest(117002); --Works
SELECT id,jdetest(j1) b1 FROM mysource; --Fails