Retour

Utiliser le composant Reverse_Pivot sous SAP Data Integrator

Temps de lecture : 5 minutes

Vous apprendrez dans ce tutoriel comment pivoter des données sous SAP Data Integrator, afin d’échanger la représentation des données depuis des lignes vers des colonnes. Vous utiliserez pour celà le composant Reverse_Pivot.

Pré – requis :

  • Version : SAP Data Integrator 4.2 SP10
  • Avoir installé un référentiel local.
  • Savoir réaliser un Job simple sous SAP Data Services extrayant des données depuis des tables source en alimentant des tables cibles (modèles de table ou tables réelles).
  • Savoir valider la syntaxe de vos traitements puis exécuter un Job.
  • Disposer de connaissances de base (colonnes, clés primaires, clés étrangères..) sur les bases de données.
  • Tutoriel sur les jointures SAP Data Integrator (à publier).
  • Tutoriel sur le contournement d’exécutions (à publier).

Présentation :

Voici la structure de la table que nous avions obtenu à la fin du tutoriel sur les jointures SAP Data Integrator :

Cette table donne pour chaque catégorie de produit (CATEGORY_NAME) et chaque année (CALENDAR_YEAR) le nombre de commandes (NB_ORDERED) et la quantité totale commandée (ORDERED_QTY) pour chacun des jours de semaine (WEEKDAY_NAME), la quantité et le nombre de commandes journalières étant sommés sur toute l’année.

Notre objectif est de modifier la présentation des informations de cette table afin de faciliter la réalisation de comparaisons sur le comportement des commandes selon le jour et la catégorie. Il serait intéressant pour celà de disposer les jours successifs (Lundi, Mardi… Dimanche) en entête des colonnes.. C’est ce que nous allons réaliser grâce au composant Reverse_Pivot.

Etape facultative : spécifiez un contournement du premier Dataflow réalisé dans le tutoriel sur les jointures, celà vous évitera d’exécuter ce premier Dataflow à chacune des exécutions de votre Job :

Ouvrez DF_PIVOT_CATEGORY puis ajouter en source le modèle de table CATEGORY (1). Dans votre référentiel local, ouvrez la catégorie d’objets « Transformations » puis cliquez – glissez et reliez un composant Reverse_Pivot dans votre Dataflow (2). Il sera nommé « REVERSE_PIVOT_CATEGORY » :

Utilisez en cible un modèle de table ORDER_BY_WEEKDAYS. Nous n’aurons pas besoin de l’importer, cette table cible peut être supprimée et recrée à chaque alimentation :

Ouvrez le Reverse_Pivot, vous pouvez voir dans son schéma d’entrée le schéma de la table source. Nos données d’entrée ont déjà été regroupées grâce à un GROUP BY avant le chargement de notre table source. Cochez donc « Les données d’entrée sont regroupées » (1), celà rendra le traitement du Reverse_Pivot plus rapide.

Les colonnes non dynamiques sont les colonnes qui resteront en place après réalisation du Reverse pivot, choisissez donc les colonnes « CATEGORY_NAME » et « CALENDAR_YEAR » (2). Choisissez « ORDERED_QTY » et « NB_ORDERED » comme colonnes croisées dynamiques (3) :

Les deux colonnes croisées dynamiques seront générées pour chacune des valeurs de la colonne d’axe, c’est à dire pour chacun des jours de la semaine. Nous obtiendrons ainsi en sortie 7 * 2 colonnes issues du pivot en plus des deux colonnes non pivotées.

Choisissez (1) la colonne d’axe avec abandon des doublons (il n’y en a pas de toute façon). Puis choisissez les valeurs de préfixe que vous allez donner à chacune des colonnes générées par le Reverse_Pivot à partir de chacune des valeurs de la colonne d’axe (2) :

Validez vos traitements puis exécutez votre Job. Affichez ensuite un aperçu du contenu de la table cible. Pour chaque jour J (pour chaque valeur de la colonne d’axe) une colonne a été générée pour chacune des colonnes croisées dynamiquement, c’est à dire une colonne « J_ORDERED_QTY » et une colonne « J_NB_ORDERED ». Ces colonnes prennent une valeur pour chacune des valeurs de colonnes non dynamique (colonnes « CATEGORY_NAME » et « CALENDAR_YEAR » ) :

Nous allons maintenant utiliser notre résultat. Ajoutez un Dataflow en sortie de celui réalisant le Reverse_Pivot, placez en source la table « ORDER_BY_WEEKDAYS » issue de ce pivot et en cible un nouveau modèle de table « CATEGORY_AGREG ». Puis ajoutez et reliez deux transformateurs Query :

Nous allons effectuer des comparaisons entre les commandes effectuées le Lundi et celles du Samedi, toutes années confondues. Ouvrez le premier Query et remplacez les quantités d’intérêt de chacun des jours par une somme de ces quantités agrégées sur l’ensemble des années (1). Mappez le nom de la catégorie sans l’année (agrégée) puis ajoutez « CATEGORY_NAME » au GROUP BY (2) :

Ouvrez le deuxième Query puis effectuez un mapping simple de « CATEGORY_NAME »., « MONDAY_NB_ORDERED » et « SATURDAY_NB_ORDERED ». Ajoutez pour Lundi et Samedi une colonne « JOUR_MOY_QTY » donnant la quantité moyenne par commande et par jour sur l’année (1). Ajoutez ensuite une colonne « RATIO_NB_ORDERED » donnant le ratio entre le nombre de commandes pour chacun des jours (2) :

Validez vos traitements puis exécutez le Job. Affichez un aperçu de la table CATEGORY_AGREG. Vous pouvez maintenant consulter grâce au ratio une comparaison des quantités commandées le Lundi par rapport au Samedi pour chacune des catégories de produit sur l’ensemble des années, ainsi que la quantité moyenne par commande :

Vous savez désormais comment utiliser le composant Reverse_Pivot afin de mettre en forme des données sous un autre axe.

Laisser un commentaire

Il n'y a pas de commentaires pour le moment. Soyez le premier à participer !