Proposition d’indicateur expression
Suite au travail avec VB on a vu qu’on pouvait avoir besoin de faire des additions d’indicateurs.
Cette MR ajoute la possibilité d’ajouter des indicateurs avec un attribut expression pour faire des opérations sur d’autres indicateurs ayant un attribut SQL.
On peut donc définir un indicateur comme suit
- identifiant: un_indicateur
expression: indicateur_sql_1 + indicateur_sql_2
Si on a dans un autre fichier
- identifiant: indicateur_sql_1
sql: SELECT COUNT(*) FROM table
- identifiant: indicateur_sql_2
sql: SELECT SUM(*) FROM table
Alors la requête suivante est produite
WITH indicateur_sql_1 AS(
SELECT COUNT(*) AS value, insee_dep FROM table GROUP BY insee_dep
),
indicateur_sql_2 AS(
SELECT SUM(*) AS value, insee_dep FROM table GROUP BY insee_dep
)
SELECT
indicateur_sql_1.value + indicateur_sql_2.value
FROM indicateur_sql_1
FULL JOIN indicateur_sql_2 ON indicateur_sql_1.insee_dep = indicateur_sql_2.insee_dep
WHERE
indicateur_sql_1.insee_dep = :code
OR indicateur_sql_2.insee_dep = :code
On ajoute donc dans un premier temps dans les CTE les requêtes SQL des indicateurs,
pour lesquelles on a aliasées la valeur renvoyée avec value
, on renvoie aussi la colonne géographique que l’on souhaite, et groupe sur cette même colonne afin de pouvoir la renvoyer.
Dans la requête principale on sélectionne la colonne value pour chacun des indicateurs, puis on fait une jointure sur chacun des indicateurs.
On fait un FULL JOIN
pour renvoyer aussi les colonnes ayant leur colonne géographique nulle, et on filtre sur les colonne géographique.
Questions :
- Je me demande si la jointure FULL est bien ce que l’on souhaite
- Dans la même thématique je me demande si l’on veut bien faire un
OR
À faire :
-
tester pour des indicateurs n’ayant pas les mêmes mailles géographiques.
Limitations :
- Pour l’instant les expressions ne peuvent être que des additions, des multiplications et des soustractions.
- On ne gère que les indicateurs SQL ne renvoyant qu’une seule valeur