Skip to content

Proposition d’indicateur expression

Vincent Lara requested to merge indicateur-custom into main

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
Edited by Vincent Lara

Merge request reports