@golemio/waze-tt 1.0.9-dev.628553793 → 1.0.9-dev.634446547

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/db/migrations/postgresql/.config.json +3 -0
  2. package/db/migrations/postgresql/20220519071520-wazett.js +53 -0
  3. package/db/migrations/postgresql/20220908064516-analytic-function-and-views.js +53 -0
  4. package/db/migrations/postgresql/package.json +3 -0
  5. package/db/migrations/postgresql/sqls/20220519071520-wazett-down.sql +6 -0
  6. package/db/migrations/postgresql/sqls/20220519071520-wazett-up.sql +127 -0
  7. package/db/migrations/postgresql/sqls/20220908064516-analytic-function-and-views-down.sql +19 -0
  8. package/db/migrations/postgresql/sqls/20220908064516-analytic-function-and-views-up.sql +866 -0
  9. package/db/migrations/postgresql/sqls/package.json +3 -0
  10. package/dist/integration-engine/WazeTTWorker.d.ts +6 -0
  11. package/dist/integration-engine/WazeTTWorker.js +75 -52
  12. package/dist/integration-engine/WazeTTWorker.js.map +1 -1
  13. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.d.ts +3 -2
  14. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.js +0 -5
  15. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.js.map +1 -1
  16. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.d.ts +3 -2
  17. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.js +7 -2
  18. package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.js.map +1 -1
  19. package/dist/integration-engine/wazeTTTransformations/helpers/SubRouteIdHelper.d.ts +8 -0
  20. package/dist/integration-engine/wazeTTTransformations/helpers/SubRouteIdHelper.js +36 -0
  21. package/dist/integration-engine/wazeTTTransformations/helpers/SubRouteIdHelper.js.map +1 -0
  22. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRoute.d.ts +8 -0
  23. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRoute.js +3 -0
  24. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRoute.js.map +1 -0
  25. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRouteLives.d.ts +9 -0
  26. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRouteLives.js +3 -0
  27. package/dist/integration-engine/wazeTTTransformations/interfaces/ISubRouteLives.js.map +1 -0
  28. package/dist/schema-definitions/index.d.ts +3 -2
  29. package/dist/schema-definitions/index.js +12 -12
  30. package/dist/schema-definitions/index.js.map +1 -1
  31. package/package.json +4 -1
