Écriture de requêtes SQL
Écrivez des requêtes PostgreSQL optimisées pour les visualisations de Dashboard Studio. Apprenez les modèles d'accès aux données, la sélection de couche et les bonnes pratiques de performance
Dashboard Studio utilise SQL pour récupérer des données à partir de schémas IoT Query. Vous écrivez du SQL dans deux contextes : les éditeurs de panneaux, où les requêtes alimentent les visualisations, et l'éditeur SQL autonome pour l'exploration des données. Cette page explique comment écrire un SQL efficace pour ces deux contextes, en mettant l'accent sur les exigences de visualisation, car elles ont des contraintes structurelles spécifiques.
Où SQL est utilisé
Dashboard Studio propose deux environnements SQL pour des usages différents. Comprendre quand utiliser chacun vous aide à travailler plus efficacement.
Requêtes de visualisation alimentent les panneaux individuels dans les Rapports. Vous écrivez ces requêtes dans l'éditeur de panneau Requête SQL onglet. Chaque panneau exécute une seule requête qui doit renvoyer des données dans une structure spécifique correspondant au type de visualisation. Ces requêtes s'exécutent lorsque les Rapports se chargent ou se rafraîchissent, donc les performances sont importantes pour l'expérience utilisateur. Le SQL de visualisation ne peut pas modifier les données ; toutes les requêtes s'exécutent en opérations SELECT en lecture seule sur des schémas IoT Query.
Rapports utilisent la même approche SQL de visualisation que les panneaux du tableau de bord. Un rapport exécute une seule requête qui alimente simultanément trois vues : le tableau de données, le graphique et la carte de localisation. La requête doit renvoyer toutes les colonnes nécessaires pour les trois composants, donc incluez ensemble les colonnes de coordonnées, de temps et de métriques dans un seul SELECT.
Éditeur SQL prend en charge l’exploration et l’exportation des données. Accédez à l’éditeur SQL depuis la barre latérale gauche, dans Outils. Écrivez n’importe quelle instruction SELECT pour examiner la structure des données, valider des hypothèses ou exporter les résultats au format CSV. L’éditeur SQL affiche des tableaux de résultats complets avec tri des colonnes et fournit des métriques d’exécution. Utilisez-le pour tester la logique avant d’ajouter du SQL aux panneaux de visualisation, ou pour des extractions de données ponctuelles qui n’ont pas besoin de visualisation.
Comment écrire du SQL pour les visualisations

