Postgresql 插入值的迭代
我将尝试以抽象视图的形式呈现当前设置,重点是批插入的逻辑方法 创建表factv id,…其他列。。; 创建表id,…其他列。。; 创建表格dims id序列,尺寸jsonb; 这两个事实表共享相同的维度,但它们有不同的列 有一个向表发送消息的事件流,有一个为每行执行的函数,逻辑类似于: 创建或替换函数insert_事件将触发器返回为$$ 如果event_json->'type'='someEvent',则 使用factv_插入作为 插入factv VALUES id,…其他列。。 fn_createDimId, 新的.event_json->。。, ... 返回id 插入事实值id,…其他列。。 从factv_insert中选择id, 新的.event_json->。。 还有什么事吗。。。 如果结束; 归还新的; 终止 $$语言PLPGSQL; 这里调用的函数fn_createDimId只查找dims表,如果找不到这些维度,则插入它们。如果这些已经在那里了,就给我这些维度的id作为这个事实插入的id 我确实遇到了一些新事件,我需要获取一些信息,这些信息打破了insert into..values的规则,但有错误:作为表达式使用的子查询返回了多行 事件结构类似,但不限于Postgresql 插入值的迭代,postgresql,loops,plpgsql,common-table-expression,jsonb,Postgresql,Loops,Plpgsql,Common Table Expression,Jsonb,我将尝试以抽象视图的形式呈现当前设置,重点是批插入的逻辑方法 创建表factv id,…其他列。。; 创建表id,…其他列。。; 创建表格dims id序列,尺寸jsonb; 这两个事实表共享相同的维度,但它们有不同的列 有一个向表发送消息的事件流,有一个为每行执行的函数,逻辑类似于: 创建或替换函数insert_事件将触发器返回为$$ 如果event_json->'type'='someEvent',则 使用factv_插入作为 插入factv VALUES id,…其他列。。 fn_crea
{
"type": "someEvent",
"instruction": {
"contains": {
"id": "containerid",
"map": {
"50561:null:null": {
"productid": "50561",
"quantity": 3
},
"50562:null:null": {
"productid": "50562",
"quantity": 8
},
"50559:null:null": {
"productid": "50559",
"quantity": 5
}
}
},
"target": {
"50561": "Random",
"50562": "Random",
"50559": "Mix",
}
}
}
这里出现问题的原因是目标周围的信息以及这些ID的相应数量。从上面显示的事件中,我需要聚合并插入事实表:
-------|-----
target | qty
-------|-----
Random | 11
Mixed | 5
-------------
如果要查询以获取信息,我将运行以下操作:
将元数据作为
选择
json\u对象\u键事件\u json->‘指令’->‘目标’作为prodid
,事件\u json->‘指令’->‘目标’->json\u对象\u按键事件\u json->‘指令’->‘目标’作为目标
,事件\u json->“指令”->“包含”->“映射”->json\u对象\u按键事件\u json->“指令”->“包含”->“映射”->“数量”作为数量
从事件表
选择
目标
sumqty::int
从元数据
按目标分组;
我希望找到一个解决方案,使其能够执行相同的逻辑操作,但克服了多个返回行上的错误,理想情况下是对每个返回超过1行的事件进行迭代