Composant intermediaire de normalisation et nettoyage des donnees.
Se place entre <dsfr-data-source> et <dsfr-data-query>
pour nettoyer les donnees avant traitement.
Invisible : Ce composant ne rend rien visuellement. Il normalise les donnees et les redistribue aux composants en aval via le systeme d'evenements.
dsfr-data-source → dsfr-data-normalize → dsfr-data-query → dsfr-data-chart
Normaliser avant dsfr-data-query permet aux filtres et agregations de travailler
sur des donnees propres (evite les comparaisons string vs number).
"1234" au lieu de 1234)"12,5" vs "12.5")N/A, n.d., - par des valeurs exploitables32073247.269999996 a 32073247| Attribut | Type | Defaut | Description |
|---|---|---|---|
id | String | - | Requis. Identifiant de la sortie. |
source | String | "" | Requis. ID de la source a ecouter. |
numeric | String | "" | Champs a forcer en nombre (virgule-separes). |
numeric-auto | Boolean | false | Detection et conversion automatique des champs numeriques. |
rename | String | "" | Renommage de cles : "ancien:nouveau | ancien2:nouveau2" |
trim | Boolean | false | Supprime les espaces en debut/fin des valeurs string. |
strip-html | Boolean | false | Supprime les balises HTML des valeurs string. |
replace | String | "" | Remplacement global de valeurs : "N/A: | n.d.: | -:0" |
replace-fields | String | "" | Remplacement cible par champ : "CHAMP:ancien:nouveau | CHAMP2:a:n". Ne remplace que dans le champ specifie. Combinable avec replace. |
flatten | String | "" | Cle du sous-objet a aplatir au premier niveau. Supporte la dot notation ("data.attributes"). |
round | String | "" | Arrondit les champs numeriques. Format : "champ1, champ2" (0 decimales) ou "champ1:2, champ2:0" (N decimales). |
lowercase-keys | Boolean | false | Met toutes les cles en minuscules. |
Separateurs : rename et replace utilisent le pipe |
pour separer les paires, et : pour separer la cle de la valeur.
replace-fields utilise le format CHAMP:pattern:remplacement (les 2 premiers : sont des delimiteurs).
numeric utilise la virgule.
Les donnees brutes RappelConso contiennent des noms de colonnes longs et techniques. On renomme les colonnes pour la lisibilite et on nettoie les espaces superflus.
{
"modeles_ou_references": " Lot 2024-ABC ",
"categorie_produit": "Alimentation",
"marque_produit": "Ma Marque",
"date_publication": "2024-06-15",
"motif_rappel": "Presence de Listeria"
}
{
"Produit": "Lot 2024-ABC", // trim + rename
"Categorie": "Alimentation", // rename
"Marque": "Ma Marque", // rename
"Date": "2024-06-15", // rename
"Motif": "Presence de Listeria" // rename
}
<dsfr-data-source id="raw" api-type="opendatasoft"
dataset-id="rappelconso-v2-gtin-trie"
base-url="https://data.economie.gouv.fr"
server-side page-size="50">
</dsfr-data-source>
<dsfr-data-normalize id="clean" source="raw"
trim
rename="modeles_ou_references:Produit | categorie_produit:Categorie | marque_produit:Marque | date_publication:Date | motif_rappel:Motif">
</dsfr-data-normalize>
<!-- Les donnees normalisees sont pretes pour query/chart -->
<dsfr-data-list source="clean" pagination="5"></dsfr-data-list>
Source → Normalize → Query → Chart
<dsfr-data-source id="raw" url="..." transform="results"></dsfr-data-source>
<dsfr-data-normalize id="clean" source="raw"
numeric="population, budget"
rename="pop_tot:Population totale | lib_dep:Departement"
trim
replace="N/A: | n.d.:">
</dsfr-data-normalize>
<dsfr-data-query id="stats" source="clean"
group-by="Departement"
aggregate="population:sum"
order-by="population__sum:desc"
limit="10">
</dsfr-data-query>
<dsfr-data-chart source="stats" type="bar"
label-field="Departement"
value-field="population__sum">
</dsfr-data-chart>
L'API INSEE Melodi retourne des codes de dimension (AGE: "Y30T39", PCS: "3").
replace-fields permet de les decoder sans affecter les autres champs
qui pourraient contenir les memes valeurs.
<dsfr-data-source id="raw" api-type="insee"
base-url="https://api.insee.fr/melodi"
dataset-id="DS_POPULATIONS_REFERENCE"
where="POPREF_MEASURE:eq:PMUN, TIME_PERIOD:eq:2023">
</dsfr-data-source>
<dsfr-data-normalize id="decoded" source="raw"
replace-fields="AGE:Y30T39:30-39 ans | AGE:Y_LT30:Moins de 30 ans | PCS:3:Cadres | PCS:5:Employes"
replace="N/A:">
</dsfr-data-normalize>
<dsfr-data-chart source="decoded" type="bar"
label-field="AGE" value-field="OBS_VALUE">
</dsfr-data-chart>