Le SQL de visualisation doit renvoyer un nombre précis de colonnes et de types de données. Dashboard Studio ne peut pas afficher un graphique en barres à partir de trois colonnes ni une tuile de statistique à partir de données textuelles. Consultez la section Exigences du jeu de données dans l’onglet Requête SQL pour voir exactement ce que votre visualisation choisie attend avant d’écrire l’instruction. Le tableau ci-dessous contient les types de visualisation pris en charge :
Deux colonnes : catégorie, valeur
SELECT column1, COUNT(*) FROM schema.table Groupe BY column1
Deux colonnes : libellé, valeur
SÉLECTIONNER la catégorie, SOMME(value) DE schema.table GROUPE PAR catégorie
Les requêtes de Rapports suivent les mêmes règles structurelles que les requêtes de visualisation dans les panneaux du tableau de bord. Comme une seule instruction alimente ensemble le tableau de données, le graphique et la carte de localisation, vous devrez peut-être combiner des colonnes qui seraient écrites comme des requêtes de panneau séparées dans un tableau de bord. Par exemple, une requête de panneau de graphique à barres renvoyant deux colonnes n'est pas suffisante pour un rapport qui a également besoin de coordonnées GPS pour la carte de localisation. Incluez toutes les colonnes requises pour chaque composant dans une seule instruction. La logique de filtrage et de JOIN de base reste la même que dans les requêtes de panneau ; seule la clause SELECT doit être plus large.
Comment écrire du SQL pour les Rapports
Un rapport exécute une requête SQL qui alimente simultanément trois composants : le tableau de données, le graphique et la carte de localisation. Contrairement aux panneaux du tableau de bord, où chaque panneau a sa propre requête ciblée, une requête de rapport doit renvoyer toutes les colonnes nécessaires à l'ensemble des composants dans une seule instruction SELECT.
Exigences relatives aux colonnes par composant
Chaque composant de rapport a des exigences de colonnes spécifiques. Votre requête doit satisfaire tous les composants que vous avez activés.
Tableau de données
N'importe quelles colonnes
Toutes les colonnes renvoyées apparaissent comme colonnes du tableau
Graphique
Au moins une colonne de temps ou de catégorie, au moins une colonne numérique
Les colonnes d’axe sont sélectionnées dans les paramètres du graphique
Carte de localisation
Latitude et longitude en degrés décimaux
Dashboard Studio détecte automatiquement les colonnes de coordonnées
Comme la table de données accepte n’importe quelles colonnes, elle n’impose aucune contrainte supplémentaire. Le graphique et la carte de localisation déterminent la plupart des décisions structurelles.
Combiner des composants dans une seule requête
Une requête qui ne renvoie que les colonnes nécessaires à un graphique (deux colonnes : catégorie et valeur) ne peut pas non plus alimenter une carte de localisation. Vous devez inclure ensemble toutes les colonnes requises.
L’exemple suivant renvoie des colonnes pour les trois composants : une colonne temporelle et une colonne numérique pour le graphique, des colonnes de coordonnées pour la carte de localisation, et des attributs supplémentaires qui apparaissent dans la table de données.
Dans cette requête, device_time et speed servent le graphique, latitude et longitude servent la carte de localisation, et toutes les colonnes apparaissent dans le tableau de données.
Adapter les requêtes des panneaux du tableau de bord pour les Rapports
Toute requête de panneau provenant d’un tableau de bord constitue un point de départ valable pour un rapport. L’ajustement nécessaire dépend des composants que vous souhaitez activer.
Si la requête du panneau est déjà une visualisation sous forme de tableau renvoyant plusieurs colonnes, elle peut déjà inclure tout ce qui est nécessaire. Ajoutez des colonnes de coordonnées si la carte de localisation est requise.
Si la requête du panneau est un graphique en barres ou une requête de tuile de statistiques renvoyant des résultats agrégés, elle manque probablement du niveau de détail par ligne nécessaire pour le tableau de données et la carte de localisation. Dans ce cas, supprimez l’agrégation et travaillez plutôt à partir des tables sous-jacentes de la couche Données brutes ou de la couche Transformation.
Recueil de recettes SQL contient des exemples de requêtes prêts à l’emploi pour des analyses courantes de flotte. Les recettes du livre peuvent être adaptées pour des rapports en ajoutant des colonnes de coordonnées lorsque la carte de localisation est nécessaire. La logique WHERE et JOIN de base se transpose directement ; ajustez uniquement la clause SELECT pour couvrir tous les composants requis.
Comment utiliser les variables globales
Les variables globales fournissent des valeurs réutilisables dans plusieurs instructions SQL. Définissez les variables dans Paramètres > Configuration > Variables globales, puis faites-y référence en utilisant ${variable_name} syntaxe.

