Azure数据工厂是否支持正则表达式匹配?

时间:2020-07-23 13:35:55

标签: regex azure-data-factory

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

例如:>该文件应为csv文件,名称应以'D'开头。 >文件名中必须包含特定字词。

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

但是我找不到可用于上述内容的任何相关文章或正则表达式功能。

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

关于, Subrat

1 个答案:

答案 0 :(得分:2)

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

  1. *:如果要复制容器或文件夹中的所有blob,请另外将wildcardFileName指定为*
  2. *.csv:从容器或文件夹中选择所有csv文件。
  3. 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

它看起来像正则表达式,但是非常简单。 enter image description here

通常,Data Factory不会提及正则表达式,我们会认为它不受支持。

出于您的目的,“该文件应为csv文件,并且名称应以'D'开头。>文件名必须包含特定字词。”,您可以在{{1 }}帮助您实现这一目标:

Add dynamic content

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

  1. 获取元数据以获取文件名。
  2. 是否有条件过滤文件。

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

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

Data Factory Expression

如果条件为true(名称以'D'开头且包含特定单词的csv文件),则可以添加大小写。