【发布时间】:2022-09-21 15:28:58
【问题描述】:
要将 Parquet 文件从 Azure Blob 存储复制到雪花表中,我创建了一个存储过程,但我不知道如何将源数据中的时间戳转换为日期。
CREATE OR REPLACE PROCEDURE PROC_IMPORT_COPY_DATA(year varchar,month varchar,day varchar)
returns varchar
LANGUAGE sql
AS
$$
BEGIN
let delete_query varchar:= \'delete from PRD_RAW_DATA.PUBLIC.SAMPLE_DATA where load_date = substr(to_char(CURRENT_DATE()),1,4) || substr(to_char(CURRENT_DATE()),6,2) || substr(to_char(CURRENT_DATE()),9,2)\';
execute immediate delete_query;
let uri varchar := concat(
\'select
$1:COMPANY_CODE,
$1:STORE_CODE,
$1:JAN_CODE,
$1:PERIOD,
$1:QUANTITY,
$1:AMOUNT,
$1:GROSS_PROFIT,
$1:SELLING_PRICE,
$1:SALE_QUANTITY,
$1:SALE_AMOUNT,
$1:SALE_GROSS_PROFIT,
$1:SALE_PRICE,
$1:NUMBER_OF_DEALERS,
$1:NUMBER_OF_VISITORS,
$1:LOAD_DATE
FROM @SYNAPSE_STAGE_PRD/delta/sample_data\'
,\'/year=\'
, :year
,\'/month=\'
, :month
,\'/day=\'
, :day
);
let copy_query varchar := concat(\'copy into PRD_RAW_DATA.PUBLIC.SAMPLE_DATA from \'
,\'(\'
,uri
,\'(file_format => my_parquet_format, pattern => \\\'.*.parquet\\\') t\'
,\') force=TRUE\'
);
execute immediate copy_query;
return(copy_query);
END;
$$;
这是错误信息; 在第 77 行的位置 4 上未捕获类型为 \'STATEMENT_ERROR\' 的异常:无法将变量值 \"2022-08-17 00:00:00.000\" 转换为 DATE
你知道解决这个问题的方法吗? 任何帮助,将不胜感激。 谢谢你。
标签: sql stored-procedures snowflake-cloud-data-platform