Définissez des variables pour des valeurs qui changent périodiquement mais restent cohérentes sur plusieurs panneaux : plages de dates d'analyse, filtres de type de véhicule ou valeurs de seuil. Lorsque ces valeurs changent, mettez à jour la définition de la variable une seule fois au lieu de modifier des instructions SQL individuelles.
Les variables stockent des valeurs textuelles. Convertissez-les en types appropriés en SQL : '${variable_name}'::date pour les dates, '${variable_name}'::integer pour les nombres.
Pour les paramètres spécifiques à l'instruction qui changent fréquemment, vous pouvez utiliser des blocs de paramètres CTE au début :
Ce schéma combine des variables globales (plages de dates) avec des paramètres spécifiques à l'instruction (seuils), en gardant toutes les valeurs ajustables en haut pour faciliter l'Entretien.
Comment joindre des libellés de Traceur
raw_business_data.objects.device_id n’est pas unique. Un appareil peut contenir plusieurs enregistrements de Traceur, car un appareil réaffecté d’un Traceur à un autre laisse derrière lui les lignes précédentes. Les tables de faits telles que processed_common_data.Trajets touche activée ID de l'appareil seul, donc une simple jointure à objets multiplie chaque ligne de faits par le nombre d’enregistrements Traceur correspondants. Les comptes et les sommes sont alors trop élevés, sans aucune erreur pour vous l’indiquer.
Filtrage sur est_supprimé n’est pas suffisant à lui seul, car plus d’un enregistrement peut passer ce filtre. Choisissez d’abord une ligne par appareil, puis faites la jointure dessus :
Utilisez Jointure gauche plutôt qu'une jointure interne, afin qu'un appareil sans enregistrement d'objet survivant apparaisse encore plutôt que de disparaître du résultat.
données_communes_traitées.événements_du_conducteur_basés_sur_des_règles est l’exception. Il porte déjà id_objet et étiquette_objet, et ses coordonnées sont en degrés, donc il n’a besoin ni de cette jointure ni de la /1e7 conversion.
Comment accéder aux schémas IoT Query
IoT Query organise les données en couches : Données brutes, Transformation et Insight. Les couches Données brutes et Transformation contiennent chacune deux schémas PostgreSQL, et vous faites référence à une table par le nom de son schéma plutôt que par la couche. Choisir la bonne couche permet de gagner du temps et de garder le SQL clair. Pour obtenir tous les détails sur les schémas, consultez le Vue d'ensemble du schéma IoT Query.
Couche de Données brutes contient ce que les appareils et la plateforme Navixy ont enregistré, dans deux schémas. raw_telematics_data contient les données de Suivi, de saisie et d'état : raw_telematics_data.Suivi_data_core stocke chaque position GPS avec des horodatages, des coordonnées et des relevés de capteurs. raw_business_data contient des entités commerciales telles que raw_business_data.objects, raw_business_data.Véhicules, et raw_business_data.zones. Utilisez la couche Données brutes pour l'analyse au niveau des points, pour les valeurs brutes des capteurs et pour les étiquettes et attributs que vous joignez aux données traitées.
Couche de transformation contient les entités traitées dans deux schémas. données_communes_traitées contient les transformations que Navixy maintient, qui sont disponibles sans configuration : Trajets, données_des_capteurs_par_heures, événements_de_conducteur_basés_sur_règles, et événements_de_changement_d'entrée. données_personnalisées_traitées contient les transformations que vous créez vous-même dans Transformation Builder. Utilisez la couche Transformation pour la plupart des besoins de visualisation, car elle fournit des structures prêtes pour l’analyse. Voir Transformations courantes pour les colonnes de chaque table.
Couche d’analyse offre des métriques préagrégées et des modèles dimensionnels pour des analyses complexes. Utilisez-la pour des statistiques à l’échelle de la Flotte ou une analyse multidimensionnelle qui nécessiterait autrement des jointures complexes avec les tables de la couche de transformation.
Les noms de Couches Bronze, Silver et Gold décrivent l’architecture en médaillon suivie par les Couches. Ce ne sont pas des noms de schéma, et silver.Trajets n’est pas une table que vous pouvez interroger. Utilisez les noms de schéma ci-dessus.
Référencez les tables en utilisant schema.table format : processed_common_data.Trajets, pas seulement Trajets. Incluez des filtres de plage de dates dans les clauses WHERE pour limiter les données analysées :
La plupart des instructions SQL filtrent par appareil, plage horaire, ou les deux. Ajoutez ces filtres tôt dans les clauses WHERE afin de réduire le volume de données traité.
Unités de mesure dans les résultats de la requête
IoT Query stocke chaque mesure dans une unité fixe, et Dashboard Studio affiche tout ce que la requête renvoie. Il ne convertit pas les valeurs dans le système de mesure défini dans les Paramètres du compte Navixy, comme le fait l’application Dashboards prédéfinie. Deux personnes ayant des Paramètres du compte différents voient les mêmes chiffres sur le même panneau.
L'unité de chaque colonne est documentée dans le Vue d'ensemble du schéma IoT Query, et de nombreuses colonnes le nomment directement. Voyage_distance_mètres contient des mètres, vitesse_moyenne et vitesse_maximale contient des km/h, et altitude_de_départ et altitude_de_fin contient des mètres au-dessus du niveau de la mer. Vérifiez la colonne avant de nommer un panneau.
Convertissez dans la requête lorsque vos lecteurs travaillent dans d'autres unités, et nommez l'unité dans l'alias de colonne afin que le panneau se libelle correctement :
Divisez les mètres par 1 609,344 pour les miles, les km/h par 1,609344 pour les mph, et les mètres par 0,3048 pour les pieds.
Comment utiliser l’éditeur SQL
Accédez à l’éditeur SQL depuis la barre latérale gauche, sous Outils. Utilisez-le pour trois objectifs principaux : tester la logique avant de l’ajouter aux panneaux, explorer les schémas de données pour comprendre les colonnes disponibles, et exporter les données qui n’ont pas besoin de visualisation.

