Explication de SAP Data Services
Accès aux données
Développement de jobs et de flux de données
Correction des erreurs des jobs d'arrière-plan
Utilisation de fonctions, de scripts et de variables
Interrogation de données à l'aide de transformations de plateforme
Fractionnement et combinaison des données avec des transformations de plateforme
Gestion des erreurs et récupération à partir d'une défaillance
Mise à jour des données
Conception de scénarios ETL avancés à l'aide des transformations SAP Data Services Integrator
Optimisation des performances

Création de flux de données

Objective

After completing this lesson, you will be able to créer un flux de données de base

Flux de données Data Services

Les flux de données contiennent les objets source, de transformation et cible qui représentent les activités clés dans les processus d'intégration et de qualité des données.

Utilisation du flux de données

Les flux de données déterminent la manière dont les informations sont extraites des sources, transformées et chargées dans les cibles. Les lignes reliant des objets dans un flux de données représentent le flux de données avec des processus d'intégration et de qualité des données.

Flux de données :

  • Extraire, transformer et charger des données.
  • Déterminez le flux de données.
  • Sont des opérations clôturées.
  • Sont créés dans la bibliothèque d'objets locale ou dans la palette d'outils.

Chaque icône que vous placez dans le diagramme de flux de données devient une étape dans le flux de données, comme illustré dans la figure.

Vous pouvez utiliser des objets source et cible et des transformations comme étapes dans un flux de données. Créez des connexions entre les icônes pour déterminer l'ordre dans lequel Data Services exécute les étapes.

Étapes du flux de données

Chaque étape d'un flux de données, jusqu'à la définition de la cible, produit un résultat intermédiaire. Le résultat intermédiaire est appelé un ensemble de données.

Le résultat intermédiaire est un ensemble de lignes de l'opération précédente et le schéma dans lequel les lignes sont disposées. Cet ensemble de données peut être traité ultérieurement et dirigé vers un autre ensemble de données. Un jeu de données peut être, par exemple, les résultats d'une requête contenant une clause WHERE, pour filtrer certaines lignes, qui passent à l'étape suivante du flux de données qui nettoiera ces lignes.

Les flux de données sont des opérations clôturées, même lorsqu'il s'agit d'étapes dans un workflow. Tout ensemble de données créé dans un flux de données n'est pas disponible pour les autres étapes du workflow ou du job. Ainsi, la seule façon pour un flux de données de générer des données qui pourraient être traitées ultérieurement est de charger les données dans une table ou un fichier.

Objets source

Un objet source est généré à partir des métadonnées d'un objet dans une banque de données ou d'un format de fichier lorsque vous le glissez-déposez dans l'espace de travail du flux de données.

Objets source de la banque de données

Si vous souhaitez lire des données à partir d'une table ou d'un autre objet dans une banque de données, vous devez d'abord avoir importé les métadonnées pour cet objet. Elle sera ensuite disponible dans la bibliothèque d'objets et vous pourrez la glisser-déplacer dans votre flux d'opérations en tant que source.

Data Services analyse les métadonnées pour définir la structure (le schéma) des données d'entrée. Ce schéma est la seule chose nécessaire pour créer le flux de données. Bien sûr, lors de l'exécution, il utilisera également les informations de la banque de données pour se connecter à la source et extraire les données réelles.

Objets source du format de fichier

Pour les formats de fichiers, c'est le même principe, mais une fois que vous avez créé l'objet source dans le flux de données, certaines propriétés sont disponibles pour modification. Options telles que l'emplacement du fichier ou la gestion des erreurs.

Un format de fichier créé avec un exemple de fichier en local peut ensuite être défini pour accéder aux fichiers à partir du Job Server, qui est la seule option qui fonctionnerait puisque c'est le Job Server qui exécute le job.

Vous pouvez également créer plusieurs objets source à partir du même format de fichier, dans le même flux de données, mais en récupérant différents fichiers (avec la même structure) pour les joindre, par exemple.

Essayons-le

Définissons maintenant des objets source dans vos flux de données :

Si vous voulez le tester vous-même, procédez comme suit :

Transformation Query

La transformation Query, qui est l'une des transformations de la plateforme, est la transformation la plus couramment utilisée et est incluse dans la plupart des flux de données. Pour cette raison, il est inclus dans la palette d'outils avec d'autres objets standard.

