gpt4 book ai didi

azure - 使用过滤器事件传递参数以复制事件

转载 作者:行者123 更新时间:2023-12-03 02:17:44 26 4
gpt4 key购买 nike

我通过获取元数据事件获取文件夹中的文件列表,然后在过滤器事件的帮助下对文件进行排序。现在我想传递这些文件的名称来复制事件。

这是过滤器事件的输出(只有一个文件,因为它位于每个事件中。):

{
"ItemsCount": 2,
"FilteredItemsCount": 1,
"Value": [
{
"name": "part-00000-622d6021-26bc-4ad5-9e4c-0d80cec7c6b7-c000.csv",
"type": "File"
}
]
}

如何将名称传递到源端复制事件?

例如,我已经尝试过:@activity('Filter1_copy1').output.value - @activity('Filter1_copy1').output.value[0]

我尝试过的一切都会导致我出错:

ErrorCode=UserErrorInvalidValueInPayload,'Type=Microsoft.DataTransfer.Common.Shared.HybridDelivery
Exception,Message=Failed to convert the value in 'fileName' property to 'System.String' type.
Please make sure the payload structure and value are correct.,Source=Microsoft.DataTransfer.DataContracts,
''Type=System.InvalidCastException,Message=Object must implement IConvertible.,Source=mscorlib,'

最佳答案

Azure 数据工厂 (ADF) 表达式语言并不是世界上最直观的东西,但有一个强大的核心元素,它实际上只是 JSONPath(的子集),例如 XPath,一种用于查询复杂 JSON 的简单语言对象。它使用点语法来访问属性(例如parent.child),并使用数组语法来访问数组Value[0].name

Filter事件(如“获取元数据”事件)返回一段复杂的 JSON,它是事件的结果,表示为对象。

在您的特定示例中,您有一个带有 Value 数组的对象,该数组可以包含零个或多个项目。请记住,JSONPath 中的数组是从零开始的。因此,为了访问该数组的第一个值,我们需要使用一个从零开始的位置指示符,称为序数 ([0]),并使用点语法来获取属性,例如 名称

@activity('Filter1').output.Value[0].name

请记住,大小写在 JSON 和 JSONPath 中很重要,因此数组的值是 Value(大写 V)。根据需要修改 ADF 事件名称(例如,在我的示例中使用 Filter1_copy 而不是 Filter1,但我鼓励您查看命名约定:)

只是为了好玩,我使用 jsonpath.com练习这些表达式,而不必每次都运行并重新运行管道来查看它是否有效。它可以让你处于正确的位置。经过一些练习后,您将能够查看事件输出并找出表达式应该是什么。一个简单的例子:

jsonpath.com

我认为 ADF 不支持完整的 JSONPath 语法,但我只是粘贴了示例 JSON,并编写了 Values[0].name 位进行测试。

关于azure - 使用过滤器事件传递参数以复制事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70424129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com