Région | FR-CVL | ||||
Période | 06/2004 | ||||
Date de mesure | Site | Précipitation | Température moyenne | Température minimale | Température maximale |
01/06/2004 | Os1 | 30 | 20 | 10 | 24 |
07/06/2004 | Os1 | 2 | 22 | 14 | 27 |
07/06/2004 | Os2 | 0 | 21 | 9 | 28 |
Example de desciption d’un domaine
Météorologie
Description
Nous avons des données de météorologie
Cartouche
Ce fichier fichier possède un cartouche.
- l’en-tête est à la ligne 3
- la première ligne de données à la ligne 4
Constantes du fichier
Ce sont des valeurs qui s’appliquent à toutes les lignes du fichier
Dans le “pre-header” on trouve - une information de localisation (la région). C’est une clef étrangère vers le référentiel tr_regions_reg - une information de temporalité (la période de mesure).
En-tête
Ce sont les noms des colonnes - Date de mesure : une information de temporalité au foramt dd/MM/yyyy correspondant un une période de 1 jour (moyenne de calcul) - Site: une inforamtion de localisation qui permettra en l’associant à une région à identifier un site. C’est une clef étrangère. C’est à dire qu’on retrouvera l’information du site dans le référentiel tr_sites_sit. La combinaison région - site fera référence à une ligne de ce référentiel. - Précipitation : c’est une variable (valeur flottante) que l’on mesure en mm. - Température : une variable de température déclinée en trois composante et mesurée en degré Celsius. Date de mesure;Site;Précipitation;Température moyenne;Température minimale;Température maximale
Les unités feront référence au référentiel tr_unites_uni. Elle ne sont pas présentes dans le fichier mais on peut les fournir directement dans la configuration.
Référentiels
Il s’agit des informations permettant de comprendre les données du fichier tr_data_dat.csv
code | nom |
---|---|
FR-ARA | Auvergne-Rhône-Alpes |
FR-BFC | Bourgogne-Franche-Comté |
FR-BRE | Bretagne |
FR-CVL | Centre-Val de Loire |
FR-COR | Corse |
FR-GES | Grand Est |
FR-HDF | Hauts-de-France |
FR-IDF | Île-de-France |
FR-NOR | Normandie |
FR-NAQ | Nouvelle-Aquitaine |
FR-OCC | Occitanie |
FR-PDL | Pays de la Loire |
FR-PAC | Provence-Alpes-Côte d’Azur |
nom | Date.de.création | region |
---|---|---|
Os1 | 01/01/2000 | FR-CVL |
Os2 | 01/01/2000 | FR-CVL |
nom | nom_fr | nom_en | code |
---|---|---|---|
temperature | Température | Temperature | °C |
precipitation | Précipitation | Precipitation | mm |
Configuration
On doit d’abord décrire l’application
- déclaration de la version du moteur
OA_version: 2.0.1
- déclaration de l’application
OA_application:
OA_name: meteorologie
OA_i18n: # optional
OA_title:
fr: Example de définition de données de météorologie
en: Definition of meterologic data
OA_description:
fr: Cet exemple montre comment déclarer une données et ses référentiels associés.
en: This example shows how to declare a data and its associated repositories.
OA_version: 1.0.7
OA_defaultLanguage: fr # optional par défaut fr
OA_comment: Données météorologiques
On déclare le référentiel tr_region_reg
OA_data:
tr_regions_reg:
OA_tags: [ __ORDER_1__ ]
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_naturalKey:
- reg_code
OA_i18nDisplayPattern:
OA_title:
fr: '{reg_nom}'
en: '{reg_nom}'
OA_description:
fr: '{reg_nom} ({reg_code})'
en: '{reg_nom} ({reg_code})'
OA_i18n:
OA_title:
fr: Régions
en: Region
OA_basicComponents:
reg_code:
OA_required: true
OA_importHeader: code
OA_tags: [ __ORDER_1__ ]
OA_checker:
OA_name: OA_string
OA_params:
OA_pattern: FR-[A-Z]{3}
OA_exportHeader:
OA_title:
fr: Code
en: Code
OA_description:
fr: Code de la région
en: Region code
reg_nom:
OA_required: false
OA_importHeader: nom
OA_tags: [ __ORDER_2__ ]
OA_exportHeader:
OA_title:
fr: Nom
en: Name
OA_description:
fr: Nom de la région
en: Region name
…
- On déclare code comme clef naturelle.
- On ajoute un Identificateurs pour le code.
- On surcharge l’affichage de ce code en rajoutant la section OA_i18nDisplayPattern.
- on rajoute des OA_exportHeader pour l’affichage des en-tête à l’extraction
- On rajoute des OA_tags __ORDER_ pour ordonner les types de données et les composantes à l’extraction.
On déclare le référentiel tr_sites_sit
OA_data:
…
tr_sites_sit:
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_naturalKey:
- reg_code
- sit_nom
OA_i18nDisplayPattern:
OA_title:
fr: '{sit_nom} ({reg_code})'
en: '{sit_nom} ({reg_code})'
OA_description:
fr: 'Nom du site: {sit_nom}; Nom de la région: ({reg_code})'
en: 'Site name: {sit_nom}; région name ({reg_code})'
OA_i18n:
OA_title:
fr: Sites
en: Sites
OA_basicComponents:
sit_nom:
OA_required: true
OA_importHeader: nom
OA_tags: [ __ORDER_3__ ]
OA_exportHeader:
OA_title:
fr: Nom
en: Name
OA_description:
fr: Nom du site
en: Site name
sit_date :
OA_required: true
OA_importHeader: "Date de création"
OA_tags: [ __ORDER_1__ ]
OA_checker:
OA_name: OA_date
OA_params:
OA_pattern: dd/MM/yyyy
OA_exportHeader:
OA_title:
fr: Date de création
en: Creation date
OA_description:
fr: Date de création du site
en: Site creation date
reg_code:
OA_required: true
OA_importHeader: region
OA_tags: [ __ORDER_2__ ]
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_regions_reg
OA_isParent: true
OA_exportHeader:
OA_title:
fr: Code
en: Code
OA_description:
fr: Code de la région
en: Region code
…
- On déclare une clef composite pour sites (sit_nom, reg_code)
- On surcharge l’affichage de ce code en rajoutant la section OA_i18nDisplayPattern.
- On rajoute un Identificateurs de type date sur sit_date.
- On rajoute un Identificateurs de type clef étrangère pour la composante région. De plus on ajoute OA_isParent: true pour indiquer que tr_regions_reg est le parent de tr_sites_sit.
- on rajoute des OA_exportHeader pour l’affichage des en-tête à l’extraction
- On rajoute des OA_tags __ORDER_ pour ordonner les types de données et les composantes à l’extraction.
On déclare le référentiel tr_unites_uni
OA_data:
…
tr_unites_uni:
OA_dataHeaderLine: 1
OA_dataFirstLine: 2
OA_tags: [ __ORDER_1__ ]
OA_naturalKey:
- uni_nom
OA_i18n:
OA_title:
fr: Unités
en: Units
OA_i18nDisplayPattern:
OA_title:
fr: '{uni_code}'
en: '{uni_code}'
OA_description:
fr: '{uni_nom_fr} ({uni_code})'
en: '{uni_nom_en} ({uni_code})'
OA_basicComponents:
uni_nom:
OA_required: true
OA_importHeader: nom
OA_tags: [ __HIDDEN__ ]
uni_nom_fr:
OA_required: false
OA_importHeader: nom_fr
OA_exportHeader:
OA_title:
fr: Nom
OA_description:
fr: Nom de l'unité
OA_tags: [ __ORDER_2__ ]
OA_langRestrictions:
- fr
uni_nom_en:
OA_required: false
OA_importHeader: nom_en
OA_exportHeader:
OA_title:
en: Name
OA_description:
en: Unit name
OA_tags: [ __ORDER_2__ ]
OA_langRestrictions:
- en
uni_code:
OA_required: true
OA_importHeader: code
OA_tags: [ __ORDER_1__ ]
…
- On déclare une clef naturelle uni_nom
- On surcharge l’affichage de ce code en rajoutant la section OA_i18nDisplayPattern.
- on rajoute des OA_exportHeader pour l’affichage des en-tête à l’extraction
- On rajoute des OA_tags __ORDER_ pour ordonner les types de données et les composantes à l’extraction.
- Pour internationnaliser l’affichage de la colonne nom on utilise un OA_tags HIDDEN et une section OA_langRestrictions
Déclaration de la donnée t_data_dat
OA_data:
…
t_data_dat:
OA_tags: [ __ORDER_1__ , __DATA__]
OA_dataHeaderLine: 3
OA_dataFirstLine: 4
OA_naturalKey:
- sit_site
- dat_date
OA_i18n:
OA_title:
fr: Données de météorologie
en: Meteorologic data
OA_description:
fr: Données de précipitation et de température
en: Precipitation and temperature data
OA_basicComponents:
dat_date:
OA_tags: [__ORDER_2__]
OA_importHeader: Date de mesure
OA_exportHeader:
OA_title:
fr: Date de mesure
en: Measurement date
OA_description:
fr: Date de la mesure
en: Measurement date
sit_nom:
OA_required: true
OA_importHeader: Site
OA_tags: [ __HIDDEN__ ]
dat_precipitation:
OA_tags: [__ORDER_3__]
OA_importHeader: "Précipitation"
OA_exportHeader:
OA_title:
fr: Précipitations
en: Precipitations
OA_constantComponents:
reg_region:
OA_tags: [ __HIDDEN__ ]
OA_required: true
OA_importHeaderTarget:
OA_rowNumber: 1
OA_columnNumber: 2
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_regions_reg
dat_periode:
OA_tags: [ __HIDDEN__ ]
OA_required: true
OA_importHeaderTarget:
OA_rowNumber: 2
OA_columnNumber: 2
OA_checker:
OA_name: OA_date
OA_params:
OA_pattern: MM/yyyy
OA_duration: 1 month
OA_computedComponents:
sit_site: # la clef de site étant comosée on la calcule en utilisant OA_withNaturalKeyComponents
OA_tags: [__ORDER_1__]
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_sites_sit
OA_withNaturalKeyComponents:
- reg_region
- sit_nom
dat_precipitation_unit:
OA_tags: [__ORDER_4__]
OA_computation:
OA_expression: >
return "precipitation";
OA_exportHeader:
OA_title:
fr: Précipitations (unité)
en: Precipitations (unit)
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_unites_uni
OA_patternComponents:
dat_temperature_moyenne:
OA_tags: [__ORDER_5__]
OA_patternForComponents: "(Température) moyenne"
OA_required: false
OA_exportHeader:
OA_title:
fr: "Température moyenne"
en: "Average temperature"
OA_description:
fr: "valeur de la variable"
en: "variable value"
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
OA_componentQualifiers:
- dat_unit: #$1
OA_tags: [__ORDER_1__]
OA_exportHeader:
OA_title:
fr: "unité"
en: "unit"
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: "tr_unites_uni"
OA_componentAdjacents:
- dat_temperature_minimale:
OA_tags: [__ORDER_2__]
OA_importHeaderPattern: "{$1} minimale"
OA_exportHeader:
OA_title:
fr: Température minimale
en: Minimal temperature
OA_required: false
OA_mandatory: false
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
- dat_temperature_maximale:
OA_tags: [__ORDER_2__]
OA_importHeaderPattern: "{$1} maximale"
OA_exportHeader:
OA_title:
fr: Température maximale
en: Maximal temperature
OA_required: false
OA_mandatory: false
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
- On déclare une clef composite pour data (sit_site, dat_date)
- On rajoute un Identificateurs de type date sur dat_date, dat_periode.
- On rajoute un Identificateurs de type clef étrangère pour les composantes sit_site, reg_region, dat_precipitation_unit et dat_unit.
- On rajoute un Identificateurs de type valeur flottante pour les composantes dat_precipitation, dat_temperature_moyenne, dat_temperature_minimale, dat_temperature_maximale.
- on rajoute des OA_exportHeader pour l’affichage des en-tête à l’extraction
- On rajoute des OA_tags DATA sur le type t_data_dat pour indiquer qu’il s’agit de données et __ORDER_ pour ordonner les types de données et les composantes à l’extraction.
Pour récupérer le site qui est une clef composite sur le nom du site et le code de la région: - on récupère d’abord le code de la région comme une constante de ficher dans une section OA_constantComponents avec une OA_tags HIDDEN pour ne pas l’afficher en sortie.
OA_constantComponents:
reg_region:
OA_tags: [ __HIDDEN__ ]
OA_required: true
OA_importHeaderTarget:
OA_rowNumber: 1
OA_columnNumber: 2
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_regions_reg
- on récupère le nom du site comme composante basique dans une section OA_basicComponents avec une OA_tags HIDDEN pour ne pas l’afficher en sortie.
OA_basicComponents:
sit_nom:
OA_required: true
OA_importHeader: Site
OA_tags: [ __HIDDEN__ ]
- On calcule la clef composite comme composante calculée dans une section OA_computedComponents
sit_site: # la clef de site étant comosée on la calcule en utilisant OA_withNaturalKeyComponents
OA_tags: [__ORDER_1__]
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: tr_sites_sit
OA_withNaturalKeyComponents:
- reg_region
- sit_nom
OA_withNaturalKeyComponents permet de construire la clef naturelle qui sera validée par le vérificateur.
Pour les variables et leurs unités nous utilisons deux stratégies:
Pour les précipitation la valeur est récupéré comme une composante basique OA_basicComponents et l’unité comme une composante calculée OA_computedComponents
Pour les températures nous décrivons une composante pattern:
- OA_patternForComponents donne un pattern qui capture la colonne Température moyenne.
OA_patternComponents:
dat_temperature_moyenne:
OA_tags: [__ORDER_5__]
OA_patternForComponents: "(Température) moyenne"
OA_required: false
OA_exportHeader:
OA_title:
fr: "Température moyenne"
en: "Average temperature"
OA_description:
fr: "valeur de la variable"
en: "variable value"
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
- Le seul groupe de capture de l’expression est le nom de l’unité -> c’est un qualifiant du pattern
OA_componentQualifiers:
- dat_unit: #$1
OA_tags: [__ORDER_1__]
OA_exportHeader:
OA_title:
fr: "unité"
en: "unit"
OA_checker:
OA_name: OA_reference
OA_params:
OA_reference:
OA_name: "tr_unites_uni"
- les autres colonnes température sont capturées comme colonne adjacente.
OA_componentAdjacents:
- dat_temperature_minimale:
OA_tags: [__ORDER_2__]
OA_importHeaderPattern: "{$1} minimale"
OA_exportHeader:
OA_title:
fr: Température minimale
en: Minimal temperature
OA_required: false
OA_mandatory: false
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
- dat_temperature_maximale:
OA_tags: [__ORDER_2__]
OA_importHeaderPattern: "{$1} maximale"
OA_exportHeader:
OA_title:
fr: Température maximale
en: Maximal temperature
OA_required: false
OA_mandatory: false
OA_checker:
OA_name: OA_float
OA_params:
OA_min: -15.0
OA_max: 45.0
Rendu
Stockage en base
tr_sites_sit
select refvalues
from meteorologie.referencevalue
where referencetype = 'tr_sites_sit' and
= 'frcvl__os1'::ltree naturalkey
{
"sit_nom": "Os1",
"reg_code": "frcvl",
"sit_date": "date:2000-01-01T00:00:00:dd/MM/yyyy",
"__display_en": "Os1 (frcvl)",
"__display_fr": "Os1 (frcvl)",
"__display_default": "Nom du site: Os1; Nom de la région: (frcvl)",
"__display_description_en": "Site name: Os1; région name (frcvl)",
"__display_description_fr": "Nom du site: Os1; Nom de la région: (frcvl)"
}
On remarquera la surcharge de la clef naturelle __display_…
On peut récupérer la date
select
>> '{sit_date}')::composite_date)::timestamp,
((refvalues #>> '{sit_date}')::composite_date)::text
((refvalues #from meteorologie.referencevalue
where referencetype = 'tr_sites_sit' and
= 'frcvl__os1'::ltree naturalkey
t_data_dat
select refvalues
from meteorologie.referencevalue
where referencetype = 't_data_dat' and
= 'frcvl__os1__01SOLIDUS06SOLIDUS2004'::ltree naturalkey
{
"sit_nom": "Os1",
"dat_date": "01/06/2004",
"sit_site": "frcvl__os1",
"reg_region": "frcvl",
"dat_periode": "date:1970-01-01T00:00:00:MM/yyyy",
"__display_default": "frcvl__os1__01/06/2004",
"dat_precipitation": "30",
"dat_precipitation_unit": "precipitation",
"dat_temperature_moyenne": {
"dat_unit": "temperature",
"__VALUE__": 20,
"__COLUMN_NAME__": "dat_temperature_moyenne",
"__ORIGINAL_COLUMN_NAME__": "Température moyenne",
"dat_temperature_maximale": 24,
"dat_temperature_minimale": 10
}
}
On remarque la différence de stratégie de récupération des valeurs précipitation et température :
- il n’y a pas de marquage de la proximité des variables dat_precipitation et dat_precipitation_unit
- toutes les valeurs correspondant à la température sont regroupées dans un même objet json sous le label dat_temperature_moyenne qui est l’idendificateur du patternComponent