La transformation Query permet de sélectionner des données à partir d'une source et de les filtrer ou de les reformater au fur et à mesure qu'elles sont déplacées vers la cible. La figure illustre un exemple de transformation Query appliquant un filtre entre la source et la cible.

Opérations de transformation Query

La transformation Query peut effectuer les opérations suivantes :
  • Filtrage des données extraites des sources
  • Jointure de données à partir de plusieurs sources
  • Mappage des colonnes des schémas d'entrée aux schémas de sortie
  • Exécution de transformations et de fonctions sur les données
  • Exécution de l'imbrication et de l'annulation de l'imbrication des données
  • Ajout de nouvelles colonnes, de schémas imbriqués et de résultats de fonctions au schéma de sortie
  • Affectation de clés primaires aux colonnes de sortie

Pour définir les opérations dont vous avez besoin, vous utilisez l'Editeur de transformation. Il s'agit d'une interface graphique permettant de définir les propriétés des transformations. L'espace de travail contient les zones suivantes :

  • Schéma d'entrée
  • Schéma de sortie
  • Options

Schémas d'entrée et de sortie

La figure suivante illustre les zones du schéma d'entrée et de sortie.

La zone Schéma d'entrée affiche le schéma du jeu de données d'entrée. La zone Schéma de sortie affiche le schéma du jeu de données de sortie, y compris les fonctions.

Vous devez définir une relation entre les schémas d'entrée et de sortie afin de déplacer les données de la source vers la cible. Pour ce faire, vous devez mapper chaque colonne d'entrée à la colonne de sortie correspondante.

Mapper les colonnes d'entrée aux colonnes de sortie

Effectuez l'une des actions suivantes dans l'éditeur de transformation pour mapper les colonnes d'entrée aux colonnes de sortie :

  • Faites glisser une seule colonne de la zone Schéma d'entrée vers la zone Schéma de sortie.
  • Faites glisser une seule colonne d'entrée sur la colonne de sortie correspondante, relâchez le curseur et sélectionnez Remapper la colonne dans le menu.
  • Sélectionnez plusieurs colonnes d'entrée à l'aide de Ctrl+clic ou Maj+clic sur votre clavier et faites-les glisser vers le schéma de sortie de requête pour le mappage automatique.
  • Sélectionnez la colonne de sortie et saisissez manuellement le mappage dans l'onglet Mappage de la zone d'options. Vous pouvez saisir le nom de la colonne dans la zone des options ou faire glisser la colonne depuis le volet Schéma d'entrée.
  • Sélectionnez la colonne de sortie, mettez en surbrillance et supprimez manuellement le mappage dans l'onglet Mappage de la zone d'options.

Zone d'options

La zone Options se trouve sous les zones Schéma d'entrée et Schéma de sortie dans l' Editeur de transformation Query.

Onglets de la zone d'options

OngletDescription
Mappage

Indiquez comment la colonne de sortie sélectionnée est dérivée.

Sélectionner

Sélectionnez uniquement des lignes d'éléments uniques, en ignorant les lignes en double.

De

Indiquez les schémas d'entrée utilisés dans le schéma de sortie actuel.

Jointure externe

Spécifiez une table interne et une table externe pour les jointures que vous souhaitez traiter comme des jointures externes.

Définissez des conditions pour déterminer les lignes à éditer.

Regrouper par

Indiquez une liste de colonnes pour combiner la sortie.

Trier par

Spécifiez les colonnes pour trier le jeu de données de sortie.

Avancé

Créez des sous-flux distincts pour traiter les clauses de requête consommatrices de ressources.

Rechercher

Recherchez un élément spécifique dans le schéma d'entrée ou dans le schéma de sortie.

Editeur de transformation Query pour les jointures

Vous définissez les jointures dans l'onglet De de l'Editeur de transformation. L'onglet De est affiché dans la figure suivante.

Remarque

Il existe une ancienne forme de jointure dans l'onglet WHERE, mais elle est trop restrictive. Il est recommandé d'utiliser la fonctionnalité de jointure dans l'onglet De.

Essayons-le

Commençons par filtrer les données par la transformation Query :

Si vous voulez le tester vous-même, procédez comme suit :

Je peux également vous montrer comment créer une transformation Query en joignant deux sources :

Objets cibles

