簡體   English   中英

帶有 Rest API 的 Azure 數據工廠 V2 復制活動為嵌套的 JSON 提供一行

[英]Azure Data Factory V2 Copy Activity with Rest API giving one row for nested JSON

我正在嘗試展平從 Rest 源返回的嵌套 JSON。 流水線代碼如下。 這里的問題是這個管道只從 JSON 數據集中返回第一個對象並跳過所有其余的行。 你能指導我如何迭代嵌套對象嗎?

謝謝薩米特

{
    "name": "STG_NCR2",
    "properties": {
        "activities": [
            {
                "name": "Copy data1",
                "type": "Copy",
                "dependsOn": [],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "source": {
                        "type": "RestSource",
                        "httpRequestTimeout": "00:01:40",
                        "requestInterval": "00.00:00:00.010",
                        "requestMethod": "GET",
                        "additionalHeaders": {
                            "OData-MaxVersion": "4.0",
                            "OData-Version": "4.0",
                            "Prefer": "odata.include-annotations=*"
                        }
                    },
                    "sink": {
                        "type": "AzureSqlSink"
                    },
                    "enableStaging": false,
                    "translator": {
                        "type": "TabularTranslator",
                        "mappings": [
                            {
                                "source": {
                                    "path": "$['value'][0]['tco_ncrid']"
                                },
                                "sink": {
                                    "name": "NCRID"
                                }
                            },
                            {
                                "source": {
                                    "path": "['tco_name']"
                                },
                                "sink": {
                                    "name": "EquipmentSerialNumber"
                                }
                            }
                        ],
                        "collectionReference": "$['value'][0]['tco_ncr_tco_equipment']"
                    }
                },
                "inputs": [
                    {
                        "referenceName": "Rest_PowerApps_NCR",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "Prestaging_PowerApps_NCREquipments",
                        "type": "DatasetReference"
                    }
                ]
            }
        ],
        "annotations": []
    }
}

JSON 格式如下

[ 
   { 
      "value":[ 
         { 
            "tco_ncrid":"abc-123",
            "tco_ncr_tco_equipment":[ 
               { 
                  "tco_name":"abc"
               }
            ]
         },
         { 
            "tco_ncrid":"abc-456",
            "tco_ncr_tco_equipment":[ 
               { 
                  "tco_name":"xyz"
               },
               { 
                  "tco_name":"yzx"
               }
            }
         ]
      ]
   }
]

這可以通過如下修改翻譯器屬性來解決。

"translator": {
                    "type": "TabularTranslator",
                    "mappings": [
                        {
                            "source": {
                                "path": "$.['value'][0].['tco_ncrid']"
                            },
                            "sink": {
                                "name": "NCRID",
                                "type": "String"
                            }
                        },
                        {
                            "source": {
                                "path": "$.['value'][0].['tco_text_id']"
                            },
                            "sink": {
                                "name": "EquipmentDescription",
                                "type": "String"
                            }
                        },
                        {
                            "source": {
                                "path": "['tco_name']"
                            },
                            "sink": {
                                "name": "EquipmentSerialNumber",
                                "type": "String"
                            }
                        }
                    ],
                    "collectionReference": "$.['value'][*].['tco_ncr_tco_equipment']"
                }

此代碼強制管道迭代嵌套數組,但您可以看到 NCRID 被硬編碼為值數組的第一個元素。 這不是我想要的,因為我正在尋找針對每個 NCRID 的所有設備序列號。 還在研究中...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM