【问题标题】:Azure Datafactory process and filter files to processAzure 数据工厂处理和筛选要处理的文件
【发布时间】:2021-03-10 04:22:09
【问题描述】:

我有一个处理一些文件的管道,在某些情况下是“组”文件。这意味着文件应该一起处理并与时间戳相关联。

例如

  • 时间戳#Customer.csv
  • 时间戳#Customer_Offices.csv
  • Timestamp_1#Customer.csv
  • Timestamp_1#Customer_Offices.csv

...

我有一个包含所有范围的表,以及具有相应文件掩码的文件。我根据参数在管道的开头填充了一个变量

Get files 活动转到 sFTP 位置并从文件夹中获取文件。然后我只想处理“Customer.csv”和“.Customer_Offices.csv”文件。这是因为文件夹位置有更多文件类型或范围要由其他管道处理。如果我不过滤,接下来的活动最终会处理不应该的文件元数据。在效率和性能方面都很糟糕,甚至会导致一些文件被遗忘的问题。

我尝试过类似的东西

@variables('FilesToSearch').contains(@endswith(item().name, '我需要数组中的第二个参数吗?'))

但没有运气... :(

任何帮助将不胜感激,

最好的问候, 曼努埃尔

【问题讨论】:

    标签: csv azure-data-factory azure-data-factory-2


    【解决方案1】:

    contains 函数可以直接为一个字符串找到一个子字符串,所以你可以试试这个表达式@contains(item().name,'Customer') 并且无需创建变量。

    或者使用endsWith函数并使用这个表达式:

    @or(endswith(item().name,'Customer.csv'),endswith(item().name,'Customer_Offices.csv'))
    

    【讨论】:

    • 感谢@Steve Zhao,这是我需要的,但我想要更多动态。变量(数组类型)将包含要过滤的列表,而不是硬编码要搜索的文件掩码。那可能吗?问候,
    • 你的变量值是 ["Customer.csv","Customer_Offices.csv"] 吗?
    • 这是我从 var 输出中得到的。它没有确切的格式,但很接近。 { "name": "FilesToSearch", "value": [ [ { "FileMask": "Customers.csv" }, { "FileMask": "Contacts.csv" }, { "FileMask": "Sites. csv" } ] ] }
    • 这是不可能用表达式来达到你的要求的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2019-10-28
    • 1970-01-01
    • 2021-09-10
    • 2019-01-08
    • 2022-11-04
    相关资源
    最近更新 更多