Retour

Analyser les variations avec previous_row_value sous SAP Data Integrator

Temps de lecture : 4 minutes

Dans ce tutoriel vous apprendrez à utiliser la fonction previous_row_value suivie d’une agrégation afin de détecter les produits dont les stocks sont les plus variables sur une période.

Prérequis :

  • Version : SAP Data Integrator 4.2 SP10.
  • Avoir installé un référentiel local.
  • Savoir réaliser un Job simple chargeant des données d’une table source vers une table cible.
  • Savoir agréger sur un Group By. Vous pouvez trouver un exemple d’utilisation dans ce tutoriel sur la fonction gen_row_num_by_group.
  • Vous pouvez consulter ce tutoriel sur la fonction gen_row_num

Contexte :

Vous disposez d’une table PRODUITS_STOCKS indiquant pour chaque produit le niveau mensuel (premier du mois) de leur stock entre début 2008 et fin 2011 :

L’objectif est de récupérer les 10 produits ayant les plus fortes variations de stocks sur l’ensemble de cette période.

Résolution :

Créez le Job JOB_VARIATIONS contenant en séquence les Dataflows DF_VAR_STOCKS et DF_MAX_VAR :

Ouvrez DF_VAR_STOCKS, ajoutez en source la table PRODUITS_STOCKS coinnectée à un transformateur Query (1). Créez un modèle de table cible PRODUITS_STOCKS_VAR (2). Connectez le en sortie du Query :

Ouvrez le Query, réalisez un mapping simple puis ajoutez une nouvelle colonne de sortie entière nommée « VARIATION » :

Nous allons écrire la colonne VARIATION comme la soustraction entre la valeur du stock de la ligne en cours de traitement et la valeur du stock de la ligne précédente (1). Ouvrez l’éditeur de fonction pour pouvoir écrire le deuxième membre de la soustraction (2) :

Allez dans fonctions diverses, choisissez la fonction « previous_row_value » puis cliquez sur suivant :

Dans la case « Expression » choisissez la table source PRODUITS_STOCKS puis la colonne STOCK_LEVEL puis cliquez sur Terminer :

Validez la syntaxe du Query, puis de votre Dataflow et de votre Job :

Exécutez le Job puis ouvrez un aperçu de la table cible. Nous obtenons pour chaque mois la variation du stock par rapport au mois précédent :

Ouvrez le second Dataflow. Ajoutez en source la table PRODUITS_STOCKS_VAR obtenue ci – dessus et en cible un modèle de table PRODUIT_MAX_VAR. Interposez trois Query QRY_AVG, QRY_ORDER puis QRY_WHERE :

Ouvrez QRY_AVG et réalisez un Group By sur les colonnes du schéma d’entrée PRODUCT_ID et PRODUCT_NAME :

Mappez PRODUCT_ID et PRODUCT_NAME vers le schéma de sortie puis ajoutez une colonne VAR_PERIODE :

Allez dans le mapping de VAR_PERIODE puis ouvrez l’éditeur de fonctions. Nous allons réaliser la moyenne, agrégée sur toute la période, de la valeur absolue des variations de stock par mois. Utilisez pour celà la fonction mathématique « abs » et la fonction d’agrégation « avg » :

Voilà ce que vous devez obtenir pour le mapping de la colonne VAR_PERIODE :

Ouvrez le Query suivant QRY_ORDER puis effectuez un mapping simple depuis le schéma d’entrée vers la schéma de sortie. Ajoutez un Order By décroissant sur VAR_PERIODE :

Ouvrez le Query suivant QRY_WHERE et ajoutez en première position une colonne NUMERO permettant d’obtenir le numéro de la ligne grâce à la fonction gen_row_num. Dans le WHERE ajoutez une condition permettant de ne garder que les 10 premières lignes :

Validez vos traitements puis exécutez le Job. Ouvrez un aperçu de la table cible PRODUIT_MAX_VAR. Vous y obtenez un classement des 10 produits subissant les plus fortes variations mensuelles de stocks sur la période du 01/01/2008 au 31/12/2011 :

Vous savez désormais comment analyser les variations d’une donnée d’entrée sous SAP Data Integrator.

Laisser un commentaire

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