@@ -0,0 +1,866 @@
1
+ CREATE SCHEMA IF NOT EXISTS analytic;
2
+
3
+ -- analytic.lkpr_dashboard_route_names definition
4
+
5
+
6
+ CREATE TABLE analytic.lkpr_dashboard_route_names (
7
+ route_type text NULL,
8
+ route_num text NULL,
9
+ route_group_name text NULL,
10
+ order_idx int4 NULL
11
+ );
12
+
13
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '01', 'Podbaba => Evropská => letiště', 10);
14
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '02', 'Vítězné nám. => Evropská => letiště', 9);
15
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '03', 'Letenské náměstí => Hradčanská => Evropská => letiště', 7);
16
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '04', 'Letenské náměstí => Bubeneč => Evropská => letiště', 8);
17
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '05', 'Smíchov => Horní Liboc => letiště', 3);
18
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '06', 'Motol => Horní Liboc => letiště', 2);
19
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '07', 'Letenské náměstí => Karlovarská => letiště', 6);
20
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '08', 'Smíchov => Karlovarská => letiště', 4);
21
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '09', 'Klárov => Karlovarská => letiště', 5);
22
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '10', 'Zličín/Řepy => Drnovská => letiště', 1);
23
+ INSERT INTO analytic.lkpr_dashboard_route_names (route_type, route_num, route_group_name, order_idx) VALUES('TN', '11', 'Podbaba => Horoměřice => letiště', 11);
24
+
25
+ -- analytic.barrande_black_list_route definition
26
+
27
+ CREATE TABLE analytic.barrande_black_list_route (
28
+ route_id int8 NOT NULL,
29
+ note varchar(250) NULL,
30
+ created_at timestamptz NULL DEFAULT now(),
31
+ CONSTRAINT barrande_black_list_route_pkey PRIMARY KEY (route_id)
32
+ );
33
+
34
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(1652108561613, NULL, '2022-05-26 20:37:19.412');
35
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(1652106375503, NULL, '2022-05-26 20:37:19.412');
36
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(1652096816287, NULL, '2022-05-26 20:37:19.412');
37
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32477, NULL, '2022-05-26 20:37:19.412');
38
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32496, NULL, '2022-05-26 20:37:19.412');
39
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32497, NULL, '2022-05-26 20:37:19.412');
40
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33144, NULL, '2022-05-26 20:37:19.412');
41
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(19671439451, NULL, '2022-05-26 20:37:19.412');
42
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32437, NULL, '2022-05-26 20:37:19.412');
43
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33057, NULL, '2022-05-26 20:37:19.412');
44
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(11231032274, NULL, '2022-05-26 20:37:19.412');
45
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33140, NULL, '2022-05-26 20:37:19.412');
46
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(12130815233, NULL, '2022-05-26 20:37:19.412');
47
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33056, NULL, '2022-05-26 20:37:19.412');
48
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(11489476203, NULL, '2022-05-26 20:37:19.412');
49
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33139, NULL, '2022-05-26 20:37:19.412');
50
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(13267551138, NULL, '2022-05-26 20:37:19.412');
51
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33138, NULL, '2022-05-26 20:37:19.412');
52
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(18029801972, NULL, '2022-05-26 20:37:19.412');
53
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32896, NULL, '2022-05-26 20:37:19.412');
54
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32876, NULL, '2022-05-26 20:37:19.412');
55
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(11113356540, NULL, '2022-05-26 20:37:19.412');
56
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(33083, NULL, '2022-05-26 20:37:19.412');
57
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32988, NULL, '2022-05-26 20:37:19.412');
58
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(11605358669, NULL, '2022-05-26 20:37:19.412');
59
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32594, NULL, '2022-05-26 20:37:19.412');
60
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32502, NULL, '2022-05-26 20:37:19.412');
61
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32598, NULL, '2022-05-26 20:37:19.412');
62
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32886, NULL, '2022-05-26 20:37:19.412');
63
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(32409, NULL, '2022-05-26 20:37:19.412');
64
+ INSERT INTO analytic.barrande_black_list_route (route_id, note, created_at) VALUES(11211603747, 'Nahrazeno narovnanou trasou 1653666818530, ukončena uzavírka (pan Přemek)', '2022-06-01 09:27:21.273');
65
+
66
+ -- analytic.waze_dashboard_route_name definition
67
+
68
+ CREATE TABLE analytic.waze_dashboard_route_name (
69
+ route_id int4 NOT NULL,
70
+ idx int4 NULL,
71
+ "from" varchar(100) NULL,
72
+ "to" varchar(100) NULL,
73
+ db_name varchar(100) NULL,
74
+ "name" varchar(500) NULL,
75
+ CONSTRAINT waze_dashboard_route_name_pkey PRIMARY KEY (route_id)
76
+ );
77
+
78
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22690, 1, '5. května', 'Bubenská', 'Legerova, Wilsonova Praha', '01a. Z ul. 5. května přes Legerovu a Wilsonovu k Bubenské ul. (z centra)');
79
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22691, 2, 'Bubenská', '5. května', 'Wilsonova Praha', '01b. Z Bubenské ul. přes Wilsonovu a Legerovu k ul. 5. května (do centra)');
80
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22697, 3, 'Resslova', 'Jugoslávská', 'Resslova, Ječná Praha', '02a. Od Jiráskova mostu => I.P. Pavlova - z ul. Resslova do ul. Jugoslávská (z centra)');
81
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22733, 4, 'Anglická', 'Žitná', 'Anglická, Žitná Praha', '02b. Z nám. Míru => ul. Anglická => ul. Žitná => Karlovo náměstí (do centra)');
82
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22732, 5, 'Národní', 'Národní', 'Národní Praha V-Z', '03a. Ulice Národní od OD Máj po Národní divadlo (z centra)');
83
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22731, 6, 'Národní', 'Národní', 'Národní Praha Z-V', '03b. Ulice Národní od Národního divadla po OD Máj (do centra)');
84
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22716, 7, 'Újezd', 'Letenská', 'Újezd, Karmelitská, Letenská Praha', '04a. Újezd => Malostranské nám. => ul. Letenská => Klárov (J-S)');
85
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22715, 8, 'Valdštejnská', 'Újezd', 'Valdštejnská, Malostranské náměstí, Karmelitská Praha', '04b. Klárov => ul. Valdštejnská => Malostranské nám. => Újezd (S-J)');
86
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22720, 9, 'Masarykovo nábřeží', 'náměstí Curieových', 'Divadelní, Smetanovo nábřeží, 17. listopadu Praha', '05a. Masarykovo náb. => ul. Divadelní => Smetanovo náb. => ul. 17. listopadu (J-S)');
87
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22754, 10, 'Dvořákovo nábřeží', 'Smetanovo nábřeží', 'Smetanovo nábřeží Praha', '05b. Z Dvořákova nábřeží => Smetanovo náb. => po Národní divadlo (S-J)');
88
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22729, 11, 'nábřeží Edvarda Beneše', 'nábřeží Edvarda Beneše', 'nábřeží Edvarda Beneše Praha Z-V', '06a. Náb. Edvarda Beneše od Čechova mostu po Štefánikův most (z centra)');
89
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22728, 12, 'nábřeží Edvarda Beneše', 'nábřeží Edvarda Beneše', 'nábřeží Edvarda Beneše Praha V-Z', '06b. Náb. Edvarda Beneše od Štefánikova mostu po Čechův most (do centra)');
90
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22730, 13, 'nábřeží Kapitána Jaroše', 'Argentinská', 'nábřeží Kapitána Jaroše, Bubenské nábřeží Praha', '07a. Z nábřeží Kapitána Jaroše (Hlávkův most) do ul. Argentinská (z centra)');
91
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22713, 14, 'Chotkova', 'Badeniho', 'Chotkova, Badeniho Praha', '08a. Z Klárova do ul. Badeniho (z centra)');
92
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22714, 15, 'Badeniho', 'Klárov', 'Badeniho, Chotkova Praha', '08b. Z ul. Badeniho na Klárov (do centra)');
93
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22725, 16, 'Milady Horákové', 'Milady Horákové', 'Milady Horákové Praha V-Z', '09a. Od ul. Badeniho => ul. Milady Horákové => po Prašný most (z centra)');
94
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22724, 17, 'Milady Horákové', 'Milady Horákové', 'Milady Horákové Praha Z-V', '09b. Z Prašného mostu => ul. Milady Horákové => po ul. Badeniho (do centra)');
95
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22723, 18, 'Milady Horákové', 'Patočkova', 'Milady Horákové, Patočkova Praha', '10a. Z Prašného mostu na ul. Patočkova (po Malovanku) (z centra)');
96
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22722, 19, 'Patočkova', 'Milady Horákové', 'Patočkova, Milady Horákové Praha', '10b. Z ul. Patočkova (od Malovanky) na Prašný most (do centra)');
97
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22696, 20, 'Pod stadiony', 'Vaníčkova', 'Pod stadiony, Vaníčkova Praha', '11a. Smíchov => Strahov => Malovanka - z ul. Pod stadiony do ul. Vaníčkova (J-S)');
98
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22695, 21, 'Vaníčkova', 'Pod stadiony', 'Vaníčkova Praha', '11b. Malovanka => Strahov => Smíchov - z ul. Vaníčkova do ul. Pod stadiony (S-J)');
99
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22705, 22, 'Holečkova', 'Zapova', 'Holečkova Praha', '12a. Z ul. Holečkova do ul. Zapova (z centra)');
100
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22706, 23, 'Zapova', 'Holečkova', 'Holečkova Praha', '12b. Z ul. Zapova do ul. Holečkova (do centra)');
101
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22703, 24, 'Plzeňská', 'Plzeňská', 'Plzeňská Praha', '13a. Z ul. Kartouzská do ul. Plzeňská (z centra)');
102
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22704, 25, 'Vrchlického', 'Duškova', 'Vrchlického, Duškova Praha', '13b. Z ul. Vrchlického do ul. Duškova (do centra)');
103
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22711, 26, 'Dienzenhoferovy sady', 'Kartouzská', 'V botanice, Kartouzská Praha', '14a. Od Jiráskova mostu => ul. Kartouzská => po ul. Radlická (z centra)');
104
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22712, 27, 'Vltavská', 'Vltavská', 'Vltavská Praha', '14b. Ulice Vltavská na Smíchově (do centra)');
105
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22702, 28, 'náměstí Jana Palacha', 'Klárov', 'Mánesův most, Klárov Praha', '15a. Mánesův most (z centra)');
106
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22701, 29, 'Klárov', 'náměstí Jana Palacha', 'Klárov, Mánesův most Praha', '15b. Mánesův most (do centra)');
107
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22709, 30, 'Jiráskův most', 'Jiráskův most', 'Jiráskův most Praha V-Z', '16a. Jiráskův most (z centra)');
108
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22710, 31, 'Jiráskův most', 'Jiráskův most', 'Jiráskův most Praha ZV', '16b. Jiráskův most (do centra)');
109
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22718, 32, 'Most legií', 'Vítězná', 'Most legií, Vítězná Praha', '17a. Most legií k Újezdu (z centra)');
110
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22717, 33, 'Vítězná', 'Most legií', 'Vítězná, Most legií Praha', '17b. Most legií z Újezdu (do centra)');
111
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22693, 34, 'Strakonická', 'V Holešovičkách', 'Bubenečský tunel Praha', '18a. Tunely Zlíchov => Strahov => Blanka - ze Strakonické do ul. V Holešovičkách (J-S)');
112
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(22694, 35, 'V Holešovičkách', 'Strakonická', 'Bubenečský tunel Praha', '18b. Tunely Blanka => Strahov => Zlíchov - z ul. V Holešovičkách na Strakonickou (S-J)');
113
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(24260, 36, 'Evropská', 'Aviatická', 'Evropská - Letiště', '19a. Vítězné nám. => Evropská => LKPR (z centra)');
114
+ INSERT INTO analytic.waze_dashboard_route_name (route_id, idx, "from", "to", db_name, "name") VALUES(24261, 37, 'Aviatická', 'Svatovítská', 'Letiště - Svatovítská', '19b. Z LKPR => ul. Evropská => ul. Velvarská => ul. Gen. Píky => Prašný most (do centra)');
115
+
116
+
117
+ -- analytic.v_barrandov_bridge_route_details source
118
+
119
+ CREATE OR REPLACE VIEW analytic.v_barrandov_bridge_route_details
120
+ AS SELECT re.id,
121
+ re.name,
122
+ re.section,
123
+ re.reverse_direction,
124
+ re.from_name,
125
+ re.to_name,
126
+ re.poradi
127
+ FROM ( SELECT r.id,
128
+ r.name,
129
+ CASE
130
+ WHEN r.name ~~ '% ÚS %'::text THEN true
131
+ WHEN r.name ~~ '% TN %'::text THEN false
132
+ ELSE NULL::boolean
133
+ END AS section,
134
+ CASE
135
+ WHEN r.name ~~ '% OS%'::text THEN true
136
+ ELSE false
137
+ END AS reverse_direction,
138
+ r.from_name,
139
+ r.to_name,
140
+ row_number() OVER (PARTITION BY r.name ORDER BY r.id DESC) AS poradi
141
+ FROM wazett_routes r
142
+ WHERE "left"(r.name, 2) = 'BM'::text) re;
143
+
144
+ -- analytic.v_lkpr_route_details source
145
+
146
+ CREATE OR REPLACE VIEW analytic.v_lkpr_route_details
147
+ AS SELECT re.id,
148
+ re.name,
149
+ re.route_code,
150
+ re.route_name,
151
+ re.from_name,
152
+ re.to_name,
153
+ re.route_type,
154
+ re.route_num,
155
+ re.route_variant,
156
+ CASE
157
+ WHEN re.route_variant = 'A1'::text THEN 'Na letiště'::text
158
+ WHEN re.route_variant = 'B1'::text THEN 'Z letiště'::text
159
+ ELSE 'Ostatní'::text
160
+ END AS direction,
161
+ drn.route_group_name,
162
+ drn.order_idx
163
+ FROM ( SELECT rc.id,
164
+ rc.name,
165
+ rc.route_code,
166
+ rc.route_name,
167
+ rc.from_name,
168
+ rc.to_name,
169
+ split_part(rc.route_code, '-'::text, 1) AS route_type,
170
+ split_part(rc.route_code, '-'::text, 2) AS route_num,
171
+ split_part(rc.route_code, '-'::text, 3) AS route_variant
172
+ FROM ( SELECT r.id,
173
+ r.name,
174
+ split_part(r.name, ' '::text, 1) AS route_code,
175
+ "substring"(r.name, "position"(r.name, ' '::text) + 1) AS route_name,
176
+ r.from_name,
177
+ r.to_name
178
+ FROM wazett_routes r
179
+ WHERE r.feed_id = 1) rc) re
180
+ LEFT JOIN analytic.lkpr_dashboard_route_names drn ON re.route_type = drn.route_type AND re.route_num = drn.route_num
181
+ ORDER BY drn.order_idx;
182
+
183
+ -- analytic.v_barrande_route source
184
+
185
+ CREATE OR REPLACE VIEW analytic.v_barrande_route
186
+ AS SELECT DISTINCT ON (wazett_routes.name) wazett_routes.name,
187
+ CASE
188
+ WHEN "position"(wazett_routes.name, ' TN'::text) > 0 THEN true
189
+ ELSE false
190
+ END AS is_trasa,
191
+ CASE
192
+ WHEN "position"(wazett_routes.name, ' ÚS'::text) > 0 THEN true
193
+ ELSE false
194
+ END AS is_usek,
195
+ CASE
196
+ WHEN "position"(wazett_routes.name, ' OS'::text) > 0 THEN true
197
+ ELSE false
198
+ END AS is_opacny_smer,
199
+ CASE
200
+ WHEN wazett_routes.id = ANY (ARRAY[32875, 32876]) THEN 'OICT 3 DO'::text
201
+ WHEN wazett_routes.id = ANY (ARRAY[32888, 32889]) THEN 'OICT 3 OD'::text
202
+ ELSE "substring"(wazett_routes.name, 4,
203
+ CASE
204
+ WHEN "position"(wazett_routes.name, ' TN'::text) > 0 THEN "position"(wazett_routes.name, ' TN'::text) - 3
205
+ WHEN "position"(wazett_routes.name, ' ÚS'::text) > 0 THEN "position"(wazett_routes.name, ' ÚS'::text) - 3
206
+ ELSE NULL::integer
207
+ END)
208
+ END AS name_trasa,
209
+ "substring"(wazett_routes.name,
210
+ CASE
211
+ WHEN "position"(wazett_routes.name, ' ÚS'::text) > 0 THEN "position"(wazett_routes.name, ' ÚS'::text) + 4
212
+ ELSE length(wazett_routes.name) + 1
213
+ END,
214
+ CASE
215
+ WHEN "position"(wazett_routes.name, ' OS'::text) > 0 THEN "position"(wazett_routes.name, ' OS'::text) - "position"(wazett_routes.name, ' ÚS'::text) - 4
216
+ ELSE length(wazett_routes.name) - "position"(wazett_routes.name, ' ÚS'::text)
217
+ END) AS name_usek
218
+ FROM wazett_routes
219
+ WHERE "left"(wazett_routes.name, 2) = 'BM'::text AND NOT (EXISTS ( SELECT 1
220
+ FROM analytic.barrande_black_list_route bl
221
+ WHERE bl.route_id = wazett_routes.id))
222
+ ORDER BY wazett_routes.name, wazett_routes.created_at DESC;
223
+
224
+ -- analytic.v_wazett_routes_lines source
225
+
226
+ CREATE OR REPLACE VIEW analytic.v_wazett_routes_lines
227
+ AS SELECT wazett_routes.id,
228
+ wazett_routes.name,
229
+ st_astext(wazett_routes.line) AS line,
230
+ concat('#', "left"(lpad(to_hex((wazett_routes.id::double precision * character_length(wazett_routes.name)::double precision / (( SELECT max(wazett_routes_1.id * character_length(wazett_routes_1.name)) AS max
231
+ FROM wazett_routes wazett_routes_1))::double precision * 10000000::double precision)::bigint), 6, '0'::text), 6)) AS color
232
+ FROM wazett_routes;
233
+
234
+ -- analytic.v_barrandov_bridge_route_live source
235
+
236
+ CREATE OR REPLACE VIEW analytic.v_barrandov_bridge_route_live
237
+ AS SELECT wrl.route_id,
238
+ wrl.update_time,
239
+ wrl."time",
240
+ wrl.length,
241
+ wrl.historic_time,
242
+ wrl.jam_level,
243
+ wrl.create_batch_id,
244
+ wrl.created_at,
245
+ wrl.created_by,
246
+ wrl.update_batch_id,
247
+ wrl.updated_at,
248
+ wrl.updated_by
249
+ FROM wazett_route_lives wrl
250
+ WHERE (wrl.route_id IN ( SELECT DISTINCT wazett_routes.id
251
+ FROM wazett_routes
252
+ WHERE wazett_routes.name ~~ 'BM %'::text)) AND wrl.update_time::double precision >= (date_part('epoch'::text, CURRENT_DATE - '7 days'::interval) * 1000::double precision);
253
+
254
+
255
+ -- analytic.v_route_live source
256
+
257
+ CREATE OR REPLACE VIEW analytic.v_route_live
258
+ AS SELECT wrl.route_id,
259
+ wrl.update_time,
260
+ wrl."time",
261
+ wrl.length,
262
+ wrl.historic_time,
263
+ wrl.jam_level,
264
+ wrl.create_batch_id,
265
+ wrl.created_at,
266
+ wrl.created_by,
267
+ wrl.update_batch_id,
268
+ wrl.updated_at,
269
+ wrl.updated_by
270
+ FROM wazett_route_lives wrl
271
+ WHERE (wrl.route_id = ANY (ARRAY[24949, 24953, 24962, 24924, 24925, 24950, 24951, 24952, 24954, 24955, 24956, 24957, 24958, 24960, 24961, 24963, 24964, 24965, 24966, 24967, 24968, 24969])) AND wrl.update_time::double precision >= (( SELECT max(wazett_route_lives.update_time)::double precision - date_part('epoch'::text, '1 year'::interval) * 1000::double precision AS max
272
+ FROM wazett_route_lives));
273
+
274
+ -- analytic.v_instatntomtom_days source
275
+
276
+ CREATE OR REPLACE VIEW analytic.v_instatntomtom_days
277
+ AS SELECT to_char(to_timestamp((wrl.update_time / 1000)::double precision), 'yyyy-mm-dd'::text) AS day_index,
278
+ wrl.route_id,
279
+ round(avg(wrl."time"::numeric / wrl.historic_time::numeric), 2) AS t_index_value,
280
+ count(*) AS t_index_count
281
+ FROM wazett_route_lives wrl
282
+ WHERE to_timestamp((wrl.update_time / 1000)::double precision)::time without time zone >= '05:00:00'::time without time zone AND to_timestamp((wrl.update_time / 1000)::double precision)::time without time zone <= '21:00:00'::time without time zone
283
+ GROUP BY (to_char(to_timestamp((wrl.update_time / 1000)::double precision), 'yyyy-mm-dd'::text)), wrl.route_id;
284
+
285
+ -- analytic.v_route_travel_times source
286
+
287
+ CREATE OR REPLACE VIEW analytic.v_route_travel_times
288
+ AS SELECT ts.route_id,
289
+ ts.year,
290
+ ts.month,
291
+ ts.day,
292
+ ts.dow,
293
+ ts.hour,
294
+ ts.quarter,
295
+ ts.hour + (ts.quarter::numeric / 60::numeric)::double precision AS hour_quarter,
296
+ ((((((((ts.year || '-'::text) || ts.month) || '-'::text) || ts.day) || ' '::text) || ts.hour) || ':'::text) || ts.quarter)::timestamp without time zone AS date,
297
+ avg(ts.travel_time)::integer AS travel_time
298
+ FROM ( SELECT raw.route_id,
299
+ raw.update_time,
300
+ raw.travel_time,
301
+ date_part('year'::text, raw.update_time) AS year,
302
+ date_part('month'::text, raw.update_time) AS month,
303
+ date_part('day'::text, raw.update_time) AS day,
304
+ date_part('dow'::text, raw.update_time) AS dow,
305
+ date_part('hour'::text, raw.update_time) AS hour,
306
+ date_part('minute'::text, raw.update_time) AS minute,
307
+ date_part('minute'::text, raw.update_time)::integer / 15 * 15 AS quarter
308
+ FROM ( SELECT wazett_route_lives.route_id,
309
+ timezone('Europe/Prague'::text, to_timestamp((wazett_route_lives.update_time / 1000)::double precision)::timestamp without time zone) AS update_time,
310
+ wazett_route_lives."time" AS travel_time
311
+ FROM wazett_route_lives
312
+ JOIN analytic.waze_dashboard_route_name wdrn ON wdrn.route_id = wazett_route_lives.route_id) raw) ts
313
+ WHERE ts.year > 2000::double precision
314
+ GROUP BY ts.route_id, ts.year, ts.month, ts.day, ts.dow, ts.hour, ts.quarter;
315
+
316
+ -- analytic.v_barrande_last_update source
317
+
318
+ CREATE OR REPLACE VIEW analytic.v_barrande_last_update
319
+ AS SELECT to_timestamp((wrl.update_time / 1000)::double precision) AS last_update
320
+ FROM wazett_route_lives wrl
321
+ LEFT JOIN wazett_routes wr ON wrl.route_id = wr.id
322
+ WHERE "left"(wr.name, 3) = 'BM '::text
323
+ ORDER BY wrl.update_time DESC
324
+ LIMIT 1;
325
+
326
+
327
+
328
+
329
+ -- public.v_lkpr_export source
330
+
331
+ CREATE OR REPLACE VIEW public.v_lkpr_export
332
+ AS SELECT COALESCE(vrd.id, wrl.route_id) AS route_id,
333
+ vrd.name,
334
+ vrd.route_name,
335
+ vrd.from_name,
336
+ vrd.to_name,
337
+ vrd.route_num,
338
+ vrd.direction,
339
+ vrd.order_idx,
340
+ to_timestamp((wrl.update_time / 1000)::double precision) AS update_time,
341
+ wrl."time" AS actual_time,
342
+ round(wrl.length::numeric * 3.6 / wrl."time"::numeric) AS actual_speed,
343
+ wrl.historic_time,
344
+ round(wrl.length::numeric * 3.6 / wrl.historic_time::numeric) AS historic_speed,
345
+ wrl.length
346
+ FROM analytic.v_lkpr_route_details vrd
347
+ FULL JOIN wazett_route_lives wrl ON vrd.id = wrl.route_id
348
+ WHERE vrd.name ~~ 'TN-%'::text OR vrd.route_code ~~ 'TN-%'::text;
349
+
350
+ -- analytic.v_barrande_route_hour_core source
351
+
352
+ CREATE OR REPLACE VIEW analytic.v_barrande_route_hour_core
353
+ AS SELECT wr.name,
354
+ to_timestamp((rl.update_time / 1000)::double precision)::date AS datum,
355
+ date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)) AS hodina,
356
+ (to_char(date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)) + 1::double precision, '09'::text) AS cas_interval,
357
+ round(avg(rl."time"), 2) AS avg_time,
358
+ round(avg(rl.length * 1000 / (rl."time" * 360)), 2) AS avg_speed
359
+ FROM wazett_route_lives rl
360
+ JOIN wazett_routes wr ON wr.id = rl.route_id
361
+ WHERE rl.length > 0 AND "left"(wr.name, 2) = 'BM'::text AND NOT (EXISTS ( SELECT 1
362
+ FROM analytic.barrande_black_list_route bl
363
+ WHERE bl.route_id = rl.route_id))
364
+ GROUP BY wr.name, (to_timestamp((rl.update_time / 1000)::double precision)::date), (date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)));
365
+
366
+
367
+
368
+
369
+ -- analytic.mv_barrande_normal source
370
+
371
+ CREATE MATERIALIZED VIEW analytic.mv_barrande_normal
372
+ TABLESPACE pg_default
373
+ AS SELECT vtbh.name,
374
+ vtbh.hodina,
375
+ round(avg(vtbh.avg_time), 2) AS avg_time,
376
+ round(avg(vtbh.avg_speed)) AS avg_speed
377
+ FROM analytic.v_barrande_route_hour_core vtbh
378
+ WHERE vtbh.datum >= '2022-04-24'::date AND vtbh.datum <= '2022-05-05'::date AND (date_part('dow'::text, vtbh.datum) = ANY (ARRAY[2::double precision, 3::double precision, 4::double precision]))
379
+ GROUP BY vtbh.name, vtbh.hodina
380
+ WITH DATA;
381
+
382
+ -- View indexes:
383
+ CREATE INDEX mv_barrande_normal_idx ON analytic.mv_barrande_normal USING btree (name, hodina);
384
+
385
+ -- analytic.v_barrande_route_hour source
386
+
387
+ CREATE OR REPLACE VIEW analytic.v_barrande_route_hour
388
+ AS SELECT p.name,
389
+ p.datum,
390
+ p.hodina,
391
+ p.cas_interval,
392
+ p.avg_time,
393
+ p.avg_speed,
394
+ n.avg_time AS normal_avg_time,
395
+ n.avg_speed AS normal_avg_speed
396
+ FROM analytic.v_barrande_route_hour_core p
397
+ LEFT JOIN analytic.mv_barrande_normal n ON n.name = p.name AND p.hodina = n.hodina;
398
+
399
+ -- analytic.v_barrande_union_time_interval source
400
+
401
+ CREATE OR REPLACE VIEW analytic.v_barrande_union_time_interval
402
+ AS WITH hodiny AS (
403
+ SELECT brh.name,
404
+ brh.datum,
405
+ brh.hodina,
406
+ brh.cas_interval,
407
+ brh.avg_time,
408
+ brh.avg_speed,
409
+ brh.normal_avg_time,
410
+ brh.normal_avg_speed
411
+ FROM analytic.v_barrande_route_hour brh
412
+ WHERE brh.datum < CURRENT_DATE OR brh.hodina < date_part('hour'::text, now())
413
+ ), den AS (
414
+ SELECT hodiny.name,
415
+ hodiny.datum,
416
+ '0 - 24h'::text AS cas_interval,
417
+ round(avg(hodiny.avg_time), 2) AS avg_time,
418
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
419
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
420
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
421
+ FROM hodiny
422
+ WHERE hodiny.datum < CURRENT_DATE
423
+ GROUP BY hodiny.name, hodiny.datum
424
+ ), h15_18 AS (
425
+ SELECT hodiny.name,
426
+ hodiny.datum,
427
+ '15 -18'::text AS cas_interval,
428
+ round(avg(hodiny.avg_time), 2) AS avg_time,
429
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
430
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
431
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
432
+ FROM hodiny
433
+ WHERE hodiny.hodina >= 15::double precision AND hodiny.hodina <= 17::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 17::double precision)
434
+ GROUP BY hodiny.name, hodiny.datum
435
+ ), h22_6 AS (
436
+ SELECT hodiny.name,
437
+ hodiny.datum,
438
+ '22 - 06'::text AS cas_interval,
439
+ round(avg(hodiny.avg_time), 2) AS avg_time,
440
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
441
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
442
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
443
+ FROM hodiny
444
+ WHERE NOT (hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision) AND hodiny.datum < CURRENT_DATE
445
+ GROUP BY hodiny.name, hodiny.datum
446
+ ), h6_22 AS (
447
+ SELECT hodiny.name,
448
+ hodiny.datum,
449
+ '06 - 22'::text AS cas_interval,
450
+ round(avg(hodiny.avg_time), 2) AS avg_time,
451
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
452
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
453
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
454
+ FROM hodiny
455
+ WHERE hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 21::double precision)
456
+ GROUP BY hodiny.name, hodiny.datum
457
+ ), h7_10 AS (
458
+ SELECT hodiny.name,
459
+ hodiny.datum,
460
+ '07 - 10'::text AS cas_interval,
461
+ round(avg(hodiny.avg_time), 2) AS avg_time,
462
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
463
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
464
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
465
+ FROM hodiny
466
+ WHERE hodiny.hodina >= 7::double precision AND hodiny.hodina <= 9::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 10::double precision)
467
+ GROUP BY hodiny.name, hodiny.datum
468
+ ), h7_11_15_19 AS (
469
+ SELECT hodiny.name,
470
+ hodiny.datum,
471
+ '07 - 11, 15 - 19'::text AS cas_interval,
472
+ round(avg(hodiny.avg_time), 2) AS avg_time,
473
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
474
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
475
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
476
+ FROM hodiny
477
+ WHERE (hodiny.hodina >= 7::double precision AND hodiny.hodina <= 10::double precision OR hodiny.hodina >= 15::double precision AND hodiny.hodina <= 18::double precision) AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 18::double precision)
478
+ GROUP BY hodiny.name, hodiny.datum
479
+ )
480
+ SELECT hodiny.name,
481
+ hodiny.datum,
482
+ hodiny.cas_interval,
483
+ hodiny.avg_time,
484
+ hodiny.avg_speed,
485
+ hodiny.normal_avg_time,
486
+ hodiny.normal_avg_speed
487
+ FROM hodiny
488
+ UNION ALL
489
+ SELECT den.name,
490
+ den.datum,
491
+ den.cas_interval,
492
+ den.avg_time,
493
+ den.avg_speed,
494
+ den.normal_avg_time,
495
+ den.normal_avg_speed
496
+ FROM den
497
+ UNION ALL
498
+ SELECT h15_18.name,
499
+ h15_18.datum,
500
+ h15_18.cas_interval,
501
+ h15_18.avg_time,
502
+ h15_18.avg_speed,
503
+ h15_18.normal_avg_time,
504
+ h15_18.normal_avg_speed
505
+ FROM h15_18
506
+ UNION ALL
507
+ SELECT h22_6.name,
508
+ h22_6.datum,
509
+ h22_6.cas_interval,
510
+ h22_6.avg_time,
511
+ h22_6.avg_speed,
512
+ h22_6.normal_avg_time,
513
+ h22_6.normal_avg_speed
514
+ FROM h22_6
515
+ UNION ALL
516
+ SELECT h6_22.name,
517
+ h6_22.datum,
518
+ h6_22.cas_interval,
519
+ h6_22.avg_time,
520
+ h6_22.avg_speed,
521
+ h6_22.normal_avg_time,
522
+ h6_22.normal_avg_speed
523
+ FROM h6_22
524
+ UNION ALL
525
+ SELECT h7_10.name,
526
+ h7_10.datum,
527
+ h7_10.cas_interval,
528
+ h7_10.avg_time,
529
+ h7_10.avg_speed,
530
+ h7_10.normal_avg_time,
531
+ h7_10.normal_avg_speed
532
+ FROM h7_10
533
+ UNION ALL
534
+ SELECT h7_11_15_19.name,
535
+ h7_11_15_19.datum,
536
+ h7_11_15_19.cas_interval,
537
+ h7_11_15_19.avg_time,
538
+ h7_11_15_19.avg_speed,
539
+ h7_11_15_19.normal_avg_time,
540
+ h7_11_15_19.normal_avg_speed
541
+ FROM h7_11_15_19;
542
+
543
+ -- analytic.v_barrande_data_all source
544
+
545
+ CREATE OR REPLACE VIEW analytic.v_barrande_data_all
546
+ AS WITH data1 AS (
547
+ SELECT trasy.name,
548
+ trasy.name_trasa,
549
+ trasy.name_usek,
550
+ CASE
551
+ WHEN trasy.is_opacny_smer THEN 'Zpět'::text
552
+ ELSE 'Tam'::text
553
+ END AS smer,
554
+ vbu.datum,
555
+ vbu.cas_interval,
556
+ vbu.avg_time,
557
+ vbu.avg_speed,
558
+ vbu.normal_avg_time,
559
+ vbu.normal_avg_speed
560
+ FROM analytic.v_barrande_union_time_interval vbu
561
+ JOIN analytic.v_barrande_route trasy ON trasy.name = vbu.name
562
+ ), data2 AS (
563
+ SELECT data1.name_trasa,
564
+ data1.name_usek,
565
+ 'Oba'::text AS smer,
566
+ data1.datum,
567
+ data1.cas_interval,
568
+ sum(data1.avg_time) AS avg_time,
569
+ avg(data1.avg_speed) AS avg_speed,
570
+ sum(data1.normal_avg_time) AS normal_avg_time,
571
+ avg(data1.normal_avg_speed) AS normal_avg_speed
572
+ FROM data1
573
+ GROUP BY data1.name_trasa, data1.name_usek, 'Oba'::text, data1.datum, data1.cas_interval
574
+ )
575
+ SELECT data1.name,
576
+ data1.name_trasa,
577
+ data1.name_usek,
578
+ data1.smer,
579
+ data1.datum,
580
+ data1.cas_interval,
581
+ data1.avg_time,
582
+ data1.avg_speed,
583
+ data1.normal_avg_time,
584
+ data1.normal_avg_speed
585
+ FROM data1
586
+ UNION
587
+ SELECT vbt.name,
588
+ data2.name_trasa,
589
+ data2.name_usek,
590
+ data2.smer,
591
+ data2.datum,
592
+ data2.cas_interval,
593
+ data2.avg_time,
594
+ data2.avg_speed,
595
+ data2.normal_avg_time,
596
+ data2.normal_avg_speed
597
+ FROM data2
598
+ JOIN analytic.v_barrande_route vbt ON vbt.name_trasa = data2.name_trasa AND vbt.name_usek = data2.name_usek AND NOT vbt.is_opacny_smer;
599
+
600
+
601
+
602
+
603
+ CREATE OR REPLACE PROCEDURE analytic.update_barande()
604
+ LANGUAGE plpgsql
605
+ AS $procedure$
606
+ declare
607
+ lastupdatetimestamp timestamptz;
608
+ lastupdateunix bigint;
609
+ begin
610
+ select
611
+ case
612
+ when start_day is not null
613
+ then start_day
614
+ else '2021-01-01'
615
+ end as start_day_from into lastupdatetimestamp
616
+ from (select max(datum)-interval '1 days' start_day from analytic.barrande_route_hour_core) barandemax;
617
+
618
+ lastupdateunix := extract ('epoch' from lastupdatetimestamp) * 1000;
619
+
620
+
621
+ insert into analytic.barrande_route_hour_core
622
+ SELECT
623
+ wr.name,
624
+ to_timestamp((rl.update_time / 1000)::double precision)::date AS datum,
625
+ date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)) AS hodina,
626
+ (to_char(date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)) + 1::double precision, '09'::text) AS cas_interval,
627
+ round(avg(rl."time"), 2) AS avg_time,
628
+ round(avg(rl.length * 1000 / (rl."time" * 360)), 2) AS avg_speed
629
+ FROM wazett_route_lives rl
630
+ JOIN wazett_routes wr ON wr.id = rl.route_id
631
+ WHERE
632
+ rl.update_time > lastupdateunix and
633
+ rl.length > 0 AND "left"(wr.name, 2) = 'BM'::text AND NOT (EXISTS ( SELECT 1
634
+ FROM analytic.barrande_black_list_route bl
635
+ WHERE bl.route_id = rl.route_id))
636
+ GROUP BY wr.name, (to_timestamp((rl.update_time / 1000)::double precision)::date), (date_part('hour'::text, to_timestamp((rl.update_time / 1000)::double precision)))
637
+ ON CONFLICT (name,datum,hodina,cas_interval)
638
+ DO update
639
+ SET avg_time = EXCLUDED.avg_time,
640
+ avg_speed = EXCLUDED.avg_speed;
641
+
642
+
643
+ insert into analytic.barrande_data_all
644
+ WITH
645
+ v_barrande_route_hour as (
646
+ SELECT p.name,
647
+ p.datum,
648
+ p.hodina,
649
+ p.cas_interval,
650
+ p.avg_time,
651
+ p.avg_speed,
652
+ n.avg_time AS normal_avg_time,
653
+ n.avg_speed AS normal_avg_speed
654
+ FROM analytic.barrande_route_hour_core p
655
+ LEFT JOIN analytic.mv_barrande_normal n ON n.name = p.name AND p.hodina = n.hodina
656
+ where datum > lastupdatetimestamp
657
+ ),
658
+ -- konec v_barrande_route_hour
659
+ v_barrande_union_time_interval as (
660
+ WITH hodiny AS (
661
+ SELECT brh.name,
662
+ brh.datum,
663
+ brh.hodina,
664
+ brh.cas_interval,
665
+ brh.avg_time,
666
+ brh.avg_speed,
667
+ brh.normal_avg_time,
668
+ brh.normal_avg_speed
669
+ FROM v_barrande_route_hour brh
670
+ WHERE brh.datum < CURRENT_DATE OR brh.hodina < date_part('hour'::text, now())
671
+ ), den AS (
672
+ SELECT hodiny.name,
673
+ hodiny.datum,
674
+ '0 - 24h'::text AS cas_interval,
675
+ round(avg(hodiny.avg_time), 2) AS avg_time,
676
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
677
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
678
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
679
+ FROM hodiny
680
+ WHERE hodiny.datum < CURRENT_DATE
681
+ GROUP BY hodiny.name, hodiny.datum
682
+ ), h15_18 AS (
683
+ SELECT hodiny.name,
684
+ hodiny.datum,
685
+ '15 -18'::text AS cas_interval,
686
+ round(avg(hodiny.avg_time), 2) AS avg_time,
687
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
688
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
689
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
690
+ FROM hodiny
691
+ WHERE hodiny.hodina >= 15::double precision AND hodiny.hodina <= 17::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 17::double precision)
692
+ GROUP BY hodiny.name, hodiny.datum
693
+ ), h22_6 AS (
694
+ SELECT hodiny.name,
695
+ hodiny.datum,
696
+ '22 - 06'::text AS cas_interval,
697
+ round(avg(hodiny.avg_time), 2) AS avg_time,
698
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
699
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
700
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
701
+ FROM hodiny
702
+ WHERE NOT (hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision) AND hodiny.datum < CURRENT_DATE
703
+ GROUP BY hodiny.name, hodiny.datum
704
+ ), h6_22 AS (
705
+ SELECT hodiny.name,
706
+ hodiny.datum,
707
+ '06 - 22'::text AS cas_interval,
708
+ round(avg(hodiny.avg_time), 2) AS avg_time,
709
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
710
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
711
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
712
+ FROM hodiny
713
+ WHERE hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 21::double precision)
714
+ GROUP BY hodiny.name, hodiny.datum
715
+ ), h7_10 AS (
716
+ SELECT hodiny.name,
717
+ hodiny.datum,
718
+ '07 - 10'::text AS cas_interval,
719
+ round(avg(hodiny.avg_time), 2) AS avg_time,
720
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
721
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
722
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
723
+ FROM hodiny
724
+ WHERE hodiny.hodina >= 7::double precision AND hodiny.hodina <= 9::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 10::double precision)
725
+ GROUP BY hodiny.name, hodiny.datum
726
+ ), h7_11_15_19 AS (
727
+ SELECT hodiny.name,
728
+ hodiny.datum,
729
+ '07 - 11, 15 - 19'::text AS cas_interval,
730
+ round(avg(hodiny.avg_time), 2) AS avg_time,
731
+ round(avg(hodiny.avg_speed), 2) AS avg_speed,
732
+ round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
733
+ round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
734
+ FROM hodiny
735
+ WHERE (hodiny.hodina >= 7::double precision AND hodiny.hodina <= 10::double precision OR hodiny.hodina >= 15::double precision AND hodiny.hodina <= 18::double precision) AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 18::double precision)
736
+ GROUP BY hodiny.name, hodiny.datum
737
+ )
738
+ SELECT hodiny.name,
739
+ hodiny.datum,
740
+ hodiny.cas_interval,
741
+ hodiny.avg_time,
742
+ hodiny.avg_speed,
743
+ hodiny.normal_avg_time,
744
+ hodiny.normal_avg_speed
745
+ FROM hodiny
746
+ UNION ALL
747
+ SELECT den.name,
748
+ den.datum,
749
+ den.cas_interval,
750
+ den.avg_time,
751
+ den.avg_speed,
752
+ den.normal_avg_time,
753
+ den.normal_avg_speed
754
+ FROM den
755
+ UNION ALL
756
+ SELECT h15_18.name,
757
+ h15_18.datum,
758
+ h15_18.cas_interval,
759
+ h15_18.avg_time,
760
+ h15_18.avg_speed,
761
+ h15_18.normal_avg_time,
762
+ h15_18.normal_avg_speed
763
+ FROM h15_18
764
+ UNION ALL
765
+ SELECT h22_6.name,
766
+ h22_6.datum,
767
+ h22_6.cas_interval,
768
+ h22_6.avg_time,
769
+ h22_6.avg_speed,
770
+ h22_6.normal_avg_time,
771
+ h22_6.normal_avg_speed
772
+ FROM h22_6
773
+ UNION ALL
774
+ SELECT h6_22.name,
775
+ h6_22.datum,
776
+ h6_22.cas_interval,
777
+ h6_22.avg_time,
778
+ h6_22.avg_speed,
779
+ h6_22.normal_avg_time,
780
+ h6_22.normal_avg_speed
781
+ FROM h6_22
782
+ UNION ALL
783
+ SELECT h7_10.name,
784
+ h7_10.datum,
785
+ h7_10.cas_interval,
786
+ h7_10.avg_time,
787
+ h7_10.avg_speed,
788
+ h7_10.normal_avg_time,
789
+ h7_10.normal_avg_speed
790
+ FROM h7_10
791
+ UNION ALL
792
+ SELECT h7_11_15_19.name,
793
+ h7_11_15_19.datum,
794
+ h7_11_15_19.cas_interval,
795
+ h7_11_15_19.avg_time,
796
+ h7_11_15_19.avg_speed,
797
+ h7_11_15_19.normal_avg_time,
798
+ h7_11_15_19.normal_avg_speed
799
+ FROM h7_11_15_19
800
+ ),
801
+ -----------------------
802
+ data1 AS (
803
+ SELECT
804
+ trasy.name,
805
+ trasy.name_trasa,
806
+ trasy.name_usek,
807
+ CASE
808
+ WHEN trasy.is_opacny_smer THEN 'Zpět'::text
809
+ ELSE 'Tam'::text
810
+ END AS smer,
811
+ vbu.datum,
812
+ vbu.cas_interval,
813
+ vbu.avg_time,
814
+ vbu.avg_speed,
815
+ vbu.normal_avg_time,
816
+ vbu.normal_avg_speed
817
+ FROM v_barrande_union_time_interval vbu
818
+ JOIN analytic.v_barrande_route trasy ON trasy.name = vbu.name
819
+ ),
820
+ data2 AS (
821
+ SELECT
822
+ data1.name_trasa,
823
+ data1.name_usek,
824
+ 'Oba'::text AS smer,
825
+ data1.datum,
826
+ data1.cas_interval,
827
+ sum(data1.avg_time) AS avg_time,
828
+ avg(data1.avg_speed) AS avg_speed,
829
+ sum(data1.normal_avg_time) AS normal_avg_time,
830
+ avg(data1.normal_avg_speed) AS normal_avg_speed
831
+ FROM data1
832
+ GROUP BY data1.name_trasa, data1.name_usek, 'Oba'::text, data1.datum, data1.cas_interval
833
+ )
834
+ SELECT data1.name,
835
+ data1.name_trasa,
836
+ data1.name_usek,
837
+ data1.smer,
838
+ data1.datum,
839
+ data1.cas_interval,
840
+ data1.avg_time,
841
+ data1.avg_speed,
842
+ data1.normal_avg_time,
843
+ data1.normal_avg_speed
844
+ FROM data1
845
+ UNION
846
+ SELECT vbt.name,
847
+ data2.name_trasa,
848
+ data2.name_usek,
849
+ data2.smer,
850
+ data2.datum,
851
+ data2.cas_interval,
852
+ data2.avg_time,
853
+ data2.avg_speed,
854
+ data2.normal_avg_time,
855
+ data2.normal_avg_speed
856
+ FROM data2
857
+ JOIN analytic.v_barrande_route vbt ON vbt.name_trasa = data2.name_trasa AND vbt.name_usek = data2.name_usek AND NOT vbt.is_opacny_smer
858
+ on conflict (name,name_trasa,name_usek,smer,datum,cas_interval)
859
+ do update
860
+ SET avg_time = EXCLUDED.avg_time,
861
+ avg_speed = EXCLUDED.avg_speed,
862
+ normal_avg_time = EXCLUDED.normal_avg_time,
863
+ normal_avg_speed = EXCLUDED.normal_avg_speed;
864
+ end;
865
+ $procedure$
866
+ ;