本文介绍了Azure Data Factory是否支持正则表达式匹配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

例如:>;文件应为CSV文件,且名称应以‘D’开头。>;文件名必须包含特定单词。

这些值将来自配置文件。我希望实现是这样的:我的配置文件将有一个名为";filePatternt";的属性,它将是一个正则表达式。在筛选器活动中,我将提取该属性并执行类似regex.Match(@myRegular Expression from FILE模式属性,@FileName)的操作。

但我找不到任何可用于上述操作的相关文章或正则表达式函数。

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

问候,子区域

推荐答案

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

  1. *:如果要复制容器或文件夹中的所有Blob,请另外将通配卡文件名指定为*
  2. *.csv:从容器或文件夹中选择所有CSV文件。
  3. Start*:从名称为Start的容器或文件夹复制所有Blob使用"Start"。

引用:

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

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

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

出于您的目的,该文件应为CSV文件,且名称应以‘D’开头。>;文件名必须包含特定的单词。您可以在Add dynamic content中使用以下Data Factory Expression帮助您实现这一点:

startsWith()
contains()
endsWith()
and()
例如,我只创建了一个带有GET元数据和IF条件的示例管道。使用以下条件表达式筛选名称以‘D’开头且包含特定单词的CSV文件:

  1. 获取元数据以获取文件名。
  2. 筛选文件的If条件。

我更喜欢使用IF条件,表达式与筛选条件相同:

@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文件),我们可以添加活动案例。

这篇关于Azure Data Factory是否支持正则表达式匹配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 14:56