PG plpython存储过程计算结果直接入库

> 处理函数(返回多条结果数组)

1
2
3
4
5
6
7
8
9
drop FUNCTION cal_charge_sample(records dwd_pv_behavior_di[]);
CREATE FUNCTION cal_charge_sample(records dwd_pv_behavior_di[])
RETURNS json AS $$
import json
import pandas as pd
df = pd.DataFrame.from_records(records)
result_tag = [{"vin":'AHHDHD',"tag":'片段1'},{"vin":'AHHDHD',"tag":'片段2'}]
return json.dumps(result_tag)
$$ LANGUAGE plpython3u;

  >> 查询结果

 

> 处理函数(返回单条)

1
2
3
4
5
6
7
8
9
drop FUNCTION cal_charge_sample(records dwd_pv_behavior_di[]);
CREATE FUNCTION cal_charge_sample(records dwd_pv_behavior_di[])
RETURNS json AS $$
import json
import pandas as pd
df = pd.DataFrame.from_records(records)
result_tag = {"vin":'AHHDHD',"tag":'片段1'}
return json.dumps(result_tag)
$$ LANGUAGE plpython3u;

  >> 查询结果

 

1、结算结果为单条插入
  

1
2
with result as (select cal_charge_cycles(array_agg(dwd_pv_behavior_di.*)) from dwd.dwd_pv_behavior_di GROUP BY vin)
insert into dws.dws_pv_behavior_charge_diselect * from result;


2、计算结果为多条插入

1
2
3
4
5
6
with result as (
select unnest(cal_cycle_sample)::json as tag_res from
select dws.cal_cycle_sample('charge',array_agg(dwd_pv_behavior_di.*),'[{"id":106}]') from dwd.dwd_pv_behavior_di group by vin
as t1)
insert into dws.dws_pv_behavior_charge_di
select res.* from result,json_populate_record(null::dws.dws_pv_behavior_charge_di,tag_res) as res

  

posted on   滚动的蛋  阅读(60)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示