@aiaiai-pt/frankctl 0.5.1 → 0.7.1
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.
- package/CHANGELOG.md +26 -0
- package/README.md +11 -6
- package/dist/index.js +208 -197
- package/dist/template-packs/cira/01_organization.yaml +68 -0
- package/dist/template-packs/cira/02_freguesia.yaml +73 -0
- package/dist/template-packs/cira/03_transit_route.yaml +70 -0
- package/dist/template-packs/cira/04_transit_stop.yaml +57 -0
- package/dist/template-packs/cira/05_air_quality_station.yaml +83 -0
- package/dist/template-packs/cira/06_air_quality_observed.yaml +99 -0
- package/dist/template-packs/cira/07_transit_trip.yaml +106 -0
- package/dist/template-packs/cira/08_vehicle_position.yaml +81 -0
- package/dist/template-packs/cira/09_transdev_aveirobus_gtfs.yaml +709 -0
- package/dist/template-packs/cira/10_ciclope_emergency.yaml +526 -0
- package/dist/template-packs/cira/cityfy_agenda_events.yaml +156 -0
- package/dist/template-packs/cira/template-pack.yaml +109 -0
- package/package.json +2 -1
- package/skills/frank-cli/SKILL.md +33 -12
|
@@ -0,0 +1,709 @@
|
|
|
1
|
+
# Git-owned Transdev/AveiroBus Pipeline + BackingDataset bundle (issue #600).
|
|
2
|
+
#
|
|
3
|
+
# Prerequisite: apply the stable Source `cira-transdev-aveirobus-gtfs` from an
|
|
4
|
+
# ignored chmod-0600 manifest containing literal S3 credentials. The non-apply
|
|
5
|
+
# Source shape is documented under dev_docs/examples/sources/. This tracked
|
|
6
|
+
# bundle contains no Source document and is safe to apply only after that Source
|
|
7
|
+
# and its eleven Bronze streams exist.
|
|
8
|
+
|
|
9
|
+
apiVersion: frank.platform/v1
|
|
10
|
+
kind: Pipeline
|
|
11
|
+
metadata:
|
|
12
|
+
name: cira_transdev_gtfs_agency
|
|
13
|
+
spec:
|
|
14
|
+
name: cira_transdev_gtfs_agency
|
|
15
|
+
description: Historical Transdev GTFS agency projection; expected rows 1.
|
|
16
|
+
source_ids:
|
|
17
|
+
- cira-transdev-aveirobus-gtfs
|
|
18
|
+
schedule_config:
|
|
19
|
+
type: manual
|
|
20
|
+
steps:
|
|
21
|
+
- name: gtfs_agency_rows
|
|
22
|
+
kind: custom_sql
|
|
23
|
+
params:
|
|
24
|
+
sql: |-
|
|
25
|
+
SELECT trim(cast(agency_id AS varchar)) external_id,
|
|
26
|
+
nullif(trim(cast(agency_name AS varchar)),'') name,
|
|
27
|
+
nullif(trim(cast(agency_url AS varchar)),'') url,
|
|
28
|
+
nullif(trim(cast(agency_timezone AS varchar)),'') timezone,
|
|
29
|
+
nullif(trim(cast(agency_phone AS varchar)),'') phone,
|
|
30
|
+
nullif(trim(cast(agency_lang AS varchar)),'') language
|
|
31
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.agency
|
|
32
|
+
WHERE nullif(trim(cast(agency_id AS varchar)),'') IS NOT NULL
|
|
33
|
+
depends_on: []
|
|
34
|
+
emits_to: backing_dataset
|
|
35
|
+
config:
|
|
36
|
+
output_layer: silver
|
|
37
|
+
---
|
|
38
|
+
apiVersion: frank.platform/v1
|
|
39
|
+
kind: BackingDataset
|
|
40
|
+
metadata:
|
|
41
|
+
name: cira_transdev_gtfs_agency
|
|
42
|
+
spec:
|
|
43
|
+
entity_type_id: gtfs_agency
|
|
44
|
+
entity_type_name: GTFS Agency
|
|
45
|
+
ontology_tenant_id: cira
|
|
46
|
+
pipeline: cira_transdev_gtfs_agency
|
|
47
|
+
sync_mode: manual
|
|
48
|
+
primary_key_column: external_id
|
|
49
|
+
title_key_column: name
|
|
50
|
+
property_mappings:
|
|
51
|
+
- column: external_id
|
|
52
|
+
property: external_id
|
|
53
|
+
type: varchar
|
|
54
|
+
is_primary_key: true
|
|
55
|
+
- column: name
|
|
56
|
+
property: name
|
|
57
|
+
type: varchar
|
|
58
|
+
- column: url
|
|
59
|
+
property: url
|
|
60
|
+
type: varchar
|
|
61
|
+
- column: timezone
|
|
62
|
+
property: timezone
|
|
63
|
+
type: varchar
|
|
64
|
+
- column: phone
|
|
65
|
+
property: phone
|
|
66
|
+
type: varchar
|
|
67
|
+
- column: language
|
|
68
|
+
property: language
|
|
69
|
+
type: varchar
|
|
70
|
+
---
|
|
71
|
+
apiVersion: frank.platform/v1
|
|
72
|
+
kind: Pipeline
|
|
73
|
+
metadata:
|
|
74
|
+
name: cira_transdev_gtfs_service
|
|
75
|
+
spec:
|
|
76
|
+
name: cira_transdev_gtfs_service
|
|
77
|
+
description: Historical Transdev GTFS service identities, including exception-only services; expected rows 11.
|
|
78
|
+
source_ids:
|
|
79
|
+
- cira-transdev-aveirobus-gtfs
|
|
80
|
+
schedule_config:
|
|
81
|
+
type: manual
|
|
82
|
+
steps:
|
|
83
|
+
- name: gtfs_service_rows
|
|
84
|
+
kind: custom_sql
|
|
85
|
+
params:
|
|
86
|
+
sql: |-
|
|
87
|
+
WITH service_ids AS (
|
|
88
|
+
SELECT service_id
|
|
89
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.calendar
|
|
90
|
+
UNION
|
|
91
|
+
SELECT service_id
|
|
92
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.calendar_dates
|
|
93
|
+
)
|
|
94
|
+
SELECT trim(cast(service_id AS varchar)) external_id,
|
|
95
|
+
trim(cast(service_id AS varchar)) name,
|
|
96
|
+
CAST(NULL AS varchar) description
|
|
97
|
+
FROM service_ids
|
|
98
|
+
WHERE nullif(trim(cast(service_id AS varchar)),'') IS NOT NULL
|
|
99
|
+
depends_on: []
|
|
100
|
+
emits_to: backing_dataset
|
|
101
|
+
config:
|
|
102
|
+
output_layer: silver
|
|
103
|
+
---
|
|
104
|
+
apiVersion: frank.platform/v1
|
|
105
|
+
kind: BackingDataset
|
|
106
|
+
metadata:
|
|
107
|
+
name: cira_transdev_gtfs_service
|
|
108
|
+
spec:
|
|
109
|
+
entity_type_id: gtfs_service
|
|
110
|
+
entity_type_name: GTFS Service
|
|
111
|
+
ontology_tenant_id: cira
|
|
112
|
+
pipeline: cira_transdev_gtfs_service
|
|
113
|
+
sync_mode: manual
|
|
114
|
+
primary_key_column: external_id
|
|
115
|
+
title_key_column: name
|
|
116
|
+
property_mappings:
|
|
117
|
+
- column: external_id
|
|
118
|
+
property: external_id
|
|
119
|
+
type: varchar
|
|
120
|
+
is_primary_key: true
|
|
121
|
+
- column: name
|
|
122
|
+
property: name
|
|
123
|
+
type: varchar
|
|
124
|
+
- column: description
|
|
125
|
+
property: description
|
|
126
|
+
type: varchar
|
|
127
|
+
---
|
|
128
|
+
apiVersion: frank.platform/v1
|
|
129
|
+
kind: Pipeline
|
|
130
|
+
metadata:
|
|
131
|
+
name: cira_transdev_gtfs_calendar_rule
|
|
132
|
+
spec:
|
|
133
|
+
name: cira_transdev_gtfs_calendar_rule
|
|
134
|
+
description: Historical Transdev weekly service rules; expected rows 10.
|
|
135
|
+
source_ids:
|
|
136
|
+
- cira-transdev-aveirobus-gtfs
|
|
137
|
+
schedule_config:
|
|
138
|
+
type: manual
|
|
139
|
+
steps:
|
|
140
|
+
- name: gtfs_calendar_rule_rows
|
|
141
|
+
kind: custom_sql
|
|
142
|
+
params:
|
|
143
|
+
sql: |-
|
|
144
|
+
SELECT trim(cast(service_id AS varchar)) external_id,
|
|
145
|
+
try_cast(monday AS integer)=1 monday,
|
|
146
|
+
try_cast(tuesday AS integer)=1 tuesday,
|
|
147
|
+
try_cast(wednesday AS integer)=1 wednesday,
|
|
148
|
+
try_cast(thursday AS integer)=1 thursday,
|
|
149
|
+
try_cast(friday AS integer)=1 friday,
|
|
150
|
+
try_cast(saturday AS integer)=1 saturday,
|
|
151
|
+
try_cast(sunday AS integer)=1 sunday,
|
|
152
|
+
CAST(date_parse(cast(cast(start_date AS bigint) AS varchar),'%Y%m%d') AS date) start_date,
|
|
153
|
+
CAST(date_parse(cast(cast(end_date AS bigint) AS varchar),'%Y%m%d') AS date) end_date,
|
|
154
|
+
trim(cast(service_id AS varchar)) service_external_id
|
|
155
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.calendar
|
|
156
|
+
WHERE nullif(trim(cast(service_id AS varchar)),'') IS NOT NULL
|
|
157
|
+
depends_on: []
|
|
158
|
+
emits_to: backing_dataset
|
|
159
|
+
config:
|
|
160
|
+
output_layer: silver
|
|
161
|
+
---
|
|
162
|
+
apiVersion: frank.platform/v1
|
|
163
|
+
kind: BackingDataset
|
|
164
|
+
metadata:
|
|
165
|
+
name: cira_transdev_gtfs_calendar_rule
|
|
166
|
+
dependsOn:
|
|
167
|
+
- entityTypeId: gtfs_service
|
|
168
|
+
ontologyTenantId: cira
|
|
169
|
+
spec:
|
|
170
|
+
entity_type_id: gtfs_calendar_rule
|
|
171
|
+
entity_type_name: GTFS Calendar Rule
|
|
172
|
+
ontology_tenant_id: cira
|
|
173
|
+
pipeline: cira_transdev_gtfs_calendar_rule
|
|
174
|
+
sync_mode: manual
|
|
175
|
+
primary_key_column: external_id
|
|
176
|
+
title_key_column: external_id
|
|
177
|
+
property_mappings:
|
|
178
|
+
- column: external_id
|
|
179
|
+
property: external_id
|
|
180
|
+
type: varchar
|
|
181
|
+
is_primary_key: true
|
|
182
|
+
- column: monday
|
|
183
|
+
property: monday
|
|
184
|
+
type: boolean
|
|
185
|
+
- column: tuesday
|
|
186
|
+
property: tuesday
|
|
187
|
+
type: boolean
|
|
188
|
+
- column: wednesday
|
|
189
|
+
property: wednesday
|
|
190
|
+
type: boolean
|
|
191
|
+
- column: thursday
|
|
192
|
+
property: thursday
|
|
193
|
+
type: boolean
|
|
194
|
+
- column: friday
|
|
195
|
+
property: friday
|
|
196
|
+
type: boolean
|
|
197
|
+
- column: saturday
|
|
198
|
+
property: saturday
|
|
199
|
+
type: boolean
|
|
200
|
+
- column: sunday
|
|
201
|
+
property: sunday
|
|
202
|
+
type: boolean
|
|
203
|
+
- column: start_date
|
|
204
|
+
property: start_date
|
|
205
|
+
type: date
|
|
206
|
+
- column: end_date
|
|
207
|
+
property: end_date
|
|
208
|
+
type: date
|
|
209
|
+
- column: service_external_id
|
|
210
|
+
property: service
|
|
211
|
+
is_relationship: true
|
|
212
|
+
target_type: gtfs_service
|
|
213
|
+
target_key: external_id
|
|
214
|
+
---
|
|
215
|
+
apiVersion: frank.platform/v1
|
|
216
|
+
kind: Pipeline
|
|
217
|
+
metadata:
|
|
218
|
+
name: cira_transdev_gtfs_calendar_date_rule
|
|
219
|
+
spec:
|
|
220
|
+
name: cira_transdev_gtfs_calendar_date_rule
|
|
221
|
+
description: Historical Transdev service-date exceptions; expected rows 1624.
|
|
222
|
+
source_ids:
|
|
223
|
+
- cira-transdev-aveirobus-gtfs
|
|
224
|
+
schedule_config:
|
|
225
|
+
type: manual
|
|
226
|
+
steps:
|
|
227
|
+
- name: gtfs_calendar_date_rule_rows
|
|
228
|
+
kind: custom_sql
|
|
229
|
+
params:
|
|
230
|
+
sql: |-
|
|
231
|
+
SELECT concat(
|
|
232
|
+
trim(cast(service_id AS varchar)),
|
|
233
|
+
':',
|
|
234
|
+
trim(cast(date AS varchar))
|
|
235
|
+
) external_id,
|
|
236
|
+
CAST(date_parse(cast(cast(date AS bigint) AS varchar),'%Y%m%d') AS date) applies_on,
|
|
237
|
+
try_cast(exception_type AS integer) exception_type,
|
|
238
|
+
trim(cast(service_id AS varchar)) service_external_id
|
|
239
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.calendar_dates
|
|
240
|
+
WHERE nullif(trim(cast(service_id AS varchar)),'') IS NOT NULL
|
|
241
|
+
AND nullif(trim(cast(date AS varchar)),'') IS NOT NULL
|
|
242
|
+
depends_on: []
|
|
243
|
+
emits_to: backing_dataset
|
|
244
|
+
config:
|
|
245
|
+
output_layer: silver
|
|
246
|
+
---
|
|
247
|
+
apiVersion: frank.platform/v1
|
|
248
|
+
kind: BackingDataset
|
|
249
|
+
metadata:
|
|
250
|
+
name: cira_transdev_gtfs_calendar_date_rule
|
|
251
|
+
dependsOn:
|
|
252
|
+
- entityTypeId: gtfs_service
|
|
253
|
+
ontologyTenantId: cira
|
|
254
|
+
spec:
|
|
255
|
+
entity_type_id: gtfs_calendar_date_rule
|
|
256
|
+
entity_type_name: GTFS Calendar Date Rule
|
|
257
|
+
ontology_tenant_id: cira
|
|
258
|
+
pipeline: cira_transdev_gtfs_calendar_date_rule
|
|
259
|
+
sync_mode: manual
|
|
260
|
+
primary_key_column: external_id
|
|
261
|
+
title_key_column: external_id
|
|
262
|
+
property_mappings:
|
|
263
|
+
- column: external_id
|
|
264
|
+
property: external_id
|
|
265
|
+
type: varchar
|
|
266
|
+
is_primary_key: true
|
|
267
|
+
- column: applies_on
|
|
268
|
+
property: applies_on
|
|
269
|
+
type: date
|
|
270
|
+
- column: exception_type
|
|
271
|
+
property: exception_type
|
|
272
|
+
type: integer
|
|
273
|
+
- column: service_external_id
|
|
274
|
+
property: service
|
|
275
|
+
is_relationship: true
|
|
276
|
+
target_type: gtfs_service
|
|
277
|
+
target_key: external_id
|
|
278
|
+
---
|
|
279
|
+
apiVersion: frank.platform/v1
|
|
280
|
+
kind: Pipeline
|
|
281
|
+
metadata:
|
|
282
|
+
name: cira_transdev_gtfs_shape
|
|
283
|
+
spec:
|
|
284
|
+
name: cira_transdev_gtfs_shape
|
|
285
|
+
description: Historical Transdev ordered GTFS shapes; expected rows 56.
|
|
286
|
+
source_ids:
|
|
287
|
+
- cira-transdev-aveirobus-gtfs
|
|
288
|
+
schedule_config:
|
|
289
|
+
type: manual
|
|
290
|
+
steps:
|
|
291
|
+
- name: gtfs_shape_rows
|
|
292
|
+
kind: custom_sql
|
|
293
|
+
params:
|
|
294
|
+
sql: |-
|
|
295
|
+
WITH shape_points AS (
|
|
296
|
+
SELECT trim(cast(shape_id AS varchar)) external_id,
|
|
297
|
+
try_cast(shape_pt_sequence AS bigint) point_sequence,
|
|
298
|
+
try_cast(shape_pt_lon AS double) longitude,
|
|
299
|
+
try_cast(shape_pt_lat AS double) latitude
|
|
300
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.shapes
|
|
301
|
+
WHERE nullif(trim(cast(shape_id AS varchar)),'') IS NOT NULL
|
|
302
|
+
)
|
|
303
|
+
SELECT external_id,
|
|
304
|
+
to_geojson_geometry(
|
|
305
|
+
ST_LineString(
|
|
306
|
+
array_agg(ST_Point(longitude,latitude) ORDER BY point_sequence)
|
|
307
|
+
)
|
|
308
|
+
) geometry_geojson
|
|
309
|
+
FROM shape_points
|
|
310
|
+
WHERE point_sequence IS NOT NULL
|
|
311
|
+
AND longitude BETWEEN -180.0 AND 180.0
|
|
312
|
+
AND latitude BETWEEN -90.0 AND 90.0
|
|
313
|
+
GROUP BY external_id
|
|
314
|
+
HAVING count(*)>=2
|
|
315
|
+
depends_on: []
|
|
316
|
+
emits_to: backing_dataset
|
|
317
|
+
config:
|
|
318
|
+
output_layer: silver
|
|
319
|
+
---
|
|
320
|
+
apiVersion: frank.platform/v1
|
|
321
|
+
kind: BackingDataset
|
|
322
|
+
metadata:
|
|
323
|
+
name: cira_transdev_gtfs_shape
|
|
324
|
+
spec:
|
|
325
|
+
entity_type_id: gtfs_shape
|
|
326
|
+
entity_type_name: GTFS Shape
|
|
327
|
+
ontology_tenant_id: cira
|
|
328
|
+
pipeline: cira_transdev_gtfs_shape
|
|
329
|
+
sync_mode: manual
|
|
330
|
+
primary_key_column: external_id
|
|
331
|
+
title_key_column: external_id
|
|
332
|
+
property_mappings:
|
|
333
|
+
- column: external_id
|
|
334
|
+
property: external_id
|
|
335
|
+
type: varchar
|
|
336
|
+
is_primary_key: true
|
|
337
|
+
- column: geometry_geojson
|
|
338
|
+
property: geometry
|
|
339
|
+
type: varchar
|
|
340
|
+
sql_transform_id: json_parse
|
|
341
|
+
---
|
|
342
|
+
apiVersion: frank.platform/v1
|
|
343
|
+
kind: Pipeline
|
|
344
|
+
metadata:
|
|
345
|
+
name: cira_transdev_gtfs_route
|
|
346
|
+
spec:
|
|
347
|
+
name: cira_transdev_gtfs_route
|
|
348
|
+
description: Historical Transdev GTFS routes linked to the single feed agency; expected rows 13.
|
|
349
|
+
source_ids:
|
|
350
|
+
- cira-transdev-aveirobus-gtfs
|
|
351
|
+
schedule_config:
|
|
352
|
+
type: manual
|
|
353
|
+
steps:
|
|
354
|
+
- name: gtfs_route_rows
|
|
355
|
+
kind: custom_sql
|
|
356
|
+
params:
|
|
357
|
+
sql: |-
|
|
358
|
+
WITH only_agency AS (
|
|
359
|
+
SELECT min(trim(cast(agency_id AS varchar))) agency_external_id
|
|
360
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.agency
|
|
361
|
+
WHERE nullif(trim(cast(agency_id AS varchar)),'') IS NOT NULL
|
|
362
|
+
)
|
|
363
|
+
SELECT trim(cast(r.route_id AS varchar)) external_id,
|
|
364
|
+
nullif(trim(cast(r.route_short_name AS varchar)),'') short_name,
|
|
365
|
+
nullif(trim(cast(r.route_long_name AS varchar)),'') long_name,
|
|
366
|
+
nullif(trim(cast(r.route_desc AS varchar)),'') description,
|
|
367
|
+
try_cast(r.route_type AS integer) route_type,
|
|
368
|
+
nullif(trim(cast(r.route_url AS varchar)),'') url,
|
|
369
|
+
try_cast(r.route_sort_order AS integer) sort_order,
|
|
370
|
+
nullif(trim(cast(r.route_color AS varchar)),'') color,
|
|
371
|
+
nullif(trim(cast(r.route_text_color AS varchar)),'') text_color,
|
|
372
|
+
coalesce(
|
|
373
|
+
nullif(trim(cast(r.agency_id AS varchar)),''),
|
|
374
|
+
a.agency_external_id
|
|
375
|
+
) agency_external_id
|
|
376
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.routes r
|
|
377
|
+
CROSS JOIN only_agency a
|
|
378
|
+
WHERE nullif(trim(cast(r.route_id AS varchar)),'') IS NOT NULL
|
|
379
|
+
depends_on: []
|
|
380
|
+
emits_to: backing_dataset
|
|
381
|
+
config:
|
|
382
|
+
output_layer: silver
|
|
383
|
+
---
|
|
384
|
+
apiVersion: frank.platform/v1
|
|
385
|
+
kind: BackingDataset
|
|
386
|
+
metadata:
|
|
387
|
+
name: cira_transdev_gtfs_route
|
|
388
|
+
dependsOn:
|
|
389
|
+
- entityTypeId: gtfs_agency
|
|
390
|
+
ontologyTenantId: cira
|
|
391
|
+
spec:
|
|
392
|
+
entity_type_id: gtfs_route
|
|
393
|
+
entity_type_name: GTFS Route
|
|
394
|
+
ontology_tenant_id: cira
|
|
395
|
+
pipeline: cira_transdev_gtfs_route
|
|
396
|
+
sync_mode: manual
|
|
397
|
+
primary_key_column: external_id
|
|
398
|
+
title_key_column: external_id
|
|
399
|
+
property_mappings:
|
|
400
|
+
- column: external_id
|
|
401
|
+
property: external_id
|
|
402
|
+
type: varchar
|
|
403
|
+
is_primary_key: true
|
|
404
|
+
- column: short_name
|
|
405
|
+
property: short_name
|
|
406
|
+
type: varchar
|
|
407
|
+
- column: long_name
|
|
408
|
+
property: long_name
|
|
409
|
+
type: varchar
|
|
410
|
+
- column: description
|
|
411
|
+
property: description
|
|
412
|
+
type: varchar
|
|
413
|
+
- column: route_type
|
|
414
|
+
property: route_type
|
|
415
|
+
type: integer
|
|
416
|
+
- column: url
|
|
417
|
+
property: url
|
|
418
|
+
type: varchar
|
|
419
|
+
- column: sort_order
|
|
420
|
+
property: sort_order
|
|
421
|
+
type: integer
|
|
422
|
+
- column: color
|
|
423
|
+
property: color
|
|
424
|
+
type: varchar
|
|
425
|
+
- column: text_color
|
|
426
|
+
property: text_color
|
|
427
|
+
type: varchar
|
|
428
|
+
- column: agency_external_id
|
|
429
|
+
property: agency
|
|
430
|
+
is_relationship: true
|
|
431
|
+
target_type: gtfs_agency
|
|
432
|
+
target_key: external_id
|
|
433
|
+
---
|
|
434
|
+
apiVersion: frank.platform/v1
|
|
435
|
+
kind: Pipeline
|
|
436
|
+
metadata:
|
|
437
|
+
name: cira_transdev_gtfs_stop
|
|
438
|
+
spec:
|
|
439
|
+
name: cira_transdev_gtfs_stop
|
|
440
|
+
description: Historical Transdev ordinary GTFS stops; all 546 source rows have location_type=0.
|
|
441
|
+
source_ids:
|
|
442
|
+
- cira-transdev-aveirobus-gtfs
|
|
443
|
+
schedule_config:
|
|
444
|
+
type: manual
|
|
445
|
+
steps:
|
|
446
|
+
- name: gtfs_stop_rows
|
|
447
|
+
kind: custom_sql
|
|
448
|
+
params:
|
|
449
|
+
sql: |-
|
|
450
|
+
WITH stop_rows AS (
|
|
451
|
+
SELECT trim(cast(stop_id AS varchar)) external_id,
|
|
452
|
+
nullif(trim(cast(stop_code AS varchar)),'') code,
|
|
453
|
+
nullif(trim(cast(stop_name AS varchar)),'') name,
|
|
454
|
+
nullif(trim(cast(stop_desc AS varchar)),'') description,
|
|
455
|
+
nullif(trim(cast(stop_url AS varchar)),'') url,
|
|
456
|
+
try_cast(wheelchair_boarding AS integer) wheelchair_boarding,
|
|
457
|
+
nullif(trim(cast(zone_id AS varchar)),'') fare_zone,
|
|
458
|
+
try_cast(stop_lon AS double) longitude,
|
|
459
|
+
try_cast(stop_lat AS double) latitude,
|
|
460
|
+
coalesce(try_cast(location_type AS integer),0) location_type
|
|
461
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.stops
|
|
462
|
+
)
|
|
463
|
+
SELECT external_id,
|
|
464
|
+
code,
|
|
465
|
+
name,
|
|
466
|
+
description,
|
|
467
|
+
url,
|
|
468
|
+
wheelchair_boarding,
|
|
469
|
+
fare_zone,
|
|
470
|
+
CASE
|
|
471
|
+
WHEN longitude BETWEEN -180.0 AND 180.0
|
|
472
|
+
AND latitude BETWEEN -90.0 AND 90.0
|
|
473
|
+
THEN to_geojson_geometry(ST_Point(longitude,latitude))
|
|
474
|
+
END geometry_geojson
|
|
475
|
+
FROM stop_rows
|
|
476
|
+
WHERE external_id IS NOT NULL
|
|
477
|
+
AND location_type=0
|
|
478
|
+
depends_on: []
|
|
479
|
+
emits_to: backing_dataset
|
|
480
|
+
config:
|
|
481
|
+
output_layer: silver
|
|
482
|
+
---
|
|
483
|
+
apiVersion: frank.platform/v1
|
|
484
|
+
kind: BackingDataset
|
|
485
|
+
metadata:
|
|
486
|
+
name: cira_transdev_gtfs_stop
|
|
487
|
+
spec:
|
|
488
|
+
entity_type_id: gtfs_stop
|
|
489
|
+
entity_type_name: GTFS Stop
|
|
490
|
+
ontology_tenant_id: cira
|
|
491
|
+
pipeline: cira_transdev_gtfs_stop
|
|
492
|
+
sync_mode: manual
|
|
493
|
+
primary_key_column: external_id
|
|
494
|
+
title_key_column: name
|
|
495
|
+
property_mappings:
|
|
496
|
+
- column: external_id
|
|
497
|
+
property: external_id
|
|
498
|
+
type: varchar
|
|
499
|
+
is_primary_key: true
|
|
500
|
+
- column: code
|
|
501
|
+
property: code
|
|
502
|
+
type: varchar
|
|
503
|
+
- column: name
|
|
504
|
+
property: name
|
|
505
|
+
type: varchar
|
|
506
|
+
- column: description
|
|
507
|
+
property: description
|
|
508
|
+
type: varchar
|
|
509
|
+
- column: url
|
|
510
|
+
property: url
|
|
511
|
+
type: varchar
|
|
512
|
+
- column: wheelchair_boarding
|
|
513
|
+
property: wheelchair_boarding
|
|
514
|
+
type: integer
|
|
515
|
+
- column: fare_zone
|
|
516
|
+
property: fare_zone
|
|
517
|
+
type: varchar
|
|
518
|
+
- column: geometry_geojson
|
|
519
|
+
property: geometry
|
|
520
|
+
type: varchar
|
|
521
|
+
sql_transform_id: json_parse
|
|
522
|
+
---
|
|
523
|
+
apiVersion: frank.platform/v1
|
|
524
|
+
kind: Pipeline
|
|
525
|
+
metadata:
|
|
526
|
+
name: cira_transdev_gtfs_trip
|
|
527
|
+
spec:
|
|
528
|
+
name: cira_transdev_gtfs_trip
|
|
529
|
+
description: Historical Transdev GTFS trips linked to route, service, and optional shape; expected rows 441.
|
|
530
|
+
source_ids:
|
|
531
|
+
- cira-transdev-aveirobus-gtfs
|
|
532
|
+
schedule_config:
|
|
533
|
+
type: manual
|
|
534
|
+
steps:
|
|
535
|
+
- name: gtfs_trip_rows
|
|
536
|
+
kind: custom_sql
|
|
537
|
+
params:
|
|
538
|
+
sql: |-
|
|
539
|
+
SELECT trim(cast(trip_id AS varchar)) external_id,
|
|
540
|
+
nullif(trim(cast(trip_headsign AS varchar)),'') headsign,
|
|
541
|
+
nullif(trim(cast(trip_short_name AS varchar)),'') short_name,
|
|
542
|
+
try_cast(direction_id AS integer) direction,
|
|
543
|
+
nullif(trim(cast(block_id AS varchar)),'') block,
|
|
544
|
+
try_cast(wheelchair_accessible AS integer) wheelchair_accessible,
|
|
545
|
+
try_cast(bikes_allowed AS integer) bikes_allowed,
|
|
546
|
+
trim(cast(route_id AS varchar)) route_external_id,
|
|
547
|
+
trim(cast(service_id AS varchar)) service_external_id,
|
|
548
|
+
nullif(trim(cast(shape_id AS varchar)),'') shape_external_id
|
|
549
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.trips
|
|
550
|
+
WHERE nullif(trim(cast(trip_id AS varchar)),'') IS NOT NULL
|
|
551
|
+
depends_on: []
|
|
552
|
+
emits_to: backing_dataset
|
|
553
|
+
config:
|
|
554
|
+
output_layer: silver
|
|
555
|
+
---
|
|
556
|
+
apiVersion: frank.platform/v1
|
|
557
|
+
kind: BackingDataset
|
|
558
|
+
metadata:
|
|
559
|
+
name: cira_transdev_gtfs_trip
|
|
560
|
+
dependsOn:
|
|
561
|
+
- entityTypeId: gtfs_route
|
|
562
|
+
ontologyTenantId: cira
|
|
563
|
+
- entityTypeId: gtfs_service
|
|
564
|
+
ontologyTenantId: cira
|
|
565
|
+
- entityTypeId: gtfs_shape
|
|
566
|
+
ontologyTenantId: cira
|
|
567
|
+
spec:
|
|
568
|
+
entity_type_id: gtfs_trip
|
|
569
|
+
entity_type_name: GTFS Trip
|
|
570
|
+
ontology_tenant_id: cira
|
|
571
|
+
pipeline: cira_transdev_gtfs_trip
|
|
572
|
+
sync_mode: manual
|
|
573
|
+
primary_key_column: external_id
|
|
574
|
+
title_key_column: headsign
|
|
575
|
+
property_mappings:
|
|
576
|
+
- column: external_id
|
|
577
|
+
property: external_id
|
|
578
|
+
type: varchar
|
|
579
|
+
is_primary_key: true
|
|
580
|
+
- column: headsign
|
|
581
|
+
property: headsign
|
|
582
|
+
type: varchar
|
|
583
|
+
- column: short_name
|
|
584
|
+
property: short_name
|
|
585
|
+
type: varchar
|
|
586
|
+
- column: direction
|
|
587
|
+
property: direction
|
|
588
|
+
type: integer
|
|
589
|
+
- column: block
|
|
590
|
+
property: block
|
|
591
|
+
type: varchar
|
|
592
|
+
- column: wheelchair_accessible
|
|
593
|
+
property: wheelchair_accessible
|
|
594
|
+
type: integer
|
|
595
|
+
- column: bikes_allowed
|
|
596
|
+
property: bikes_allowed
|
|
597
|
+
type: integer
|
|
598
|
+
- column: route_external_id
|
|
599
|
+
property: route
|
|
600
|
+
is_relationship: true
|
|
601
|
+
target_type: gtfs_route
|
|
602
|
+
target_key: external_id
|
|
603
|
+
- column: service_external_id
|
|
604
|
+
property: service
|
|
605
|
+
is_relationship: true
|
|
606
|
+
target_type: gtfs_service
|
|
607
|
+
target_key: external_id
|
|
608
|
+
- column: shape_external_id
|
|
609
|
+
property: shape
|
|
610
|
+
is_relationship: true
|
|
611
|
+
target_type: gtfs_shape
|
|
612
|
+
target_key: external_id
|
|
613
|
+
---
|
|
614
|
+
apiVersion: frank.platform/v1
|
|
615
|
+
kind: Pipeline
|
|
616
|
+
metadata:
|
|
617
|
+
name: cira_transdev_gtfs_stop_time
|
|
618
|
+
spec:
|
|
619
|
+
name: cira_transdev_gtfs_stop_time
|
|
620
|
+
description: Historical Transdev GTFS stop times; service-day times can exceed 24:00:00 and remain strings; expected rows 16511.
|
|
621
|
+
source_ids:
|
|
622
|
+
- cira-transdev-aveirobus-gtfs
|
|
623
|
+
schedule_config:
|
|
624
|
+
type: manual
|
|
625
|
+
steps:
|
|
626
|
+
- name: gtfs_stop_time_rows
|
|
627
|
+
kind: custom_sql
|
|
628
|
+
params:
|
|
629
|
+
sql: |-
|
|
630
|
+
SELECT concat(
|
|
631
|
+
trim(cast(trip_id AS varchar)),
|
|
632
|
+
':',
|
|
633
|
+
cast(try_cast(stop_sequence AS bigint) AS varchar)
|
|
634
|
+
) external_id,
|
|
635
|
+
nullif(trim(cast(arrival_time AS varchar)),'') arrival_time,
|
|
636
|
+
nullif(trim(cast(departure_time AS varchar)),'') departure_time,
|
|
637
|
+
try_cast(stop_sequence AS integer) stop_sequence,
|
|
638
|
+
nullif(trim(cast(stop_headsign AS varchar)),'') stop_headsign,
|
|
639
|
+
try_cast(pickup_type AS integer) pickup_type,
|
|
640
|
+
try_cast(drop_off_type AS integer) drop_off_type,
|
|
641
|
+
try_cast(shape_dist_traveled AS double) shape_dist_traveled,
|
|
642
|
+
try_cast(timepoint AS integer) timepoint,
|
|
643
|
+
trim(cast(trip_id AS varchar)) trip_external_id,
|
|
644
|
+
trim(cast(stop_id AS varchar)) stop_external_id
|
|
645
|
+
FROM tenant_00000000_cira_transdev_aveirobus_gtfs.stop_times
|
|
646
|
+
WHERE nullif(trim(cast(trip_id AS varchar)),'') IS NOT NULL
|
|
647
|
+
AND try_cast(stop_sequence AS bigint) IS NOT NULL
|
|
648
|
+
AND nullif(trim(cast(stop_id AS varchar)),'') IS NOT NULL
|
|
649
|
+
depends_on: []
|
|
650
|
+
emits_to: backing_dataset
|
|
651
|
+
config:
|
|
652
|
+
output_layer: silver
|
|
653
|
+
---
|
|
654
|
+
apiVersion: frank.platform/v1
|
|
655
|
+
kind: BackingDataset
|
|
656
|
+
metadata:
|
|
657
|
+
name: cira_transdev_gtfs_stop_time
|
|
658
|
+
dependsOn:
|
|
659
|
+
- entityTypeId: gtfs_trip
|
|
660
|
+
ontologyTenantId: cira
|
|
661
|
+
- entityTypeId: gtfs_stop
|
|
662
|
+
ontologyTenantId: cira
|
|
663
|
+
spec:
|
|
664
|
+
entity_type_id: gtfs_stop_time
|
|
665
|
+
entity_type_name: GTFS Stop Time
|
|
666
|
+
ontology_tenant_id: cira
|
|
667
|
+
pipeline: cira_transdev_gtfs_stop_time
|
|
668
|
+
sync_mode: manual
|
|
669
|
+
primary_key_column: external_id
|
|
670
|
+
title_key_column: external_id
|
|
671
|
+
property_mappings:
|
|
672
|
+
- column: external_id
|
|
673
|
+
property: external_id
|
|
674
|
+
type: varchar
|
|
675
|
+
is_primary_key: true
|
|
676
|
+
- column: arrival_time
|
|
677
|
+
property: arrival_time
|
|
678
|
+
type: varchar
|
|
679
|
+
- column: departure_time
|
|
680
|
+
property: departure_time
|
|
681
|
+
type: varchar
|
|
682
|
+
- column: stop_sequence
|
|
683
|
+
property: stop_sequence
|
|
684
|
+
type: integer
|
|
685
|
+
- column: stop_headsign
|
|
686
|
+
property: stop_headsign
|
|
687
|
+
type: varchar
|
|
688
|
+
- column: pickup_type
|
|
689
|
+
property: pickup_type
|
|
690
|
+
type: integer
|
|
691
|
+
- column: drop_off_type
|
|
692
|
+
property: drop_off_type
|
|
693
|
+
type: integer
|
|
694
|
+
- column: shape_dist_traveled
|
|
695
|
+
property: shape_dist_traveled
|
|
696
|
+
type: double
|
|
697
|
+
- column: timepoint
|
|
698
|
+
property: timepoint
|
|
699
|
+
type: integer
|
|
700
|
+
- column: trip_external_id
|
|
701
|
+
property: trip
|
|
702
|
+
is_relationship: true
|
|
703
|
+
target_type: gtfs_trip
|
|
704
|
+
target_key: external_id
|
|
705
|
+
- column: stop_external_id
|
|
706
|
+
property: stop
|
|
707
|
+
is_relationship: true
|
|
708
|
+
target_type: gtfs_stop
|
|
709
|
+
target_key: external_id
|