sql - 从雪花外部阶段选择行时如何使用正则表达式?
问题描述
我创建了以下内容:
- 外部阶段(指向 Data Lake Gen2 中的文件夹)
- 文件格式(镶木地板)
我想从一个阶段进行选择,但我只想读取那些具有 . 部分。在那里文件名。使用 copy into 命令我可以在模式中提到这一点,但我不想在表中复制数据。我只想为 . 部分。文件。目前我已经尝试过这个:
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);
但它也会查找其中没有“部分”的文件,因此它会失败。所以我尝试了模式功能:
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.*';
但它给了我语法错误。任何指导将不胜感激。:)
解决方案
您所追求的语法是:
select *
from @STAGE_NAME/PATH
(FILE_FORMAT => PARQUET_FORMAT, PATTERN => '.*[.]part[.].*' )
正则表达式中的方括号也用于匹配.part 中的点。. 您使用的正则表达式将仅将所有文件与单词部分匹配
推荐阅读
- java - 内部类完成后Java开始下一个循环迭代
- c# - 为什么 C# 中 Int32 结构的 MinValue 前面有两个减号?
- html - 预填充 SSN 输入字段,但保留最后 4 个数字可编辑
- macos - 是否可以将 pyobjc 与私有的 XPC 帮助工具和 XPCInterface API 一起使用?
- sql - SQL Server OUTER JOIN 结果受 WHERE 条件限制
- reactjs - 为数组中类似的反应子对象创建单独的状态
- django - 如何在 django Templete 中通过循环显示来自模型的多个图像
- apache-spark - 如何在 Amazon EMR 集群上使用 Spark 连接到 Redshift 数据
- c# - 跟随一篇关于使用 iTextsharp 阅读 PDF 的帖子,但遇到了错误
- mongodb - if (!db) throw new Error('missing db argument\nnew Grid(db, mongo)');^ Error: missing db argument new Grid(db, mongo)