L'objet cible de votre flux de données peut être une table physique ou un fichier, et vous les ajoutez à votre flux de données par glisser-déplacer à partir des métadonnées de la banque de données ou à partir d'un format de fichier, comme pour les objets source.

Lorsque votre objet cible est une table physique dans une base de données, l'éditeur de table cible s'ouvre dans l'espace de travail. L'éditeur contient des onglets pour les propriétés de type de base de données, les options de chargement de table et les techniques d'ajustement pour le chargement d'un job.

Remarque

La plupart des onglets de l'éditeur de table cible se concentrent sur la migration ou sur les techniques d'optimisation des performances. Nous nous concentrerons uniquement sur l'onglet Options.

Options de l'éditeur de table cible

OptionDescription
Comparaison de colonnes

Spécifiez comment les colonnes d'entrée sont mappées aux colonnes de sortie. Des erreurs de validation se produisent si les types de données des colonnes ne correspondent pas.

Supprimer les données d'une table avant le chargement

Utilisez cette option pour envoyer une instruction TRUNCATE pour effacer le contenu d'une table avant le chargement pendant les jobs batch. L'option par défaut est Non sélectionné.

Ignorer les colonnes comportant une valeur

Indiquez une valeur dans une colonne source que vous ne souhaitez pas mettre à jour dans la table cible.

Utiliser les clés d'entrée

Activez Data Services pour utiliser les clés primaires de la table source. Par défaut, il utilise la clé primaire de la table cible.

Mettre à jour les colonnes clés

Mettez à jour les valeurs des colonnes clés lors du chargement des données dans la cible.

Format de fichier comme cibles

Si vous utilisez un format de fichier comme cible, vous pourrez modifier l'emplacement du fichier, comme pour l'objet source.

Vous avez également la possibilité de supprimer le contenu du fichier avant de le charger avec de nouvelles données.

En fonction de ce que vous avez défini dans le format de fichier et que cela n'est pas modifiable dans l'objet cible, vous pouvez demander d'écrire ou non une ligne d'en-tête.

Modèles de tables

Vous pouvez utiliser des modèles de tables dans les premiers développements d'applications lorsque vous concevez et testez un projet.

Les modèles de tables ont les fonctionnalités suivantes :

  • Ils permettent des modifications de schéma sans accéder au système de gestion de base de données relationnelle (RDMS).
  • Elles n'existent pas dans la base de données sous-jacente tant que le flux de données n'a pas été exécuté correctement.
  • Une fois exécutées, elles deviennent des tables réelles dans la base de données sous-jacente.
  • Elles sont identifiées uniquement comme modèles de tables dans les métadonnées du référentiel Data Services.
  • L'éditeur de table cible a la possibilité de supprimer et de recréer une table pour les modèles de tables.
  • L'option Importer table convertit un modèle de table en une table normale.

Avec les modèles de tables, vous n'avez pas besoin de créer une table dans votre banque de données et d'importer les métadonnées dans Data Services. Data Services crée automatiquement la table dans la base de données avec le schéma défini par le flux de données lorsque vous exécutez le job.

Lorsque vous créez un modèle de table en tant que cible dans un flux de données, vous pouvez l'utiliser comme source dans d'autres flux de données.

Vous devez convertir les modèles de tables en tables normales afin de pouvoir utiliser la nouvelle table dans les expressions, les fonctions et les options de transformation. Lorsque vous convertissez le modèle de table, vous ne pouvez plus modifier le schéma.

Essayons-le

Ajoutons une table cible dans le premier job et voyons comment utiliser un modèle de table dans le second :

Si vous voulez le tester vous-même, procédez comme suit :

Exécution du job

Lorsque vous créez votre projet, vos jobs et les flux de données associés, vous pouvez exécuter le job dans Data Services pour déplacer les données de la source vers la cible.

Jobs immédiats et jobs planifiés

Vous pouvez exécuter des jobs de deux façons :

  • Jobs immédiats

    Data Services lance des jobs batch et en temps réel et les exécute immédiatement à partir de Designer. Designer et le Job Server désigné doivent être en cours d'exécution pour exécuter le job. Exécutez des jobs immédiats uniquement pendant le cycle de développement.

  • Jobs planifiés

    Les jobs d'arrière-plan sont planifiés. Utilisez la Console de gestion Data Services ou un planificateur tiers pour planifier le job. Le job server doit être en cours d'exécution pour exécuter un job planifié.

Remarque

