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 :
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 :
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 :
Une fois cela fait j'ai testé l'un de mes flux contenant des rejets :
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) :
Cela me permettra de proposer une solution qui correspond bien à votre attente.
Bonjour Romain,
Désolé pour cette réponse tardive, après avoir profité du beau soleil de juillet voici la capture d'écran :
Je reste à votre disposition pour tout besoin complémentaire.
Axel
Bonjour Axel,
Je comprends donc bien le problème.
En effet, en allant récupérer ./tech:physicalName() dans votre metadata (au niveau d'un schema), xDI va substituer cette fonction en concaténant le nom du catalog avec le schema.
En plus de ça, les noms de ces objets contenant des caractères majuscules, xDI va forcer leur conservation en entourant avec des guillemets puisque l'instance PostgreSQL peut être sensible à la casse au niveau du nom des objets.
La solution que je propose est de ne récupérer que le nom du schema dans le nom d'objet sans le nom du catalog (en espérant que ça réponde bien à vos attentes).
Pour cela, il suffit de remplacer ./tech:physicalName() par ./tech:schemaName()
L'avantage, c'est que xDI n'ajoutera pas de guillemets. Dans votre exemple vous obtiendrez donc une table de rejet nommée "DEVDWH"."ALIM"."R_ALIM_WRK_DWHV3_D_MTF_RET"
Attention, si vous souhaitez appliquer des masques de nom d'objet au niveau des tables (donc à un niveau inférieur à celui de votre schéma), il faudra utiliser cette syntaxe ../tech:schemaName() (.. au lieu de . avant le /tech) pour spécifier à xDI d'aller chercher le nom de schema du niveau supérieur.
Je vous laisse tester, n'hésitez pas à revenir vers moi si besoin ou pour confirmer que c'est bien fonctionnel.
Bon courage.
Bonjour Romain,
Merci pour cette solution et vos explications, cela a parfaitement fonctionné !
Bonne journée à vous,
Axel
Axel Vanneste
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