Requêtes avancées
Edalitics accorde une attention particulière à la facilité d’utilisation et à l’abstraction des connaissances techniques nécessaires pour effectuer des requêtes sur une base de données. Cependant, il est parfois nécessaire de recourir à la puissance du SQL pour réaliser certaines requêtes complexes. Pour cela, edalitics met le « Mode SQL » à la disposition des utilisateurs avancés. Pour accéder à ce mode, vous devez activer l’interrupteur situé en haut à droite de la boîte de dialogue de définition de requête, dans la configuration d’un panneau (1)
En activant cet interrupteur, vous pouvez passer du « Mode EDA », le mode edalitics par défaut, à ce « Mode SQL », où les utilisateurs avancés pourront définir et exécuter des requêtes SQL natives sur la base de données.
Une fois l’interrupteur « Mode SQL » activé, l’utilisateur pourra définir sa requête SQL libre dans la zone de texte prévue à cet effet (2) et spécifier l’une des tables principales du modèle de données sur laquelle repose la requête. (3).
Requêtes : ce sont des requêtes SQL natives libres qui doivent respecter les restrictions suivantes :
- Les requêtes doivent porter sur le même schéma de base de données que celui sur lequel le rapport est réalisé. Les schémas de base de données ne peuvent pas être mélangés. Si vous avez besoin de tables issues de schémas différents, nous vous recommandons de générer des vues.
- Des alias doivent être utilisés pour les tables. Autrement dit, les requêtes doivent être définies selon la structure d’exemple suivante « select a.field1, a.field2 from table a ».
Afin de faciliter l’interaction avancée avec les requêtes SQL, une aide (3) est disponible sur le même écran, qui nous rappellera :
- Les recommandations générales
- Comment relier les filtres du rapport à notre requête SQL
- Des exemples d’utilisation
Une fois notre requête SQL (2) définie et la table principale identifiée, nous pouvons désormais exécuter la requête et l’utiliser normalement comme n’importe quelle autre requête de n’importe quel autre panneau.
Les requêtes SQL natives sont mises en correspondance par edalitics, et les éventuels filtres d’accès aux données existant dans le modèle sur lequel repose le rapport y sont injectés.
Si vous souhaitez relier la requête aux filtres du rapport, vous devez :
- Pour cela, il vous suffit d’ajouter : AND ${alias_table.columna_filtrada} dans la clause « WHERE » de la requête à l’endroit où vous souhaitez injecter le filtre
- Si vous n’avez ajouté aucune clause WHERE, ajoutez-la à la requête et effectuez les jointures nécessaires, en incluant le filtre au format ${alias_table.column_filtered}
- Si la table sur laquelle porte le filtre n’est pas présente dans la requête, n’oubliez pas d’ajouter les clauses JOIN nécessaires pour pouvoir relier la table du filtre à votre requête
Video tutorial
Section intitulée « Video tutorial »Exemples
Section intitulée « Exemples »Voici quelques exemples :
- Requête simple :
SELECT c.customername FROM CUSTOMERSc
-
Requête avec filtres de rapport reliés :
- Nous avons un filtre dans le rapport pour le champ « city » de la table CUSTOMERS :
-
Requête sans filtres reliés :
SELECT c.customername FROM CUSTOMERSc WHERE c.customername IN (‘Julia’, ‘John’)
-
Requête avec filtres reliés :
SELECT c.customername FROM CUSTOMERSc WHERE c.customername IN (‘Julia’, ‘john’) AND ${c.city}
-
- Nous avons un filtre dans le rapport pour le champ « city » de la table CUSTOMERS :
-
Nous avons un filtre dans le rapport pour le champ « office_id » de la table OFFICES
-
Requête sans filtres reliés :
SELECT e.employee_name FROM EMPLOYEE e WHERE e.employee_name IN (‘Julia’, ‘John’)
-
Requête avec filtres reliés : SELECT e.employee_name FROM EMPLOYEE e INNER JOIN OFFICES or ON o.office_id = e.office_id WHERE e.employee_name IN (‘Julia’, ‘John’) AND ${o.office_id}
-

