Aller au contenu

Quickstart

Ce parcours prend un vrai flux, le valide, exporte un rapport JSON, et lance une première requête sur les arrêts. Avant de commencer, vérifiez que gapline --version affiche une version. Sinon, voyez Installation.

Nous utiliserons le flux de la Société de transport de Montréal (STM) pour cet exemple. N’importe quelle archive GTFS convient — remplacez par la vôtre si vous préférez.

Fenêtre de terminal
curl -L -o stm.zip https://www.stm.info/sites/default/files/gtfs/gtfs_stm.zip
Fenêtre de terminal
gapline validate -f stm.zip -o output.txt

La console affiche en direct des barres de progression par groupe de règles. Une fois la validation terminée, un bloc de résumé se clôture avec un statut PASS ou FAIL, et le code de retour est non nul dès qu’une erreur est présente.

Terminal window
$ gapline validate -f stm.zip -o output.txtFile Structure              [██████████████████████████████] 0/14CSV Formatting              [██████████████████████████████] 0/2 Feed loaded: 847,392 rows in 14 filesThird-Party Validators      [██████████████████████████████] 0/6Field Validation            [██████████████████████████████] 0/13Key & Reference Validation  [██████████████████████████████] 0/24Semantic & Logic            [██████████████████████████████] 0/24Best Practices              [██████████████████████████████] 0/9 ===================================Summary===================================45 Errors94912 Warnings177074 InfosStatus: FAILDetails written to output.txt (every error, warning, and info, with file and line).

Chaque anomalie est écrite dans output.txt dans l’ordre d’apparition. Chaque ligne ressemble à :

[ERROR] fk_violation — stop_id "BAD_STOP" not found in stops.txt — stop_times.txt:14203 — stop_id = BAD_STOP

Sévérités décryptées :

  • ERROR — le flux n’est pas conforme. Un consommateur comme Google Maps ou Apple Maps va le rejeter.
  • WARNING — le flux est conforme, mais quelque chose est suspect. À corriger.
  • INFO — suggestion de bonne pratique. Peut être ignoré dans un premier temps.

Si vous retirez -o, les anomalies sont streamées directement dans la console au-dessus du résumé.

Dans un pipeline, vous voulez des données structurées, pas du texte coloré.

Fenêtre de terminal
gapline validate -f stm.zip --format json -o report.json

report.json encapsule les anomalies dans un tableau errors et un objet summary. Chaque anomalie porte le rule ID, la section, la sévérité, le message, et — quand la règle pointe un endroit précis — le fichier, la ligne, le champ et la valeur.

{
"errors": [
{
"rule_id": "fk_violation",
"section": "foreign_key",
"severity": "Error",
"message": "stop_id \"BAD_STOP\" not found in stops.txt",
"file_name": "stop_times.txt",
"line_number": 14203,
"field_name": "stop_id",
"value": "BAD_STOP"
}
],
"summary": {
"error_count": 45,
"warning_count": 94912,
"info_count": 177074,
"passed": false
}
}
  1. Lister tous les arrêts dont le nom commence par Gare :

    Fenêtre de terminal
    gapline read stops -f stm.zip --where "stop_name LIKE Gare%"
  2. Récupérer un arrêt par ID :

    Fenêtre de terminal
    gapline read stops -f stm.zip --where "stop_id=STM_10001"
  3. Exporter le même résultat en CSV pour traitement ultérieur :

    Fenêtre de terminal
    gapline read stops -f stm.zip --where "stop_name LIKE Gare%" --format csv -o gares.csv

La clause --where accepte =, !=, <, <=, >, >=, LIKE, plus AND et OR. Voir la référence du langage de requête pour la grammaire complète.