从雪花外部阶段选择行时如何使用正则表达式?
How to use regex while selecting rows from snowflake external stage?
我创建了以下内容:
- 外部阶段(指向数据湖 Gen2 中的文件夹)
- 文件格式 (Parquet)
我想从一个阶段执行 select,但我只想读取文件名中包含 .part. 的那些文件。使用 copy into 命令我可以在模式中提到这一点,但我不想在 table 中复制数据。我只想为 .part. 文件做一个 select。目前我试过这个:
SELECT
:Country::String as Country,
:FeatureStr::String as FeatureStr,
:Machineid::String as Machineid,
:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT);
但它也会查找其中没有“part”的文件,因此失败。然后我尝试了模式功能:
SELECT
:Country::String as Country,
:FeatureStr::String as FeatureStr,
:Machineid::String as Machineid,
:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT)
pattern => '.*part.*';
但是它给我语法错误。任何指导将不胜感激。 :)
您要的语法是:
select *
from @STAGE_NAME/PATH
(FILE_FORMAT => PARQUET_FORMAT, PATTERN => '.*[.]part[.].*' )
正则表达式中的方括号也匹配 .part. 中的点。您使用的正则表达式将用于匹配所有包含单词 part
的文件
我创建了以下内容:
- 外部阶段(指向数据湖 Gen2 中的文件夹)
- 文件格式 (Parquet)
我想从一个阶段执行 select,但我只想读取文件名中包含 .part. 的那些文件。使用 copy into 命令我可以在模式中提到这一点,但我不想在 table 中复制数据。我只想为 .part. 文件做一个 select。目前我试过这个:
SELECT
:Country::String as Country,
:FeatureStr::String as FeatureStr,
:Machineid::String as Machineid,
:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT);
但它也会查找其中没有“part”的文件,因此失败。然后我尝试了模式功能:
SELECT
:Country::String as Country,
:FeatureStr::String as FeatureStr,
:Machineid::String as Machineid,
:ProductId::number as ProductId
FROM @DB.RAW_SCHEMA.FEATURE_STAGE/ClientDetails/2020.03.ClientDetails/ (file_format => DB.RAW_SCHEMA.PARQUET_FORMAT)
pattern => '.*part.*';
但是它给我语法错误。任何指导将不胜感激。 :)
您要的语法是:
select *
from @STAGE_NAME/PATH
(FILE_FORMAT => PARQUET_FORMAT, PATTERN => '.*[.]part[.].*' )
正则表达式中的方括号也匹配 .part. 中的点。您使用的正则表达式将用于匹配所有包含单词 part
的文件