【问题标题】:Azure Data Factory V2 Check file size for Copy ActivityAzure 数据工厂 V2 检查复制活动的文件大小
【发布时间】:2020-12-06 23:04:26
【问题描述】:

我需要为本地数据源中的文件运行复制活动。我需要检查文件大小,如果大小大于 0,则复制它们。如果文件大小为 0,我将发送通知,以便管理员检查来源。

问题是,在获取元数据活动中,字段列表中的参数不包括大小。此外,验证活动也不寻找 size 属性。有什么建议吗?同样,这些文件存在于本地。

我在 Get Metadata 活动之后添加了 If Condition 并使用了表达式:

@greaterOrEquals(activity('Get-metadata-source').output.size,0)

这会产生以下错误:

无法评估表达式 'greaterOrEquals(activity('Get-metadata-source').output.size,0)',因为属性 'size' 不存在,可用属性是 'childItems, EffectiveIntegrationRuntime, executionDuration, durationInQueue , billingReference'。

谢谢!

【问题讨论】:

  • Get Metadata中只有文件作为数据集可以选择参数:size。文件夹不支持。即使数据集文件是从参数设置的,它仍然无法正常工作。基于此,我们无法满足您的要求。
  • 谢谢莱昂。我可以在数据集中文件路径的文件字段中使用通配符吗?我对一个文件进行了尝试,并且能够按大小进行比较。但不确定如何为多个文件执行此操作。再次感谢
  • 嗨@elasticSol,我为你做了例子,请看我的回答。
  • 您好@elasticSol,您还有其他顾虑吗?如果我的回答对你有帮助,希望你能采纳。这对其他社区成员可能是有益的。谢谢。
  • 嗨@LeonYue 非常感谢。我没有机会完成它,但我这周正在努力。我很感激!

标签: azure-data-factory-2


【解决方案1】:

如果您在 Get Metadata active 中选择文件而不是文件夹作为数据集,则可以获取文件大小。

如果您的文件在同一文件夹或位置,您可以按照以下步骤操作:

  1. 使用一个 Get Metadata 来获取文件名列表: ARGUMENT: Child items

  1. 使用For Each active循环所有文件:@activity('Get Metadata1').output.childitems

  1. 在 Foreach active 中,创建另一个数据集 2 具有相同的路径 使用数据集1,使用参数设置文件名。

  1. 在 Foreach active 中,使用另一个 Get Metadata 来获取文件 size。 将 foreach item.name 传递给文件名:

  1. 运行管道并获取文件大小。

您可以添加 if 条件来判断文件大小并构建您的管道。

HTP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多