Un job ne s'exécute pas s'il contient des erreurs de syntaxe.

Gérer les options d'exécution

Avant d'exécuter votre job, vous pouvez modifier certaines options :

  • En modifiant les propriétés du job, de sorte que chaque exécution ait les mêmes paramètres.
  • En modifiant les propriétés d'exécution, afin que les options soient valides uniquement pour cette exécution particulière.

Propriétés d'exécution partagées

OptionDescription
Imprimer tous les messages de suivi

Enregistrez tous les messages de traçage dans le journal.

Collecter les statistiques pour l'optimisation

Collectez des statistiques afin que l'optimiseur Data Services puisse choisir un type de cache en mémoire ou paginable optimal.

Collecter des statistiques pour le monitorage

Afficher les statistiques de cache dans le Moniteur de performance dans l'Administrateur.

Utiliser les statistiques collectées

Utilisez les statistiques de cache collectées lors d'une exécution précédente du job.

Propriétés d'exécution non disponibles en tant que propriétés de job

OptionDescription
Configuration du système

Indiquez la configuration système à utiliser lors de l'exécution du job. Une configuration système définit un ensemble de configurations de banque de données, qui définissent les connexions à la banque de données.

Job Server ou groupe de serveurs

Spécifiez le job server ou le groupe de serveurs pour exécuter le job.

Data Services peut placer les informations de demande ayant échoué dans un fichier journal. Data Services ne journalise pas les demandes ayant échoué par défaut car cela peut ralentir les performances. L'insertion d'informations de demande ayant échoué dans un fichier journal doit être activée dans l'Administrateur de la Console de gestion.

Rechercher les erreurs

Lors de l'exécution d'un job, Data Services produit 3 fichiers journaux, qui sont affichés à partir de l'onglet Moniteur de la zone de projet. Par défaut, les fichiers journaux sont également définis pour s'afficher automatiquement dans l'espace de travail lorsqu'un job est exécuté.

Sélectionnez les icônes Trace, Moniteur et Erreur pour afficher les fichiers journaux créés lors de l'exécution du job.

Si la troisième icône, représentant une croix, est affichée en couleur et non grisée, cela signifie que des erreurs ont été détectées.

Il est possible que le journal de suivi indique que le job s'est correctement terminé mais qu'il contient encore des erreurs si vous avez défini le flux de données pour capturer des erreurs spécifiques, telles que des erreurs de conversion de données lors de l'accès au fichier ou du chargement de fichier, par exemple.

Essayons-le

Pour finir, exécutons ces jobs :

Si vous voulez le tester vous-même, procédez comme suit :

Workflows

Comme nous l'avons vu précédemment, vous pouvez créer des workflows dans votre job et concevoir les flux de données dans ces workflows au lieu de les placer directement dans le job.

Voici quelques analogies pour vous aider à comprendre le rôle des workflows dans vos jobs :

Pour les personnes qui pensent comme des programmeurs, vous pouvez comparer les workflows aux sous-programmes. Le job est le programme principal et il peut appeler des workflows (comme des sous-programmes). Les workflows peuvent faire presque tout ce qu'un job peut faire, mais ils ne peuvent pas s'exécuter indépendamment (ils doivent être appelés par un job ou un autre workflow).

Pour les non-programmeurs, pensez aux workflows de la même manière que vous pensez aux parenthèses en arithmétique. Les parenthèses vous permettent de manipuler l'ordre des opérations dans les expressions mathématiques. De même, les workflows nous permettent de contrôler l'ordre d'exécution des opérations, comme les scripts et les flux de données, à l'intérieur d'un job.

Pour les jobs simples et les flux de données que nous commençons ici, nous n'utiliserons probablement pas de workflows. Mais à mesure que vos jobs deviennent plus complexes (avec plusieurs flux de données, scripts, etc.), les workflows peuvent rendre des parties du job modulaires et plus flexibles, sans incidence sur les performances. Et en prime, ils sont réutilisables à travers plusieurs emplois !

N'oubliez pas que les flux de données sont réutilisables. Mais si deux flux de données dépendants doivent aller ensemble, éventuellement avec un script entre eux, vous pouvez les réintégrer dans un workflow et réutiliser le workflow complet. (N'oubliez pas également que les scripts ne sont PAS des objets réutilisables en tant que tels). Cela permet de gagner beaucoup de temps de conception !