@golemio/waze-tt 1.1.0-dev.769510269 → 1.1.0-dev.770141830
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.
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20230207073127-malastrana20230207-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20230207073127-malastrana20230207-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* Replace with your SQL commands */
|
|
2
|
+
DROP PROCEDURE analytic.update_mala_strana;
|
|
3
|
+
|
|
4
|
+
DROP MATERIALIZED VIEW analytic.mv_mala_strana_normal;
|
|
5
|
+
|
|
6
|
+
DROP VIEW analytic.v_mala_strana_route;
|
|
7
|
+
|
|
8
|
+
DROP TABLE analytic.mala_strana_route_hour_core;
|
|
9
|
+
DROP TABLE analytic.mala_strana_data_all;
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/* Replace with your SQL commands */
|
|
2
|
+
|
|
3
|
+
CREATE TABLE analytic.mala_strana_data_all (
|
|
4
|
+
"name" text NOT NULL,
|
|
5
|
+
name_trasa text NOT NULL,
|
|
6
|
+
name_usek text NOT NULL,
|
|
7
|
+
smer text NOT NULL,
|
|
8
|
+
datum date NOT NULL,
|
|
9
|
+
cas_interval text NOT NULL,
|
|
10
|
+
avg_time numeric NULL,
|
|
11
|
+
avg_speed numeric NULL,
|
|
12
|
+
normal_avg_time numeric NULL,
|
|
13
|
+
normal_avg_speed numeric NULL
|
|
14
|
+
);
|
|
15
|
+
CREATE UNIQUE INDEX mala_strana_data_all_pkey ON analytic.mala_strana_data_all
|
|
16
|
+
USING btree (name, name_trasa, name_usek, smer, datum, cas_interval);
|
|
17
|
+
|
|
18
|
+
CREATE TABLE analytic.mala_strana_route_hour_core (
|
|
19
|
+
"name" text NOT NULL,
|
|
20
|
+
datum date NOT NULL,
|
|
21
|
+
hodina float8 NOT NULL,
|
|
22
|
+
cas_interval text NOT NULL,
|
|
23
|
+
avg_time numeric NULL,
|
|
24
|
+
avg_speed numeric NULL,
|
|
25
|
+
CONSTRAINT mala_strana_route_hour_core_pkey PRIMARY KEY (name, datum, hodina, cas_interval)
|
|
26
|
+
);
|
|
27
|
+
CREATE INDEX mala_strana_route_hour_core_date ON analytic.mala_strana_route_hour_core
|
|
28
|
+
USING btree (datum);
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
CREATE OR REPLACE VIEW analytic.v_mala_strana_route
|
|
32
|
+
AS SELECT DISTINCT ON (wdrn.name) wdrn.name,
|
|
33
|
+
true AS is_trasa,
|
|
34
|
+
false AS is_usek,
|
|
35
|
+
false AS is_opacny_smer,
|
|
36
|
+
wdrn.name AS name_trasa,
|
|
37
|
+
"substring"(wazett_routes.name,
|
|
38
|
+
CASE
|
|
39
|
+
WHEN "position"(wazett_routes.name, ' ÚS'::text) > 0 THEN "position"(wazett_routes.name, ' ÚS'::text) + 4
|
|
40
|
+
ELSE length(wazett_routes.name) + 1
|
|
41
|
+
END,
|
|
42
|
+
CASE
|
|
43
|
+
WHEN "position"(wazett_routes.name, ' OS'::text) > 0 THEN "position"(wazett_routes.name, ' OS'::text) - "position"(wazett_routes.name, ' ÚS'::text) - 4
|
|
44
|
+
ELSE length(wazett_routes.name) - "position"(wazett_routes.name, ' ÚS'::text)
|
|
45
|
+
END) AS name_usek
|
|
46
|
+
FROM wazett.wazett_routes
|
|
47
|
+
JOIN analytic.waze_dashboard_route_name wdrn ON wazett_routes.id = wdrn.route_id
|
|
48
|
+
ORDER BY wdrn.name, wazett_routes.created_at DESC;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
CREATE MATERIALIZED VIEW analytic.mv_mala_strana_normal
|
|
52
|
+
TABLESPACE pg_default
|
|
53
|
+
AS SELECT vtbh.name,
|
|
54
|
+
vtbh.hodina,
|
|
55
|
+
round(avg(vtbh.avg_time), 2) AS avg_time,
|
|
56
|
+
round(avg(vtbh.avg_speed)) AS avg_speed
|
|
57
|
+
FROM ( SELECT wdrn.name,
|
|
58
|
+
CASE
|
|
59
|
+
WHEN wdrn.idx < 38 THEN 'group1'::text
|
|
60
|
+
ELSE 'group2'::text
|
|
61
|
+
END AS skupina,
|
|
62
|
+
rl.ts::date AS datum,
|
|
63
|
+
date_part('hour'::text, rl.ts) AS hodina,
|
|
64
|
+
(to_char(date_part('hour'::text, rl.ts), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, rl.ts) + 1::double precision, '09'::text) AS cas_interval,
|
|
65
|
+
rl.avg_time,
|
|
66
|
+
rl.avg_speed
|
|
67
|
+
FROM ( SELECT rl_1.route_id,
|
|
68
|
+
date_trunc('hour'::text, to_timestamp((rl_1.update_time / 1000)::double precision)) AS ts,
|
|
69
|
+
round(avg(rl_1."time"), 2) AS avg_time,
|
|
70
|
+
round(avg(rl_1.length * 1000 / (NULLIF(rl_1."time", 0) * 360)), 2) AS avg_speed
|
|
71
|
+
FROM wazett.wazett_route_lives rl_1
|
|
72
|
+
WHERE rl_1.update_time >= '1665360000000'::bigint
|
|
73
|
+
GROUP BY rl_1.route_id, (date_trunc('hour'::text, to_timestamp((rl_1.update_time / 1000)::double precision)))) rl
|
|
74
|
+
JOIN analytic.waze_dashboard_route_name wdrn ON wdrn.route_id = rl.route_id) vtbh
|
|
75
|
+
WHERE
|
|
76
|
+
(vtbh.skupina = 'group1'::text AND vtbh.datum >= '2022-10-10'::date AND vtbh.datum <= '2022-10-25'::date
|
|
77
|
+
AND (date_part('dow'::text, vtbh.datum) = ANY (ARRAY[2::double precision, 3::double precision, 4::double precision])))
|
|
78
|
+
OR
|
|
79
|
+
(vtbh.skupina = 'group1'::text AND vtbh.datum >= '2023-01-09'::date AND vtbh.datum <= '2023-01-29'::date AND (date_part('dow'::text, vtbh.datum) = ANY (ARRAY[2::double precision, 3::double precision, 4::double precision])))
|
|
80
|
+
GROUP BY vtbh.name, vtbh.hodina
|
|
81
|
+
WITH DATA;
|
|
82
|
+
|
|
83
|
+
CREATE OR REPLACE PROCEDURE analytic.update_mala_strana()
|
|
84
|
+
LANGUAGE plpgsql
|
|
85
|
+
AS $procedure$
|
|
86
|
+
declare
|
|
87
|
+
lastupdatetimestamp timestamptz;
|
|
88
|
+
lastupdateunix bigint;
|
|
89
|
+
begin
|
|
90
|
+
begin
|
|
91
|
+
select
|
|
92
|
+
case
|
|
93
|
+
when start_day is not null
|
|
94
|
+
then start_day
|
|
95
|
+
else '2022-01-01'
|
|
96
|
+
end as start_day_from into lastupdatetimestamp
|
|
97
|
+
from (select max(datum)-interval '1 days' start_day from analytic.mala_strana_route_hour_core) barandemax;
|
|
98
|
+
|
|
99
|
+
lastupdateunix := extract ('epoch' from lastupdatetimestamp) * 1000;
|
|
100
|
+
|
|
101
|
+
-- dopoctu hodinovou agregaci (podobné v_mala_strana_route_hour_core) POT5EBUJEME TAKTO?
|
|
102
|
+
insert into analytic.mala_strana_route_hour_core
|
|
103
|
+
SELECT
|
|
104
|
+
wdrn.name,
|
|
105
|
+
rl.ts::date AS datum,
|
|
106
|
+
date_part('hour'::text, rl.ts) AS hodina,
|
|
107
|
+
(to_char(date_part('hour'::text, rl.ts), '09'::text) || ' -'::text) || to_char(date_part('hour'::text, rl.ts) + 1::double precision, '09'::text) AS cas_interval,
|
|
108
|
+
avg_time,
|
|
109
|
+
avg_speed
|
|
110
|
+
FROM (
|
|
111
|
+
select
|
|
112
|
+
route_id
|
|
113
|
+
-- timezone('Europe/Prague'::text, to_timestamp((update_time / 1000)::double precision)::timestamp without time zone)
|
|
114
|
+
,date_trunc('hour', to_timestamp((update_time / 1000))::timestamp) as ts
|
|
115
|
+
,round(avg(time), 2) AS avg_time
|
|
116
|
+
,round(avg(rl.length * 1000 / (nullif(rl."time", 0) * 360)), 2) AS avg_speed
|
|
117
|
+
from wazett.wazett_route_lives rl
|
|
118
|
+
where
|
|
119
|
+
-- route_id = 22706 and
|
|
120
|
+
rl.update_time > lastupdateunix and
|
|
121
|
+
rl.length > 0
|
|
122
|
+
group by 1,2) rl
|
|
123
|
+
JOIN analytic.waze_dashboard_route_name wdrn ON wdrn.route_id = rl.route_id
|
|
124
|
+
ON CONFLICT (name,datum,hodina,cas_interval)
|
|
125
|
+
DO update
|
|
126
|
+
SET avg_time = EXCLUDED.avg_time,
|
|
127
|
+
avg_speed = EXCLUDED.avg_speed
|
|
128
|
+
;
|
|
129
|
+
|
|
130
|
+
insert into analytic.mala_strana_data_all
|
|
131
|
+
WITH
|
|
132
|
+
v_barrande_route_hour as (
|
|
133
|
+
SELECT p.name,
|
|
134
|
+
p.datum,
|
|
135
|
+
p.hodina,
|
|
136
|
+
p.cas_interval,
|
|
137
|
+
p.avg_time,
|
|
138
|
+
p.avg_speed,
|
|
139
|
+
n.avg_time AS normal_avg_time,
|
|
140
|
+
n.avg_speed AS normal_avg_speed
|
|
141
|
+
FROM analytic.mala_strana_route_hour_core p
|
|
142
|
+
LEFT JOIN analytic.mv_mala_strana_normal n ON n.name = p.name AND p.hodina = n.hodina
|
|
143
|
+
where datum > lastupdatetimestamp
|
|
144
|
+
),
|
|
145
|
+
-- konec v_barrande_route_hour
|
|
146
|
+
v_barrande_union_time_interval as (
|
|
147
|
+
WITH hodiny AS (
|
|
148
|
+
SELECT brh.name,
|
|
149
|
+
brh.datum,
|
|
150
|
+
brh.hodina,
|
|
151
|
+
brh.cas_interval,
|
|
152
|
+
brh.avg_time,
|
|
153
|
+
brh.avg_speed,
|
|
154
|
+
brh.normal_avg_time,
|
|
155
|
+
brh.normal_avg_speed
|
|
156
|
+
FROM v_barrande_route_hour brh
|
|
157
|
+
WHERE brh.datum < CURRENT_DATE OR brh.hodina < date_part('hour'::text, now())
|
|
158
|
+
), den AS (
|
|
159
|
+
SELECT hodiny.name,
|
|
160
|
+
hodiny.datum,
|
|
161
|
+
'0 - 24h'::text AS cas_interval,
|
|
162
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
163
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
164
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
165
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
166
|
+
FROM hodiny
|
|
167
|
+
WHERE hodiny.datum < CURRENT_DATE
|
|
168
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
169
|
+
), h15_18 AS (
|
|
170
|
+
SELECT hodiny.name,
|
|
171
|
+
hodiny.datum,
|
|
172
|
+
'15 -18'::text AS cas_interval,
|
|
173
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
174
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
175
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
176
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
177
|
+
FROM hodiny
|
|
178
|
+
WHERE hodiny.hodina >= 15::double precision AND hodiny.hodina <= 17::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 17::double precision)
|
|
179
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
180
|
+
), h22_6 AS (
|
|
181
|
+
SELECT hodiny.name,
|
|
182
|
+
hodiny.datum,
|
|
183
|
+
'22 - 06'::text AS cas_interval,
|
|
184
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
185
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
186
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
187
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
188
|
+
FROM hodiny
|
|
189
|
+
WHERE NOT (hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision) AND hodiny.datum < CURRENT_DATE
|
|
190
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
191
|
+
), h6_22 AS (
|
|
192
|
+
SELECT hodiny.name,
|
|
193
|
+
hodiny.datum,
|
|
194
|
+
'06 - 22'::text AS cas_interval,
|
|
195
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
196
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
197
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
198
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
199
|
+
FROM hodiny
|
|
200
|
+
WHERE hodiny.hodina >= 6::double precision AND hodiny.hodina <= 21::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 21::double precision)
|
|
201
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
202
|
+
), h7_10 AS (
|
|
203
|
+
SELECT hodiny.name,
|
|
204
|
+
hodiny.datum,
|
|
205
|
+
'07 - 10'::text AS cas_interval,
|
|
206
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
207
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
208
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
209
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
210
|
+
FROM hodiny
|
|
211
|
+
WHERE hodiny.hodina >= 7::double precision AND hodiny.hodina <= 9::double precision AND (hodiny.datum < CURRENT_DATE OR hodiny.hodina > 10::double precision)
|
|
212
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
213
|
+
), h7_11_15_19 AS (
|
|
214
|
+
SELECT hodiny.name,
|
|
215
|
+
hodiny.datum,
|
|
216
|
+
'07 - 11, 15 - 19'::text AS cas_interval,
|
|
217
|
+
round(avg(hodiny.avg_time), 2) AS avg_time,
|
|
218
|
+
round(avg(hodiny.avg_speed), 2) AS avg_speed,
|
|
219
|
+
round(avg(hodiny.normal_avg_time), 2) AS normal_avg_time,
|
|
220
|
+
round(avg(hodiny.normal_avg_speed), 2) AS normal_avg_speed
|
|
221
|
+
FROM hodiny
|
|
222
|
+
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)
|
|
223
|
+
GROUP BY hodiny.name, hodiny.datum
|
|
224
|
+
)
|
|
225
|
+
SELECT hodiny.name,
|
|
226
|
+
hodiny.datum,
|
|
227
|
+
hodiny.cas_interval,
|
|
228
|
+
hodiny.avg_time,
|
|
229
|
+
hodiny.avg_speed,
|
|
230
|
+
hodiny.normal_avg_time,
|
|
231
|
+
hodiny.normal_avg_speed
|
|
232
|
+
FROM hodiny
|
|
233
|
+
UNION ALL
|
|
234
|
+
SELECT den.name,
|
|
235
|
+
den.datum,
|
|
236
|
+
den.cas_interval,
|
|
237
|
+
den.avg_time,
|
|
238
|
+
den.avg_speed,
|
|
239
|
+
den.normal_avg_time,
|
|
240
|
+
den.normal_avg_speed
|
|
241
|
+
FROM den
|
|
242
|
+
UNION ALL
|
|
243
|
+
SELECT h15_18.name,
|
|
244
|
+
h15_18.datum,
|
|
245
|
+
h15_18.cas_interval,
|
|
246
|
+
h15_18.avg_time,
|
|
247
|
+
h15_18.avg_speed,
|
|
248
|
+
h15_18.normal_avg_time,
|
|
249
|
+
h15_18.normal_avg_speed
|
|
250
|
+
FROM h15_18
|
|
251
|
+
UNION ALL
|
|
252
|
+
SELECT h22_6.name,
|
|
253
|
+
h22_6.datum,
|
|
254
|
+
h22_6.cas_interval,
|
|
255
|
+
h22_6.avg_time,
|
|
256
|
+
h22_6.avg_speed,
|
|
257
|
+
h22_6.normal_avg_time,
|
|
258
|
+
h22_6.normal_avg_speed
|
|
259
|
+
FROM h22_6
|
|
260
|
+
UNION ALL
|
|
261
|
+
SELECT h6_22.name,
|
|
262
|
+
h6_22.datum,
|
|
263
|
+
h6_22.cas_interval,
|
|
264
|
+
h6_22.avg_time,
|
|
265
|
+
h6_22.avg_speed,
|
|
266
|
+
h6_22.normal_avg_time,
|
|
267
|
+
h6_22.normal_avg_speed
|
|
268
|
+
FROM h6_22
|
|
269
|
+
UNION ALL
|
|
270
|
+
SELECT h7_10.name,
|
|
271
|
+
h7_10.datum,
|
|
272
|
+
h7_10.cas_interval,
|
|
273
|
+
h7_10.avg_time,
|
|
274
|
+
h7_10.avg_speed,
|
|
275
|
+
h7_10.normal_avg_time,
|
|
276
|
+
h7_10.normal_avg_speed
|
|
277
|
+
FROM h7_10
|
|
278
|
+
UNION ALL
|
|
279
|
+
SELECT h7_11_15_19.name,
|
|
280
|
+
h7_11_15_19.datum,
|
|
281
|
+
h7_11_15_19.cas_interval,
|
|
282
|
+
h7_11_15_19.avg_time,
|
|
283
|
+
h7_11_15_19.avg_speed,
|
|
284
|
+
h7_11_15_19.normal_avg_time,
|
|
285
|
+
h7_11_15_19.normal_avg_speed
|
|
286
|
+
FROM h7_11_15_19
|
|
287
|
+
),
|
|
288
|
+
-----------------------
|
|
289
|
+
data1 AS (
|
|
290
|
+
SELECT
|
|
291
|
+
trasy.name,
|
|
292
|
+
trasy.name_trasa,
|
|
293
|
+
trasy.name_usek,
|
|
294
|
+
CASE
|
|
295
|
+
WHEN trasy.is_opacny_smer THEN 'Zpět'::text
|
|
296
|
+
ELSE 'Tam'::text
|
|
297
|
+
END AS smer,
|
|
298
|
+
vbu.datum,
|
|
299
|
+
vbu.cas_interval,
|
|
300
|
+
vbu.avg_time,
|
|
301
|
+
vbu.avg_speed,
|
|
302
|
+
vbu.normal_avg_time,
|
|
303
|
+
vbu.normal_avg_speed
|
|
304
|
+
FROM v_barrande_union_time_interval vbu
|
|
305
|
+
JOIN pavelp.v_mala_strana_route trasy ON trasy.name = vbu.name
|
|
306
|
+
),
|
|
307
|
+
data2 AS (
|
|
308
|
+
SELECT
|
|
309
|
+
data1.name_trasa,
|
|
310
|
+
data1.name_usek,
|
|
311
|
+
'Oba'::text AS smer,
|
|
312
|
+
data1.datum,
|
|
313
|
+
data1.cas_interval,
|
|
314
|
+
sum(data1.avg_time) AS avg_time,
|
|
315
|
+
avg(data1.avg_speed) AS avg_speed,
|
|
316
|
+
sum(data1.normal_avg_time) AS normal_avg_time,
|
|
317
|
+
avg(data1.normal_avg_speed) AS normal_avg_speed
|
|
318
|
+
FROM data1
|
|
319
|
+
GROUP BY data1.name_trasa, data1.name_usek, 'Oba'::text, data1.datum, data1.cas_interval
|
|
320
|
+
)
|
|
321
|
+
SELECT data1.name,
|
|
322
|
+
data1.name_trasa,
|
|
323
|
+
data1.name_usek,
|
|
324
|
+
data1.smer,
|
|
325
|
+
data1.datum,
|
|
326
|
+
data1.cas_interval,
|
|
327
|
+
data1.avg_time,
|
|
328
|
+
data1.avg_speed,
|
|
329
|
+
data1.normal_avg_time,
|
|
330
|
+
data1.normal_avg_speed
|
|
331
|
+
FROM data1
|
|
332
|
+
UNION
|
|
333
|
+
SELECT vbt.name,
|
|
334
|
+
data2.name_trasa,
|
|
335
|
+
data2.name_usek,
|
|
336
|
+
data2.smer,
|
|
337
|
+
data2.datum,
|
|
338
|
+
data2.cas_interval,
|
|
339
|
+
data2.avg_time,
|
|
340
|
+
data2.avg_speed,
|
|
341
|
+
data2.normal_avg_time,
|
|
342
|
+
data2.normal_avg_speed
|
|
343
|
+
FROM data2
|
|
344
|
+
JOIN analytic.v_mala_strana_route vbt ON vbt.name_trasa = data2.name_trasa AND vbt.name_usek = data2.name_usek AND NOT vbt.is_opacny_smer
|
|
345
|
+
on conflict (name,name_trasa,name_usek,smer,datum,cas_interval)
|
|
346
|
+
do update
|
|
347
|
+
SET avg_time = EXCLUDED.avg_time,
|
|
348
|
+
avg_speed = EXCLUDED.avg_speed,
|
|
349
|
+
normal_avg_time = EXCLUDED.normal_avg_time,
|
|
350
|
+
normal_avg_speed = EXCLUDED.normal_avg_speed;
|
|
351
|
+
end;
|
|
352
|
+
end;
|
|
353
|
+
$procedure$
|
|
354
|
+
;
|