当 CosmosDB 集合文档具有不同的属性时,如何使用 Azure 数据工厂将旧的 CosmosDB 数据归档到 Azure Table?

How to archive old CosmosDB data to Azure Table using Azure Data Factory when CosmosDB collection documents have different properties?

我正在尝试将旧数据从 CosmosDB 存档到 Azure Tables,但我对 Azure 数据工厂还很陌生,我不确定执行此操作的好方法是什么。起初,我认为这可以通过 Copy Activity 来完成,但由于存储在 CosmosDB 源中的文档的属性各不相同,所以我遇到了映射问题。关于解决此归档过程的好方法有什么想法吗?

基本上,我想要存储数据的方式是按原样复制文档根属性,并将嵌套的JSON存储为序列化字符串。

例如,如果我想归档这两个文档:

[
  {
    "identifier": "1st Guid here",
    "Contact": {
      "Name":  "John Doe",
      "Age": 99
    }
  },
  { 
    "identifier": "2nd Guid here",
    "Distributor": {
       "Name": "Jane Doe",
       "Phone": {
         "Number": "12345",
         "IsVerified": true
       }
    }
  }
]

我希望这些文档像这样存储在 Azure Table 中:

identifier      | Contact                                   | Distributor 
"Ist Guid here" | "{ \"Name\": \"John Doe\", \"Age\": 99 }" | null
"2nd Guid here" |  null                                     | "{\"Name\":\"Jane Doe\",\"Phone\":{\"Number\":\"12345\",\"IsVerified\":true}}"

复制 Activity 是否可行?

我尝试使用 CopyActivity 中的映射选项卡,但是当我尝试 运行 它时,我收到一条错误消息,指出嵌套 JSON 列之一的数据类型无法推断第一行中不存在的内容。

请按照我在Mapping Tag中的配置。

使用您的示例数据测试输出: