【问题标题】:Does Azure Data Factory supports regular expression matching?Azure 数据工厂是否支持正则表达式匹配?
【发布时间】:2020-11-13 06:13:08
【问题描述】:

我有这个要求,在我的 Azure 数据工厂管道中有一个过滤器活动,我需要检查文件名是否与特定模式匹配。

eg: >文件应该是一个csv文件,名字应该以'D'开头。 >文件名必须包含一个特定的单词。

这些值将来自配置文件。 我希望实现是这样的: 我的配置文件将有一个名为“filePatternt”的属性,它将是一个正则表达式。 在过滤器活动中,我将提取此属性并执行类似 regex.match(@myregular expression from file pattern attribute, @filename) 之类的操作。

但我没有找到任何可用于上述内容的相关文章或正则表达式函数。

如果您有任何线索、解决方案或链接,请告诉我。

问候, 子类

【问题讨论】:

  • 整个管道是什么?您是否使用了查找+过滤器?
  • 嗨@SubratKP,如果我的回答对你有帮助,希望你能接受(标记)它作为答案。这对其他社区成员可能是有益的。谢谢。

标签: regex azure-data-factory


【解决方案1】:

当我们将数据从 blob 复制到其他时,数据工厂支持使用一些表达式来过滤通配符操作中的 blob,例如:

  1. *:如果要从容器或文件夹中复制所有 blob,请另外指定 wildcardFileName 为 *
  2. *.csv:从容器或文件夹中选择所有 csv 文件。
  3. Start*:从名称为 start 的容器或文件夹中复制所有 blob 使用“开始”。

参考:

  1. https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-blob-storage#copy-activity-properties
  2. Folder and file filter examples

它可能看起来像正则表达式,但非常简单。

通常,数据工厂不会提及正则表达式,我们会认为它不受支持。

为了你的目的,“文件应该是一个 csv 文件,名称应该以'D'开头。>文件的名称必须包含一个特定的单词。”,你可以在Add dynamic content 中使用下面的Data Factory Expression 来帮助你实现这一目标:

startsWith()
contains()
endsWith()
and()

例如,我只是创建了一个带有 Get Metadata 和 If 条件的示例管道。使用以下条件表达式过滤名称以'D'开头并包含特定单词的csv文件:

  1. 获取元数据以获取文件名。
  2. 如果条件过滤文件。

我更喜欢使用If条件,表达式与Filter条件相同:

@and(and(startswith(activity('Get Metadata3').output.itemName,'D'),contains(activity('Get Metadata3').output.itemName,'specifcWords')),endswith(activity('Get Metadata3').output.itemName,'.csv'))

如果条件为真(名称以“D”开头并包含特定单词的 csv 文件),我们可以添加 case active。

【讨论】:

    猜你喜欢
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2014-08-31
    • 2011-10-18
    相关资源
    最近更新 更多