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

当CosmosDB集合文档具有不同的属性时,如何使用Azure数据工厂将旧CosmosDB数据归档到Azure表?,azure,azure-cosmosdb,azure-data-factory,azure-table-storage,backup-strategies,Azure,Azure Cosmosdb,Azure Data Factory,Azure Table Storage,Backup Strategies,我正在尝试将CosmosDB中的旧数据归档到Azure表中,但我对Azure data Factory非常陌生,我不确定哪种方法可以很好地做到这一点。起初,我认为这可以通过复制活动来完成,但由于存储在CosmosDB源中的文档的属性不同,我遇到了映射问题。您知道什么是解决此归档过程的好方法吗 基本上,我想要存储数据的方式是复制文档根属性,并将嵌套的JSON存储为序列化字符串 例如,如果我想归档这两个文档: [ { "identifier": "1st Guid here",

我正在尝试将CosmosDB中的旧数据归档到Azure表中,但我对Azure data Factory非常陌生,我不确定哪种方法可以很好地做到这一点。起初,我认为这可以通过复制活动来完成,但由于存储在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表中,如下所示:

identifier      | Contact                                   | Distributor 
"Ist Guid here" | "{ \"Name\": \"John Doe\", \"Age\": 99 }" | null
"2nd Guid here" |  null                                     | "{\"Name\":\"Jane Doe\",\"Phone\":{\"Number\":\"12345\",\"IsVerified\":true}}"
复制活动是否可能实现这一点


我尝试在CopyActivity中使用mapping选项卡,但是当我尝试运行它时,我得到一个错误,即无法推断第一行中不存在的某个嵌套JSON列的数据类型。

请遵循我在mapping标记中的配置

使用示例数据测试输出:


谢谢你,Jay Cong,我马上就要尝试一下,但我想知道,如果随着时间的推移,模式会发生漂移,会怎么样?我的意思是,如果我们在一个CosmosDb文档中添加一个新属性,新列会被忽略吗?有没有办法只“翻译”特定的列,比如用于分区键和行键的列,并将其余的列用它们的原始名称移动?请告诉您,您的解决方案对我有效,非常感谢@jaygong。现在我只需要弄清楚模式漂移会发生什么。