繁体   English   中英

如何将镶木地板文件从 Azure Blob 存储复制到雪花表中?

[英]How to copy parquet file from Azure Blob Storage into Snowflake table?

要将镶木地板文件从 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;
  $$;

这是错误信息; 在 position 4 的第 77 行上未捕获类型“STATEMENT_ERROR”的异常:无法将变量值“2022-08-17 00:00:00.000”转换为 DATE

你知道解决这个问题的方法吗? 任何帮助都将不胜感激。 谢谢你。

如果需要,您可以将时间戳转换为日期,如下所示:

select '2022-08-17 00:00:00.000'::date;

给我:

2022-08-17

在您的情况下,我不确定哪个是给出该错误的列,但如果我会采用一个看起来像时间戳的列:

$1:LOAD_DATE

你可以这样做:

$1:LOAD_DATE::date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM