Merge branch 't.malinin-dev-patch-31060' into 'dev'

Update create_procedures.py

See merge request spatial/postamates!144
dev
Timofey Malinin 2 years ago
commit 960fcf4ecc

@ -1,19 +1,17 @@
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from service.utils import run_sql_command, log_to_telegram from service.utils import run_sql_command, log_to_telegram
CMD_PIVOT_DIST = """DROP VIEW IF EXISTS points_with_dist; CMD_PIVOT_DIST = """CREATE OR REPLACE VIEW compact_placementpoint AS
CREATE OR REPLACE VIEW points_with_dist AS SELECT id, status, category, age_day, fact, area_id, district_id, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_placementpoint;
SELECT status, category, age_day, fact, area_id, district_id, address, name, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_placementpoint; CREATE OR REPLACE procedure pivot_dist()
CREATE OR REPLACE PROCEDURE pivot_dist()
--RETURNS SET OF record --RETURNS SET OF record
AS $BODY$ AS $BODY$
DECLARE columnNames TEXT; DECLARE columnNames TEXT;
BEGIN BEGIN
DROP VIEW IF EXISTS points_with_dist; DROP VIEW IF EXISTS points_with_dist;
SELECT 'placement_point bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_placementpointpvzdistance order by 1) as asd SELECT 'placement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_placementpointpvzdistance order by 1) as asd
INTO columnNames; INTO columnNames;
EXECUTE format('CREATE OR REPLACE VIEW points_with_dist AS SELECT EXECUTE format('CREATE OR REPLACE VIEW points_with_dist AS SELECT *
FROM CROSSTAB( FROM CROSSTAB(
$$ $$
SELECT placement_point_id, pvz_postamates_group_id, dist SELECT placement_point_id, pvz_postamates_group_id, dist
@ -21,19 +19,21 @@ FROM CROSSTAB(
ORDER BY 1, 2 ORDER BY 1, 2
$$ $$
) AS ct(%s) ) AS ct(%s)
LEFT JOIN service_placementpoint ON placement_point_id=id' LEFT JOIN compact_placementpoint ON placement_point_id=id'
,columnNames); ,columnNames);
END; END;
$BODY$ $BODY$
LANGUAGE plpgsql; LANGUAGE plpgsql;
""" """
CMD_PIVOT_DIST_PRE = """CREATE OR REPLACE procedure prepivot_dist() CMD_PIVOT_DIST_PRE = """CREATE OR REPLACE VIEW compact_preplacementpoint AS
SELECT id, status, category, age_day, fact, area_id, district_id, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_preplacementpoint;
CREATE OR REPLACE procedure prepivot_dist()
AS $BODY$ AS $BODY$
DECLARE columnNames TEXT; DECLARE columnNames TEXT;
BEGIN BEGIN
DROP VIEW IF EXISTS prepoints_with_dist; DROP VIEW IF EXISTS prepoints_with_dist;
SELECT 'placement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_preplacementpointpvzdistance order by 1) as asd SELECT 'preplacement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_preplacementpointpvzdistance order by 1) as asd
INTO columnNames; INTO columnNames;
EXECUTE format('CREATE OR REPLACE VIEW prepoints_with_dist AS SELECT * EXECUTE format('CREATE OR REPLACE VIEW prepoints_with_dist AS SELECT *
FROM CROSSTAB( FROM CROSSTAB(
@ -43,11 +43,12 @@ FROM CROSSTAB(
ORDER BY 1, 2 ORDER BY 1, 2
$$ $$
) AS ct(%s) ) AS ct(%s)
LEFT JOIN service_preplacementpoint ON placement_point_id=id' LEFT JOIN compact_preplacementpoint ON preplacement_point_id=id'
,columnNames); ,columnNames);
END; END;
$BODY$ $BODY$
LANGUAGE plpgsql;""" LANGUAGE plpgsql;
"""
class Command(BaseCommand): class Command(BaseCommand):
help = 'Create procedures' help = 'Create procedures'

Loading…
Cancel
Save