雪花模式的正则表达式

时间:2020-06-11 00:53:10

标签: regex snowflake-cloud-data-platform regex-group

我在null存储桶中有一个文件列表,如下所示。我只想加载当前的日期文件,例如, 我想获取2020/06/09下的所有file_a.csv,类似地获取同一2020/06/09下的所有file_b.csv

我尝试了语法,但是这使我获得了所有日期的所有文件 s3

select metadata$filename from @stage/snflk/ts/(file_format=>CSV_SKIP_HEADER,pattern=>'.*/file_a.*[.]csv')

1 个答案:

答案 0 :(得分:1)

我只想加载当前日期文件

.*/file_a.*[.]csv

这使我获得了所有日期的所有文件

此处开头提供的模式(.*)是通配符,将匹配所有可用的内容。

如果您需要将日期限制为一个常数值,请在regular expression pattern内指定常数值(即ts-prod.*/2020/06/09/file_a\.csvts-prod.*/2020/06/09/file_b\.csv等):

select
  metadata$filename
from @stage/snflk/ts/
(pattern=>'ts-prod.*/2020/06/09/file_a\.csv');

要反复测试和编写正则表达式模式,可以使用Regex101RegExr等网络工具。

Ps。。如果您要自动执行此操作,还可以将模式构造为use the current date dynamically

-- Produces 'ts-prod.*/2020/06/11/file_a\.csv'
SET curr_dt_a=(
  SELECT 
    'ts-prod.*/' || 
    TO_VARCHAR(CURRENT_DATE(), 'YYYY/MM/DD') || 
    '/file_a\\.csv'
)

-- Referenced as a SQL variable in the PATTERN option
SELECT
  metadata$filename
FROM @stage/snflk/ts/
(PATTERN=>$curr_dt_a);