L’éditeur SQL prend en charge plusieurs onglets pour différentes instructions. Rédigez du SQL dans les onglets, exécutez-le avec le bouton « Exécuter la requête » et consultez les résultats dans le tableau ci-dessous. Les résultats affichent des métriques d’exécution (temps d’exécution, lignes renvoyées) et prennent en charge le tri des colonnes pour une analyse rapide des données.
Exportez les résultats au format CSV à l’aide du bouton « Export CSV ». Cela fonctionne pour les rapports ad hoc ou les extractions de données destinées à une analyse externe. L’éditeur SQL n’a aucune limite sur le nombre de lignes de résultats, contrairement au SQL de visualisation, qui doit renvoyer des jeux de données ciblés.
Testez la visualisation SQL dans l’éditeur SQL avant de l’ajouter aux panneaux. Rédigez l’instruction, vérifiez qu’elle renvoie les colonnes et types de données attendus, puis copiez-la dans l’onglet Requête SQL de l’éditeur de panneau. Ce flux de travail permet de détecter les problèmes structurels avant de configurer les paramètres de visualisation.
Schéma d’exploration pour les nouvelles données :
Modèles SQL courants
La plupart des requêtes SQL de visualisation suivent des modèles similaires. Copiez ces structures et adaptez les filtres, les colonnes et les agrégations à vos besoins spécifiques.
Que faire lorsque SQL échoue
Les échecs d’exécution se répartissent en trois catégories : les incompatibilités structurelles avec les exigences de visualisation, les erreurs de syntaxe SQL ou les filtres qui ne renvoient aucune donnée.
Incompatibilités de structure des colonnes
Se produisent lorsque les résultats ne correspondent pas aux attentes de la visualisation. Si vous avez sélectionné un graphique à barres mais que votre requête SQL renvoie trois colonnes, Dashboard Studio ne peut pas le rendre. Consultez les exigences du jeu de données dans l’onglet Requête SQL. Le graphique à barres nécessite exactement deux colonnes (catégorie, valeur), alors ajustez votre clause SELECT :
Erreurs de syntaxe SQL
Afficher des messages d’erreur spécifiques. Les problèmes courants incluent des préfixes de schéma manquants (Trajets au lieu de processed_common_data.Trajets), des fautes de frappe dans les noms de colonnes, ou un cast de date incorrect. Testez les instructions dans l’éditeur SQL pour voir des messages d’erreur détaillés avec les numéros de ligne.
Aucun résultat
Même si l’exécution a réussi, cela indique que les filtres excluent toutes les données. Testez la requête SQL sans clause WHERE dans l’éditeur SQL pour vérifier que la table contient des données, puis ajoutez des filtres progressivement afin d’identifier quelle condition exclut les résultats attendus.
Problèmes de performance
Si les instructions s'exécutent lentement ou expirent, ajoutez des filtres de plage de dates aux clauses WHERE. Les opérations qui analysent des tables entières traitent des millions de lignes inutilement :
Pour des conseils supplémentaires sur les performances, voir Comment accéder aux schémas IoT Query pour connaître les meilleures pratiques en matière de filtrage et de sélection de schéma.
Où trouver des exemples SQL
Le Recueil de recettes SQL fournit des exemples complets pour les analyses télématiques courantes. Ces recettes démontrent des modèles pour l’analyse de Voyage, les calculs de visites de zone, la détection d’inactivité et les métriques de Flotte. Chaque recette comprend l’instruction SQL complète, l’explication de la logique et des résultats d’exemple.
Adaptez les exemples du Recipe Book pour les visualisations en ajustant la clause SELECT afin de répondre aux exigences de visualisation. Une recette qui renvoie des enregistrements détaillés de Voyage peut devenir un graphique à barres en ajoutant Groupe BY et une agrégation COUNT. Une instruction calculant des métriques par Véhicules peut devenir une tuile de statistiques en ajoutant SUM sur l'ensemble des Véhicules.
Il vous suffit de :
Copier des exemples depuis Livre de recettes vers l’éditeur de Dashboard Studio.
Testez avec vos données réelles.
Vérifiez les résultats, puis modifiez la clause SELECT pour la visualisation cible.
La logique principale de WHERE et de JOIN reste la même ; vous ajustez uniquement la structure de sortie.
Pour plus de détails sur le schéma, consultez le Vue d'ensemble du schéma IoT Query. Cette référence explique les tables disponibles, les définitions de colonnes et les relations entre les Données brutes, la Transformation et les Couches d’Insight.
Mis à jour
Ce contenu vous a-t-il été utile ?