Python 从深度嵌套的JSON对象回填每日表

Python 从深度嵌套的JSON对象回填每日表,python,json,pandas,etl,hubspot,Python,Json,Pandas,Etl,Hubspot,我试图获取一个大型、嵌套深度很深的JSON对象,该对象包含营销CRM中的所有联系人及其属性,并将其转换为回填每日表 对象来自参数“Property Mode”=值和历史 JSON对象包含CRM中每个联系人记录的对象列表,其中包含另一个嵌套对象,该对象具有与相应联系人记录相关联的所有属性(每个联系人具有20-80个我需要回填的唯一属性) 在包含属性的对象中,有一个嵌套的对象列表(“下面的示例中为“版本”),其中包含属性值和更新属性时的时间戳 JSON对象示例: { "contacts": [

我试图获取一个大型、嵌套深度很深的JSON对象,该对象包含营销CRM中的所有联系人及其属性,并将其转换为回填每日表

对象来自参数“Property Mode”=值和历史

JSON对象包含CRM中每个联系人记录的对象列表,其中包含另一个嵌套对象,该对象具有与相应联系人记录相关联的所有属性(每个联系人具有20-80个我需要回填的唯一属性)

在包含属性的对象中,有一个嵌套的对象列表(“下面的示例中为“版本”),其中包含属性值和更新属性时的时间戳

JSON对象示例:

{
  "contacts": [
    {
      "addedAt": 1390574181854,
      "uniqueContactId": 204727,
      "canonical-vid": 204727,
      "portal-id": 62515,
      "properties": {
        "leadScore": {
          "value": "50",
          "versions": [
            {
              "value": "50",
              "timestamp": 1493910688065
            },
            {
              "value": "25",
              "timestamp": 1494022165157
            },
            {
              "value": "30",
              "timestamp": 1493011165157
            }
          ]
        },
        "lifecycleStage": {
          "value": "salesQualifiedLead",
          "versions": [
            {
              "value": "salesQualifiedLead",
              "timestamp": 1493911260146
            },
            {
              "value": "marketingQualifiedLead",
              "timestamp": 1493911177118
            },
            {
              "value": "lead",
              "timestamp": 1493011165157
            }
          ]
        }
      }
    }
  ]
}
我已经在下面的结构中将对象展平为一个数据帧

| contactId | timestamp | propertyName | propertyValue | |------------|---------------|----------------|------------------------| | 204727 | 1493910688065 | leadScore | 50 | | 204727 | 1494022165157 | leadScore | 25 | | 204727 | 1494012165567 | leadScore | 30 | | 204727 | 1493911260146 | lifecycleStage | salesQualifiedLead | | 204727 | 1493911177118 | lifecycleStage | marketingQualifiedLead | | 204727 | 1493910832532 | lifecycleStage | lead | |联系人ID |时间戳|属性名称|属性值| |------------|---------------|----------------|------------------------| |204727 | 1493901688065 |领先分数| 50| |204727 | 1494022165157 |领先分数| 25| |204727 | 14940165567 |领先分数| 30| |204727 | 149391260146 |生命周期状态|销售资格标签| |204727 | 149391177118 |生命周期地产|市场合格率| |204727 | 14939101832532 |生命周期状态|领先| 我不确定我是否走上了正确的道路。我想我可以将这个数据帧透视并将其连接到一个日期维度表中,然后对数据帧进行分组和填充,但同样,我不相信这是最好的方法

我要寻找的最终结果是一个数据框,其中包含从addedAt日期到当前日期的每天每个联系人的记录,每个属性都有列,包含给定日期该属性的值

e、 十,

|dim|U日期|联系人ID |添加在| leadScore | LifecycleState | |----------|------------|---------------|-----------|-------------------| |2019-10-16 | 204727 | 2014-01-24 | 50 | salesQualifiedLead| | [...] | |2017-05-04 | 204727 | 2014-01-24 | 50 | salesQualifiedLead| | [...] | |2017-04-24 | 204727 | 2014-01-24 | 25 |领先| |dim_date | contactId | added_at | leadScore | lifecycleStage | |----------|------------|---------------|-----------|-------------------| |2019-10-16| 204727 | 2014-01-24 | 50 |salesQualifiedLead | | [...] | |2017-05-04| 204727 | 2014-01-24 | 50 |salesQualifiedLead | | [...] | |2017-04-24| 204727 | 2014-01-24 | 25 |lead |