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

问题描述 投票:0回答:2

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

例如:>文件应该是 csv 文件,名称应以“D”开头。 >文件名必须包含特定单词。

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

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

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

问候, 苏拉特

regex azure-data-factory
2个回答
3
投票

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

  1. *
    :如果要从容器或文件夹复制所有 Blob,请另外将通配符文件名称指定为
    *
  2. *.csv
    :从容器或文件夹中选择所有 csv 文件。
  3. Start*
    :从名称开头的容器或文件夹中复制所有 blob 与“开始”。

参考:

  1. https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-blob-storage#copy-activity-properties
  2. 文件夹和文件过滤器示例

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

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

出于您的目的,“文件应该是 csv 文件,名称应以 'D' 开头。>文件名必须包含特定单词。”,您可以使用下面的 Add dynamic content 中的

Data Factory Expression
帮助您实现这一目标:

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

例如,我只是使用“获取元数据”和“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文件),我们可以添加活动案例。


-1
投票

Azure 数据工厂缺乏对正则表达式的本机支持,需要复杂的字符串操作才能完成所需的任务。尽管如此,通过实施 Azure Function,可以通过额外的努力来实现更通用的解决方案。

下面,您将找到全面的解释和实施指南。

如何在Azure数据工厂中实现对正则表达式的支持?

© www.soinside.com 2019 - 2024. All rights reserved.