我正在尝试获取一个大型的,深度嵌套的JSON对象,该对象包含我们的营销CRM中的所有联系人及其属性,并将其转换为回填每日表格。
对象来自this api endpoint,其参数为“属性模式” = value_and_history。
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 |
我不确定是否采用这种方法走了正确的路。我认为我可以透视此数据框并将其连接到日期维度表,然后对数据框进行分组和填充,但是同样,我不确定这是否是最佳方法。
我要查找的最终结果是一个数据框,其中包含从addAt天到当天的每一天的每个联系人的记录,每个属性的列,包含给定日期该属性的值。
e.x。
|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 |