|
|
|
|
|
Vue d'ensemble sur le process de pipeline
|
|
|
|
|
|
=========================================
|
|
|
|
|
|
|
|
|
|
|
|
Quels data pipelines mettre en place ?
|
|
|
|
|
|
|
|
|
|
|
|
Qu'est-ce qu'un pipeline de données
|
|
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
pipeline de données
|
|
|
|
|
|
|
|
|
|
|
|
Un pipeline de données est une méthode dans laquelle les données brutes
|
|
|
|
|
|
sont ingérées à partir de diverses sources de données, puis transférées
|
|
|
|
|
|
vers un magasin de données, un entrepôt de données, pour ensuite
|
|
|
|
|
|
les analyser.
|
|
|
|
|
|
|
|
|
|
|
|
Avant que les données ne circulent dans un :term:`référentiel de données`,
|
|
|
|
|
|
elles subissent généralement un traitement de l'information.
|
|
|
|
|
|
Cette opération inclut les transformations de données, telles que le filtrage,
|
|
|
|
|
|
le masquage et les agrégations, qui garantissent une intégration
|
|
|
|
|
|
et une standardisation adéquates des données.
|
|
|
|
|
|
Ceci est particulièrement important lorsque la destination du fichier
|
|
|
|
|
|
est une base de données relationnelle.
|
|
|
|
|
|
Ce type de référentiel de données a un schéma défini qui nécessite un *alignement*,
|
|
|
|
|
|
c'est-à-dire qu'il faut faire correspondre les colonnes et les types de données
|
|
|
|
|
|
afin de mettre à jour les données existantes avec de nouvelles données.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Le référentiel de données
|
|
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
source de données
|
|
|
|
|
|
|
|
|
|
|
|
Une source de données peut être l'endroit où les données ont été créées ou celui où les informations physiques ont été numérisées. Cependant, même les données les plus élaborées peuvent être considérées comme des sources, tant qu'un autre processus y accède et les utilise. Concrètement, une source de données peut être une base de données, un fichier plat, des mesures provenant directement d'appareils physiques, des données obtenues par web scraping ou l'une des nombreux services de données statiques et de données en streaming qui abondent sur Internet.
|
|
|
|
|
|
|
|
|
|
|
|
référentiel de données
|
|
|
|
|
|
|
|
|
|
|
|
Le référentiel contient la totalité des données brutes collectées. Une collection, (Data Collection, data catalog,
|
|
|
|
|
|
data lakes, etc).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Il s'agit de charger des catalogues de données.
|
|
|
|
|
|
|
|
|
|
|
|
Les catalogues
|
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
|
|
`intake <https://intake.readthedocs.io/en/latest/index.html>`_
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
Catalogue
|
|
|
|
|
|
|
|
|
|
|
|
Un catalogue est un inventaire de sources de données.
|
|
|
|
|
|
An inventory of entries, each of which corresponds to a specific Data-set.
|
|
|
|
|
|
|
|
|
|
|
|
Catalog file
|
|
|
|
|
|
|
|
|
|
|
|
A YAML specification file which contains a list of named entries describing how to load data sources.
|
|
|
|
|
|
|
|
|
|
|
|
Data-set
|
|
|
|
|
|
|
|
|
|
|
|
A specific assemblage of data. The type of data (tabular, multi-dimensional or something else) and the format (file type, data service type) are all attributes of the data-set. In addition, in the context of Intake, data-sets are usually entries within a Catalog with additional descriptive text and metadata and a specification of how to load the data.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. rubric:: Exemple de catalogue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
|
|
|
|
sources:
|
|
|
|
|
|
states:
|
|
|
|
|
|
description: Bourbon Charles Ier
|
|
|
|
|
|
driver: xml
|
|
|
|
|
|
args:
|
|
|
|
|
|
urlpath: '{{ CATALOG_DIR }}/Bourbon/5-Charles-Ier/charles_ier_*.xml'
|
|
|
|
|
|
metadata:
|
|
|
|
|
|
origin_url: '{{ ORIGIN_URL }}/charles_ier_*.xml'
|
|
|
|
|
|
|
|
|
|
|
|
Le chargement du catalogue XML doit pouvoirse faire par du code de haut niveau
|
|
|
|
|
|
de la manière suivante :
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
|
|
cat = intake.open_catalog('bourbon.yml')
|
|
|
|
|
|
list(cat)
|
|
|
|
|
|
['Bourbon', 'CharlesIer']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Il faut pouvoir charger un catalogue en deux lignes
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
|
|
cat = intake.load_catalog('catalog.yml')
|
|
|
|
|
|
data = cat.data_source().read()
|
|
|
|
|
|
|
|
|
|
|
|
Comment ce genre de librairie fonctionne :
|
|
|
|
|
|
Il suffit de lui renseigner un pattern :
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
|
|
>>> reverse_format('data_{year}_{month}_{day}.csv', 'data_2014_01_03.csv')
|
|
|
|
|
|
{'year': '2014', 'month': '01', 'day': '03'}
|
|
|
|
|
|
|
|
|
|
|
|
Et intake charge les fichiers en fonction de ces patterns.
|
|
|
|
|
|
|
|
|
|
|
|
La **T**\ ransformation des données
|
|
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
- **Transformer ces données** (validations de typage, validation de schéma de
|
|
|
|
|
|
structure de données, etc), typiquement avec des librairies comme `pydantic <https://docs.pydantic.dev/latest/>`_
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
transformation des données
|
|
|
|
|
|
|
|
|
|
|
|
La transformation des données consiste à convertir les données d’un format source dans un format cible. Cela peut inclure un nettoyage des données par une modification des types de données, une suppression des données invalides ou des doublons, une agrégation des données, un enrichissement des données ou d’autres transformations.
|
|
|
|
|
|
|
|
|
|
|
|
La visualisation des pipelines
|
|
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
Utiliser l'outil fournit avec kedro, lancer la commande::
|
|
|
|
|
|
|
|
|
|
|
|
kedro viz
|
|
|
|
|
|
|
|
|
|
|
|
On obtient une interface de ce type :
|
|
|
|
|
|
|
|
|
|
|
|
.. image:: img/kedro-viz.png
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|