雪花中的动态舞台路径
Dynamic stage path in snowflake
我的阶段路径如下
copy into table1 as (
select :InvestorID::varchar as Investor_ID from @company_stage/pbook/2022-03-10/Invor/part-00000-33cbc68b-69c1-40c0-943c-f586dfab3f49-c000.snappy.parquet
)
这是我的 S3 位置 company_stage/pbook/2022-03-10/Invor
,
我需要动态化:
I) 我需要将这个“2022-03-10”文件夹更改为当前日期
II) 它必须自动获取文件夹中的所有 parquet 文件,而无需我提及文件名。如何实现?
这是一种方法。您的阶段不应将日期作为阶段名称的一部分,因为如果包含,您将每天都需要一个新阶段。最好将阶段定义为 company_stage/pbook/
.
要使其动态化,我建议将 pattern
选项与 COPY INTO 命令一起使用。您可以使用 current_date() 使用正则表达式模式表达式创建一个变量,如下所示:
set mypattern = '\.*'||to_char(current_date(), 'YYYY-MM-DD')||'\.*';
然后像这样在 COPY INTO 命令中使用这个变量:
copy into table1 as (
select :InvestorID::varchar as Investor_ID from @company_stage/pbook/ pattern = $mypattern
)
当然,您可以根据需要调整模式匹配。
我的阶段路径如下
copy into table1 as (
select :InvestorID::varchar as Investor_ID from @company_stage/pbook/2022-03-10/Invor/part-00000-33cbc68b-69c1-40c0-943c-f586dfab3f49-c000.snappy.parquet
)
这是我的 S3 位置 company_stage/pbook/2022-03-10/Invor
,
我需要动态化:
I) 我需要将这个“2022-03-10”文件夹更改为当前日期
II) 它必须自动获取文件夹中的所有 parquet 文件,而无需我提及文件名。如何实现?
这是一种方法。您的阶段不应将日期作为阶段名称的一部分,因为如果包含,您将每天都需要一个新阶段。最好将阶段定义为 company_stage/pbook/
.
要使其动态化,我建议将 pattern
选项与 COPY INTO 命令一起使用。您可以使用 current_date() 使用正则表达式模式表达式创建一个变量,如下所示:
set mypattern = '\.*'||to_char(current_date(), 'YYYY-MM-DD')||'\.*';
然后像这样在 COPY INTO 命令中使用这个变量:
copy into table1 as (
select :InvestorID::varchar as Investor_ID from @company_stage/pbook/ pattern = $mypattern
)
当然,您可以根据需要调整模式匹配。