Utiliser le transformateur Query de SAP Data Integrator

Ce tutoriel est une introduction aux possibilités d’agrégation et de filtrage du composant transformateur de base de SAP Data Integrator : le transformateur Query. Il constitue une bonne base avant d’aborder des fonctionnalités plus complexes de ce composant.

Prérequis :

Contexte :

Vous disposez de la liste des prénoms de citoyens français par année et département depuis 1900 extraite depuis le site https://www.data.gouv.fr/fr/datasets/ficher-des-prenoms-de-1900-a-2018/ et chargée dans une table « T_STAT_PRENOMS » d’une base de données « BDD_STAT_POP ». Vous avez créé un Datastore pointant vers cette base de données depuis votre référentiel SAP Data Integrator :

Vous souhaitez filtrer le contenu de cette table par département, année ou prénom ou bien étudier l’évolution de la fréquence de prénoms au fil du temps.

Remarque : La base de données utilisée dans cet exemple est SQL Server 2016 mais la méthode sera la même pour d’autres SGBD.

Solution :

Vous pouvez commencer par visualiser un échantillon de vos données sources afin de préparer votre travail. Depuis le Datastore, faites un clic droit sur la table source et cliquez sur « Afficher les données » :

Dans le premier onglet vous pouvez trier vos données ou bien les filtrer selon une condition portant sur un ou plusieurs champs :

Depuis un autre onglet vous pouvez afficher vos données en les triant selon la fréquence d’occurrence du champs de votre choix (ci – dessous, l’année de naissance) en indiquant le nombre de lignes affichées (100 dans ce cas)

Testez ainsi différentes structurations de vos données source afin de choisir ce qui vous intéressera de mettre en évidence grâce à votre traitement ETL, et comment organiser vos traitements afin de le réaliser.

Nous allons maintenant développer le traitement ETL SAP Data Services. Créez un nouveau Job puis insérez – y un Dataflow. Ajoutez le composant pointant vers la table source T_STAT_PRENOMS et connectez le à un transformateur Query. Afin de charger les données traitées créez un modèle de table cible (T_ANALYSE_STAT_PRENOMS) :

Dans un premier temps connectez le Query directement à la table cible :

Mappez le schéma d’entrée vers la sortie (1). Cliquez sur le champs SEXE puis allez dans l’onglet « Mappage ». Dans les données sources le champs SEXE vaut 1 ou 2. Pour plus de clarté nous allons le mapper à un champs de sortie de type VARCHAR(1) qui vaudra « F » ou « M ». Utilisez pour celà la fonction decode() (2) en l’écrivant avec complétion automatique ou en allant la chercher dans le menu fonction ou dans l’éditeur (…) :

La fonction decode() fonctionne comme un Switch Case en programmation. Si le champs source vaut 1 il correspond à « Masculin » et si il vaut 2 à « Féminin ». Si jamais le champs vaut autre chose il sera remplacé par la sortie par défaut : NULL..

Le transformateur Query de SAP Data Integrator permet de construire une requête SQL. Vous pouvez aussi directement écrire une requête SQL depuis un composant dédié de l’ETL mais l’utilisation du Query permet d’une part d’optimiser automatiquement la requête lors de sa génération et d’autre part d’accéder à plusieurs catégories de fonctions, disponibles par défaut dans l’ETL ou bien personnalisées.

Remarque : L’exécution de votre Dataflow sera plus rapide si celui – ci comporte juste un ou deux Query chargeant leurs résultats dans une table de la même base que la table source. En effet dans ce cas les opérations seront poussées vers la base de données au lieu d’être exécutées dans le cache SAP Data Integrator.

Nous allons commencer par filtrer les données d’entrée depuis l’onglet WHERE. La ligne suivante permet de ne conserver que le prénom « Romain » pour le département des Bouches du Rhone (13) et l’année 2010 :

Validez votre Job afin de vérifier sa syntaxe puis lancez son exécution. Une fois celle – ci terminée cliquez sur la loupe apparue en bas de la table cible afin d’afficher le résultat : 77 personnes nées en 2010 dans les Bouches du Rhone s’appellent Romain :

Nous allons modifier le traitement afin d’afficher pour un prénom donné, quelle année depuis 1900 a vu le plus de naissances sur l’ensemble de la France.

Nous choisissons le prénom Gaston, vous devez donc modifier à cette fin le filtre de votre Query :

Nous voulons le résultat pour tous le territoire, vous devez donc agréger le nombre des naissances de « Gaston » sur l’ensemble des départements pour chaque année. Depuis l’onglet Group By, indiquez tous les champs d’agrégation qui se retrouveront dans la sortie :

Le champs « Nombre » doit être agrégé sur l’ensemble des départements grâce à la fonction sum() :

Validez la syntaxe de ce premier Query puis ajoutez un Query en séquence avant le chargement en cible :

Grâce à ce nouveau Query on ordonne les données agrégées de manière décroissante selon le nombre :

Validez la syntaxe de votre Job puis lancez son exécution. Depuis 1900 l’année qui a vu en France le plus d’enfant Gaston naître est 1920. L’année qui en a vu le moins est 1944 :

Vous savez désormais comment utiliser un transformateur Query afin de filtrer et agréger des données sous SAP Data Integrator.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *