On peut vous aider ?
Cherchez des réponses ou parcourez les rubriques de notre documentation
Motif et transposition
Quelques rappels sur les compartiments
Le motif permet de démultiplier verticalement une plage de cellules contiguës.
La transposition permet d’associer des cellules à des croisements de dimensions.
Un même composant ne peut appartenir qu’à un seul motif et/ou à un seul groupe de multi-onglet.
Un même composant peut appartenir à plusieurs transpositions.
Les composants d’un motif ne peuvent appartenir qu’à un groupe de multi-onglet.
Les composants d’une transposition peuvent appartenir à plusieurs motifs différents et à plusieurs groupes de multi-onglets différents.
Concrètement, la transposition, à partir des données de la base client, transforme ces données en basculant certains champs de lignes en colonnes : il y a réduction du nombre de lignes initial et la clé des données avant transposition est souvent différente de la clé après transposition.
La clef après transposition correspond à l’ensemble des champs de la table initiale qui ne sont pas concernés par la transposition (les champs du noyau sont ajoutés à la table conformément aux règles d’assemblage des données).
Assemblage des données lors du lancement de campagne
Exemple simple
Dans cet exemple, la clé du motif est le site.
Pour chaque ligne de motif (donc chacune des données associées à un site), la transposition répartit en colonne les CA de l’année courante et de l’année précédente.
Le site est déjà l’élément démultipliant (i.e. la « clé ») du motif.
Il ne doit pas y être fait référence dans la transposition. C’est l’assemblage des données au moment du lancement de la campagne qui va réaliser l’association des informations liées au site seul (appartenant au motif seul) et des informations liées au site et à la « clé » de la transposition (ici l’axe date implicite pour distinguer l’année courante de l’année précédente).
Motif et transposition
Bien que le motif opère déjà une démultiplication de cellules verticalement, il peut être utile d’associer un motif à une transposition, notamment dans les cas suivants :
– anonymisation de dates : l’anonymisation de dates réalisée dans le cadre de la transposition permet d’obtenir simplement des dates relatives
– présentation de modalités d’une même dimension dans des colonnes du motif (l’anonymisation de dates entre dans ce cas).
– présentation de listes homogènes mais ne pouvant être fondues dans le même motif (à cause de présentations légèrement différentes, de sommations intermédiaires ou de comportements d’ajout/suppressions différents)
Dans ce dernier cas, l’unicité des en-têtes de composants au sein du questionnaire interdit l’utilisation du même en-tête pour deux motifs. La transposition permet alors de particulariser les en-têtes en leur adjoignant une catégorie correspondant à chaque motif (tous les en-têtes sont préfixés par la catégorie du motif par exemple ; Motif1__Produit, Motif1__Prix, Motif2__Produit, Motif2__Prix, …)
L’utilisation d’une transposition au sein d’un multi-onglet ne pose pas de problèmes particuliers, car la clé du multi-onglet est parfaitement identifiée (axe de multi-onglet) et toutes les tables associées à des compartiments contenus dans le multi-onglet doivent donc contenir cette clef.
La clé des données est déterminée par la table de référence pour le motif (cf Assemblage des données). De plus, la transposition effectue une transformation des données et la clef de la table associée à la transposition avant et après transposition est rarement la même : la clef des données est en quelque sorte « consommée » totalement ou partiellement par la transposition (suivant les axes-clefs de la table initiale qui ne sont pas transposés)
Les données transposées dans un motif peuvent ainsi produire trop ou trop peu de lignes
Démarche pour vérifier les données d’une transposition dans un motif
Déterminer le ou les les composants qui serviront de clef pour les données du motif dans le questionnaire.
Déclarer la clé dans le motif pour détecter les problèmes tout de suite lors du lancement et pas seulement à l’intégration.
Si ces composants-clefs n’existent pas, il est nécessaire d’en créer (si des clés naturelles ne peuvent être identifiées, un contrôle reprenant une clé non naturelle pourra être utilisée mais il faudra en mesurer toutes les conséquences, notamment si des lignes peuvent être ajoutées par le correspondant dans le motif)
Vérifier si tout ou partie de ces composants-clefs du motif appartiennent à une transposition.
- Si aucun composant-clef du motif n’appartient à une transposition, tous les champs correspondants (champs clés du motif) devront être présents dans la table associée au sous-compartiment du motif pour la transposition.
Il sera alors préférable de supprimer de la table/vue associée à la transposition tous les champs n’appartenant ni au motif ni à la transposition (ni au multi-onglet s’il en existe un).
Le non respect de ces consignes peut induire (en fonction des données) trop de lignes différentes dans les données approvisionnant le motif ou un approvisionnement en quinconce (ou aucun approvisionnement). Cf exemple ci-dessous.
La vérification des fichiers temporaires générés par GTServer permettra généralement de repérer les champs superflus.
- Si quelques composants-clefs du motif appartiennent à la transposition (mais pas tous les composants-clefs), alors il existe très certainement un problème de conception dans les compartiments ou les clefs ou les données : suivant les règles d’assemblage, les clefs du motif seront déterminés par la table associée au compartiment de plus haut niveau, soit la table associée au motif et elle seule, une clé même partielle ne pourra donc se trouver dans une table du sous-compartiment.
GTAnswerpourra ne pas accepter que l’on choisisse d’associer le motif à une vue/table lors de l’édition d’une action.
- Si tous les composants-clefs du motif appartiennent à la transposition, alors ces composants-clefs ne peuvent correspondre chacun qu’à une même combinatoire d’items d’axes de transposition (hors axes valeur). Il sera nécessaire de produire pour chacun de ces composants-clefs appartenant à la transposition un duplicat de l’axe valeur correspondant dans la table initiale (cette opération est simplement réalisée avec une vue dupliquant les champs-clefs absorbés par la transposition).
De cette façon, la clef avant et après transposition sera préservée.
Le non respect de ces préconisations induit généralement trop peu de lignes pour alimenter le motif (cf exemple ci-dessous). Une erreur 22100 sera générée à l’exécution.
Si aucune ligne n’est produite dans le motif (ou une seule ligne vierge, ou des lignes partiellement vides), s’assurer que les données en entrée de la transposition permettent effectivement de produire les en-têtes pour les composants transposés dans le motif (écriture exacte des items, sans espaces terminaux, …)
- Si deux transpositions existent dans le motif et sont personnalisées, les composants-clefs doivent appartenir en propre au motif et ils doivent être communs à la table associée au motif seul et à chacune des tables associées au motif et à une transposition dans le motif.
Exemples d’utilisations incorrectes de la transposition
Exemple 1 : trop de lignes dans le motif avec une transposition
Produit | Date | Année | Prix |
---|---|---|---|
Chou | 01/12/2010 | 2010 | 1 |
Chou | 01/12/2011 | 2011 | 2 |
Si la transposition est définie Date ;{Prix}
Produit | Annee | M0__Prix | Mm1__Prix |
---|---|---|---|
Chou | 2010 | 1 | |
Chou | 2011 | 2 |
Alors que l’on aurait souhaité obtenir une seule ligne avec chacun des deux prix dans deux champs.
Ici, l’année est une information liée à la date, mais l’année n’est pas transposée alors que la date l’est.
Cette situation se produit communément lorsqu’une clef non naturelle (Séquence ou compteur) est produite dans les données de la table pour la transposition
Exemple 2 : trop peu de lignes dans le motif avec une transposition
Motif | Produit | Date | Prix |
---|---|---|---|
M1 | Chou | 01/12/2010 | 1 |
M1 | Chou | 01/01/2011 | 2 |
Si la transposition est définie Motif ;{Produit ;Date ;Prix} Les données transposées se présentent ainsi
M1__Produit | M1__Date | M1__Prix |
---|---|---|
Chou | 01/01/2011 | 2 |
Ici, on aurait souhaité obtenir deux lignes (une pour chaque date).
GTServer génèrera une erreur dans ce cas en mentionnant le fait que l’on tente d’écrire une valeur différente (« 2 ») de la valeur déjà inscrite (« 1 ») pour la même date (Erreur 22100 lors du lancement de campagne et de l’exécution de la transposition).
Une solution est de produire les axes-clefs (qui sont transposés dans ce cas) en doublon dans la table initiale (de manière à ce que ces axes ne soient pas transposés et donc que la clef ne soit pas consommée par la transposition).