Fermer

juillet 23, 2018

Oracle BI Data Sync: comment ajouter un nouveau fait


Suite à mon article de blog sur comment ajouter une nouvelle dimension à une tâche de synchronisation de données ce message explique comment ajouter un fait et effectuer une recherche sur les dimensions tout en chargeant la table de faits cible dans un entrepôt de données utilisant Data Sync. Pour faire référence à l'article de blog sur l'ajout d'une dimension, suivez ce lien . Les dernières versions de Data Sync incluaient quelques fonctionnalités importantes telles que l'exécution de recherches pendant un travail ETL. J'ai donc l'intention de couvrir ces bonnes pratiques lors de l'ajout de nouvelles tâches de dimension et de faits. Ces instructions sont basées sur Oracle BI Data Sync version 2.3.2 et peuvent ne pas s'appliquer aux versions précédentes de Data Sync.

  1. Dans cet exemple, je chargerai une nouvelle table de faits appelée W_OTLIS_TICKETING_F à charger à partir de la table source OTLIS_TICKETING. La nouvelle table de faits prendra en charge les jointures à 2 dimensions existantes: W_OTLIS_STATE_D et W_OTLIS_METRO_STATION_D.
  2. Sous l'onglet Projet, sélectionnez Données relationnelles, puis Données à partir de SQL. (D'autres options fonctionnent, mais dans cet exemple j'utiliserai une requête SQL pour la source de données car cela permet un maximum de flexibilité pour personnaliser la requête source si nécessaire.)
  3. Dans la nouvelle fenêtre, entrez le nom de la nouvelle tâche (sans espaces), entrez le nom de la nouvelle table cible pour le fait (suivez votre convention de nommage), choisissez le format de sortie Relationnel, sélectionnez la source Connexion, et entrez une instruction SQL pour sélectionner les colonnes nécessaires dans la table source. Dans mon exemple, je sélectionne toutes les colonnes.
  4. Attendez un message comme celui-ci pour confirmer que l'opération a réussi. Puis cliquez sur OK
  5. Sous Projet, vous devriez maintenant voir un nouvel enregistrement ajouté pour la nouvelle tâche. Cliquez sur la tâche nouvellement créée et cliquez sur la stratégie de chargement ci-dessous pour la modifier
  6. Par défaut, la tâche effectue un chargement complet de la table car la stratégie de chargement est définie à l'option "Remplacer les données dans la table". Idéalement, si votre table source prend en charge le suivi incrémentiel à l'aide d'une date de dernière mise à jour, vous devez basculer la stratégie de charge pour prendre en charge les charges incrémentielles et ainsi obtenir des temps d'exécution des travaux plus rapides. Pour ce faire, sélectionnez l'option "Mettre à jour la table". Gardez les deux cases à cocher ci-dessous qui ont coché. Cliquez sur Ok.
  7. Vous devriez maintenant avoir une autre fenêtre avec 2 onglets comme suit. Dans l'onglet Clés utilisateur, sélectionnez la ou les colonnes qui constituent l'identificateur unique de la table source. Dans mon exemple, il est composé de 3 colonnes: TICK_ID, TRANSACTION_DATE et STATION_ID
    Ce sont les colonnes qui seront utilisées pour mettre à jour la table de faits cible de manière incrémentielle afin d'éviter de dupliquer le même enregistrement une fois qu'il est mis à jour dans le la source. Dans l'onglet Filtres, sélectionnez la colonne de date qui suit la date et l'heure de toutes les mises à jour / insertions effectuées sur la table source. Lors de l'exécution incrémentielle, Datasync extraira uniquement les enregistrements de la table source insérés / mis à jour après la dernière exécution du travail DataSync.
  8. Vous devriez voir un message comme suit. Cliquez sur OK pour créer l'index unique sur la clé utilisateur. Le but de ceci est d'améliorer la performance des charges incrémentales en créant un index sur les colonnes de critères correspondants.
  9. Sous l'onglet Projets et Tables cibles, sélectionnez la table de faits nouvellement créée, puis sélectionnez l'onglet Colonnes de table dans la moitié inférieure de l'écran. Nous allons maintenant ajouter 2 colonnes standard à la table de faits. Cliquez sur le bouton Nouveau dans la moitié inférieure de l'écran et ajoutez les 2 colonnes suivantes:
    KEY – Type de données: NUMBER – Longueur: 38 – Décochez Nullable
    W_LAST_UPDATE_DT – Type de données: Date – Décochez Nullable
    Sauvegardez les changements.
  10. De la même manière, ajoutez 2 autres colonnes pour servir de clés étrangères aux 2 dimensions que nous voulons prendre en charge avec le nouveau fait. J'ajoute ici 2 colonnes, une pour chaque dimension:
    STATE_KEY – Type de données: Nombre – Longueur: 38 – Désélectionner Nullable
    STATION_KEY – Type de données: Nombre – Longueur: 38 – Désélectionner Nullable
    Enregistrer les modifications.
  11. Cliquez sur l'onglet Données relationnelles sous Projets. Sélectionnez la tâche nouvellement créée pour le fait. Dans la partie inférieure de l'écran, cliquez sur le bouton "Colonnes non mappées". Cela me montre une fenêtre avec les 4 colonnes que je viens de créer. Je les déplace vers le côté droit sous Colonne sélectionnée et cliquez sur OK
  12. Modifiez l'expression cible pour la colonne KEY et entrez la valeur par défaut: %% SURROGATE_KEY. Cela générera une clé unique numérique principale pour la nouvelle table de faits. Cliquez sur OK
  13. Modifiez l'expression cible pour la colonne W_LAST_UPDATE_DT et entrez la valeur par défaut: %% UPSERT_TIMESTAMP. Cela remplira automatiquement la date et l'heure auxquelles les lignes seront remplies dans la table de faits cible. Cliquez sur OK
  14. Cliquez sur Enregistrer
  15. Cliquez sur le bouton Joins, dans la moitié inférieure de l'écran. Cela nous permettra de définir des recherches du fait aux dimensions pour remplir les clés étrangères correspondantes dans le fait.
  16. Cliquez sur Noms de table en regard du nom de recherche que vous avez entré et sélectionnez les tables impliquées dans la recherche, séparées par des virgules. Dans mon exemple, je fais une recherche du fait W_OTLIS_TICKETING_F à la dimension W_OTLIS_STATE_D. J'entre alors: W_OTLIS_TICKETING_F, W_OTLIS_STATE_D
  17. Pour le champ Join, entrez une expression de recherche comme suit:
    LEFT OUTER JOIN "W_OTLIS_STATE_D" ON "%% W_OTLIS_TICKETING_F". "TRANSACTION_STATE_ID" = "W_OTLIS_STATE_D". "TRANSACTION_STATE_ID"
    Notez que %% avant le nom de la table des faits indique qu'il s'agit d'une jointure entre la table temporaire de faits temporaire et la table de dimension. La table de faits cible n'a pas encore été chargée, d'où la jointure de recherche se produit avec la table de transfert. La table de transfert "%% W_OTLIS_TICKETING_F" est automatiquement supprimée par Data Sync une fois le travail terminé. Ne cochez pas la case Rendements multiples. Cela suppose que la colonne utilisée pour rechercher la dimension (dans mon cas au-dessus de TRANSACTION_STATE_ID) est unique dans la dimension et que, par conséquent, la recherche ne doit pas générer plusieurs correspondances. Cela devrait être la majorité des cas avec des recherches. Si vous recherchez une colonne de dimension non unique, pour une raison valable, cochez cette case. Dans ce cas, vous devrez utiliser une règle d'agrégation une fois que vous aurez mappé une nouvelle colonne pour utiliser la jointure afin de sélectionner l'une des valeurs correspondantes (par exemple, la valeur maximale). [19659003] De même, j'entre une autre jointure pour la recherche sur la deuxième dimension.
    GAUCHE OUTER JOIN "W_OTLIS_METRO_STATION_D" ON "%% W_OTLIS_TICKETING_F". "STATION_ID" = "W_OTLIS_METRO_STATION_D". "STATION_ID"
  18. Maintenant, je veux mapper la clé étrangère STATE_KEY pour utiliser la recherche que j'ai créée pour la jointure de dimension d'état. Pour ce faire, modifiez l'expression cible pour la colonne STATE_KEY. Sélectionnez STATE_LOOKUP dans la liste déroulante Jointures. Entrez l'expression suivante et cliquez sur Ok.
    nvl ("W_OTLIS_STATE_D". "KEY", 0)
    La fonction nvl s'assurera de renseigner la valeur de la clé non spécifiée de la dimension 0, au cas où la recherche n'aboutit pas dans un match. Cela garantit que tous les enregistrements de faits qui ne correspondent pas à la dimension ne sont pas perdus, mais sont reportés sur la cible en tant que non spécifiés. Ces enregistrements peuvent ensuite être facilement identifiés sur les rapports et les problèmes de données connexes peuvent être facilement identifiés.
  19. De même, je souhaite que la clé étrangère STATION_KEY utilise la recherche que j'ai créée pour la jointure de dimension Station. Pour ce faire, modifiez l'expression cible pour la colonne STATION_KEY. Sélectionnez STATION_LOOKUP dans la liste déroulante Jointures. Entrez l'expression suivante et cliquez sur Ok.
    nvl ("W_OTLIS_METRO_STATION_D". "KEY", 0)
  20. Sous l'onglet Projets, Tableaux cibles, sélectionnez le nouveau table des faits, puis sélectionnez Indices dans la moitié inférieure de l'écran. Nous allons ajouter un index de clé primaire. Cliquez donc sur Nouveau et ajoutez un index unique en cochant la case Est unique. Cliquez sur Enregistrer . Puis cliquez sur le bouton Colonnes pour ajouter le nom de la colonne: CLE. C'est le même nom de colonne ajouté dans les étapes précédentes que la clé de substitution du fait. Sauvegardez les modifications.
  21. C'est pour ajouter la tâche de fait. Nous sommes prêts maintenant à faire le travail. Cela devrait créer la nouvelle table de faits avec les index et remplir la table avec les données sources, y compris les recherches sur les 2 dimensions. Vérifiez que le nombre d'enregistrements dans la table de faits cible correspond au nombre d'enregistrements de la table source et que les colonnes de recherche de dimension sont remplies comme prévu.
  22. Une fois le premier travail terminé et validé, ajoutez des données incrémentielles de test dans la table source, réexécutez le travail et vous devriez voir les nouvelles modifications mises à jour dans la table de faits cible.




Source link