本文介绍了Azure Data Factory是否支持正则表达式匹配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的要求,在我的Azure数据工厂管道中,我有一个筛选器活动,我需要检查文件名是否与特定模式匹配。
例如:>;文件应为CSV文件,且名称应以‘D’开头。>;文件名必须包含特定单词。
这些值将来自配置文件。我希望实现是这样的:我的配置文件将有一个名为";filePatternt";的属性,它将是一个正则表达式。在筛选器活动中,我将提取该属性并执行类似regex.Match(@myRegular Expression from FILE模式属性,@FileName)的操作。
但我找不到任何可用于上述操作的相关文章或正则表达式函数。
如果您有任何线索、解决方案或链接,请让我知道。
问候,子区域
推荐答案
当我们将数据从BLOB复制到其他BLOB时,数据工厂支持在通配符操作中使用一些表达式来筛选BLOB,例如:
*
:如果要复制容器或文件夹中的所有Blob,请另外将通配卡文件名指定为*
。*.csv
:从容器或文件夹中选择所有CSV文件。Start*
:从名称为Start的容器或文件夹复制所有Blob使用"Start"。
引用:
- https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-blob-storage#copy-activity-properties
- Folder and file filter examples
通常,Data Factory不会提及正则表达式,我们会认为它不受支持。
出于您的目的,该文件应为CSV文件,且名称应以‘D’开头。>;文件名必须包含特定的单词。您可以在Add dynamic content
中使用以下Data Factory Expression帮助您实现这一点:startsWith()
contains()
endsWith()
and()
例如,我只创建了一个带有GET元数据和IF条件的示例管道。使用以下条件表达式筛选名称以‘D’开头且包含特定单词的CSV文件:- 获取元数据以获取文件名。
- 筛选文件的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是否支持正则表达式匹配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!