Start a new topic

Masque de rejets avec nom du schéma

Bonjour, 


Je souhaiterais utiliser un masque de rejets pouvant récupérer le schéma de ma table cible. Avez vous une doc sur le sujet ou une piste ? 

Quelque chose du genre : R_[SchemaTargetName]_[TargetName] est ce possible ? 


Merci à vous


Bonjour,


La documentation décrit les différents attributs qu'il est possible d'utiliser dans les masques des éléments temporaires (table de chargement, intégration ou rejet) : https://www.semarchy.com/doc/semarchy-xdi/xdi/2024.1/Design/data/metadata/database.html#tname-masks


Il est aussi possible d'utiliser les attributs suivants :

  • [shortMapId] ou [MapID] qui permettent notamment de positionner l'identifiant du mapping qui alimente la table cible,
  • [sessionTimestampName] qui permet de récupérer une identifiant propre à chaque session.

Ces autres attributs permettent d'avoir une unicité dans le nom des éléments temporaires. Cela peut s'avérer utile dans le cas où une table est alimentée par plusieurs mappings, voire plusieurs sessions, exécutés en parallèle.


Par rapport à votre question, il ne sera donc pas possible via ce genre d'attribut de nommer vos éléments temporaires avec le nom du schema cible. 

Néanmoins, vous pouvez utiliser une fonction xPath, dans le masque, afin de récupérer le nom du schema.

Pour cela, vous pouvez utiliser les syntaxes suivantes :

  • au niveau du schema (exemple pour les rejets) : R_[TargetName]_%x{./tech:physicalName()}x%
  • au niveau de la table (même exemple) : R_[TargetName]_%x{./ref:schema()/tech:physicalName()}x%
Vous constaterez la différence entre les deux syntaxes : à partir du schema c'est très simple, xDI va simplement récupérer le physicalName() du schema. Et à partir de la table, il est nécessaire de "remonter" au niveau du schema (via le ref:schema()) puis de récupérer le physicalName() de celui ci comme dans l'exemple précedent.

Attention à la longueur des noms des éléments tolérée par les SGBD. En cas de doute, vous pouvez modifier le paramètre "Object Truncation Size" à la valeur souhaitée pour limiter le nom d'objet qui sera généré.

Je vous laisse tester de votre côté, n'hésitez pas à faire un retour.
Bon courage et bonne journée.

Bonjour Romain,


Merci pour votre réponse rapide, j'ai pu avoir l'occasion de tester de mon côté aujourd'hui. Je fais fasse à quelques problèmes en passant directement par le xpath. 

Imaginons une table DWH.D_PRD, je souhaiterai que la table générée soit 

En passant par l'utilisation de R_%x{./tech:physicalName()}x%_[TargetName]  le résultat obtenu est "R_"DEVDWH"."DWH"_D_PRD"


Le point et les guillemets étant gênant pour la création de ma table j'ai pensé utilisé une variable %{VARIABLE}% ou ${VARIABLE}$ mais là sans succès.


Je suis preneur de pistes supplémentaires.


Bonne journée à vous,


Axel

Bonjour Axel,


Pourriez-vous partager une capture de votre metadata (l'écran de paramétrage du schema) s'il vous plaît ?

Bonjour Romain,


Dans le schéma ALIM j'ai fait quelques tests parmi lesquels j'ai ajouté du xpath dans le nom comme ci-dessous :

image


Une fois cela fait j'ai testé l'un de mes flux contenant des rejets :

image


Le résultat obtenu est le suivant pour la table de rejets de la table WRK_DWHV3_D_MTF_RET

create table "DEVDWH"."ALIM"."R_"DEVDWH"."ALIM"_WRK_DWHV3_D_MTF_RET"


Je suis preneur de quelconque solution, je vous remercie pour votre réactivité.


Axel




Bonjour Axel,


En fait, je demandais de partager l'écran de paramétrage de la metadata du schema (onglet Standard) afin de voir comment les attributs Name et Schema Name étaient alimentés.

(exemple sur une de mes metadata en PostgreSQL) :

image


Cela me permettra de proposer une solution qui correspond bien à votre attente.

Login to post a comment