从雪花外部阶段选择行时如何使用正则表达式?

时间:2020-07-07 08:11:51

标签: sql regex select snowflake-cloud-data-platform snowflake-schema

我创建了以下内容:

  1. 外部阶段(指向Data Lake Gen2中的文件夹)
  2. 文件格式(实木复合地板)

我想从一个阶段中进行选择,但是我只想读取文件名中具有。 part。的那些文件。使用copy into命令,我可以在模式中提及这一点,但是我不想复制表中的数据。我只想对。 part。文件进行选择。目前,我已经尝试过:

SELECT 
    $1:Country::String as Country,
    $1:FeatureStr::String as FeatureStr,
    $1:Machineid::String as Machineid,
    $1:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT);

但是它还会查找其中没有' part '的文件,因此失败。因此,我尝试了模式功能:

SELECT 
    $1:Country::String as Country,
    $1:FeatureStr::String as FeatureStr,
    $1:Machineid::String as Machineid,
    $1:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT)
pattern => '.*part.*';

但是它给了我语法错误。任何指导将不胜感激。 :)

1 个答案:

答案 0 :(得分:1)

您要使用的语法是:

select * 
from @STAGE_NAME/PATH
(FILE_FORMAT => PARQUET_FORMAT, PATTERN => '.*[.]part[.].*' )

正则表达式中的方括号也可以匹配 .part。中的点。您使用的正则表达式可以使所有文件与单词 part

匹配