我知道这个问题有点长(抱歉)。我认为详细的描述能更好地解释我的情况。 我从流式处理端点接收设备数据。流中的每个有效负载包括多个数据实体。我创建了以下结构来存储在dynamo中
db_pk = str(msg.get('key'))
db_sk = str(msg.get('sortKey'))
area_id = str(msg.get('area'))
## other entities in following mapped_values...
mapped_values = {
startTime: {
'alert_msg': alert,
'area ': area_id,
'speed': speed,
'state': state,
'startTime': startTime,
'duration': duration,
'inspector': inspector_id
}
}
# Data item
lt_item = {
'id': db_pk,
'serialNo': db_sk,
'value_map': [mapped_values]
}
我使用下面的update语句创建每个有效负载中传入数据的映射。在
^{pr2}$上面的update表达式在dynamo中的value_map
键下创建一个消息映射,每当收到新消息时,它将按如下方式附加到映射中:
{
"id": "KD_125",
"serialNo": "KDCRT-231"
"value_map": [
{
"2019-05-29 14:36:03": { #first msg in payload
"alert_msg": "0x12 LOGICAL ERROR AT DIRECTION SELECT SIGNAL",
"area": "TX-112",
"speed": "65",
"startTime": "2019-05-29 14:36:03",
"state": "ACTIVE",
"duration": "None"
"inspector": "None"
}
},
{
"2019-05-29 14:36:03": { # second msg, same timestamp with first one
"alert_msg": "0x12 LOGICAL ERROR AT DIRECTION SELECT SIGNAL",
"area": "None",
"speed": "None",
"startTime": "2019-05-29 14:36:03",
"state": "PASSIVE",
"duration": "1200"
"inspector" "422TX19"
}
}
#another message with different timestamp and data values
]
}
有些消息是用相同的时间戳(startTime
)发送的。如果state='ACTIVE'
在消息中,它包括除duration
和inspector
之外的所有数据;如果state='PASSIVE'
,则包括{area
和speed
之外的其他数据(见上面的示例)。在
如果在有效负载中发送了相同的timestamp
,我需要用'PASSIVE'
状态消息的None
值(duration
和{'PASSIVE'
创建两个对象。所以最终的形状应该是:
{
"id": "KD_125",
"serialNo": "KDCRT-231"
"value_map": [
{
"2019-05-29 14:36:03": {
"alert_msg": "0x12 LOGICAL ERROR AT DIRECTION SELECT SIGNAL",
"area": "TX-112",
"speed": "65",
"startTime": "2019-05-29 14:36:03",
"state": "PASSIVE", # updated from PASSIVE state msg
"duration": "1200" # updated values from PASSIVE state msg
"inspector": "422TX19" # updated values from PASSIVE state msg
}
}
# other messages with different timestamps
]
}
我尝试了不同的update expressions,例如if_not_exists
。另外,用
ExpressionAttributeNames = {
'#value_map': 'value_map.startTime'
}
选项。。但到目前为止还没有成功。我希望有人能给我建议一种方法来更新。。在
目前没有回答
相关问题 更多 >
编程相关推荐