【问题标题】:Azure Data Factory - Copy Activity - rest api collection referenceAzure 数据工厂 - 复制活动 - rest api 集合参考
【发布时间】:2020-11-23 16:08:51
【问题描述】:

大家好,

我是数据工厂的新手,我需要从 Dynamics Business Central 的 Rest API 复制信息。我正在努力处理“详细信息”类型的实体,例如“invoiceSalesHeader”。

该实体的 api 强制我提供标头 ID 作为过滤器。从这个意义上说,我必须循环 x 次(几千次)并调用 Rest API 来检索每张销售发票的行。我觉得这完全荒谬,并且正在尝试寻找其他方法来获取信息。

为避免这样做,我试图通过调用“salesInvoice”实体并使用“$expand=salesInvoiceLines”来获取信息。

这让我得到了我需要的信息,但在数据工厂的 Copy Activity 中,我正在努力解决我应该作为“集合参考”放置的内容,以便最终每个 salesInvoiceLine 有一行。

返回的数据是一个销售发票数组,其中包含发票行的子数组。

如果我选择“salesInvoiceLines”作为集合参考,我最终会得到“$['value'][0]['salesInvoiceLines']”,这只会给我第一张发票的行(因为有索引为零)。

我应该在 Collection Reference 中添加什么,以便每个 salesInvoiceLine 获得一行

【问题讨论】:

  • ADF中不支持foreach嵌套数组。
  • 您可以将json文件保存到Azure Cloud,然后使用Azure数据流将其展平。
  • 嗨@David Laplante,如果我在答案中理解错误,请纠正我。
  • @David Laplante 你是怎么解决的?

标签: rest azure-data-factory


【解决方案1】:

不支持在 ADF 中 foreach 嵌套的 json 数组。
或者,我们可以在数据流中使用 Flattern 活动来展平嵌套的 json 数组。

这是我的例子:
这是我的示例 json 数据,结构和你的一样:

[
 {
 "id": 1,
 "Value": "January",
 "orders":[{"orderid":1,"orderno":"qaz"},{"orderid":2,"orderno":"edc"}]
 },
 {
 "id": 2,
 "Value": "February",
 "orders":[{"orderid":3,"orderno":"wsx"},{"orderid":4,"orderno":"rfv"}]
 },
 {
 "id": 3,
 "Value": "March",
 "orders":[{"orderid":5,"orderno":"rfv"},{"orderid":6,"orderno":"tgb"}]
 },
 {
 "id": 11,
 "Value": "November",
 "orders":[{"orderid":7,"orderno":"yhn"},{"orderid":8,"orderno":"ujm"}]
 }
]

在数据流中,我们可以选择嵌套json数组的头部,这里是orders

然后我们可以看到结果,我们已经将带有 2 个对象(orderid,orderno)的 JSON orders 数组转置为 8 个扁平行:

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2021-06-10
    • 2020-02-19
    • 2017-07-28
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多