Dans le classeur Tableau Prep « duplicates from union.tfl », « Commandes de janvier (corrections) » est le premier rapport sur les commandes de janvier. La table « Commandes de janvier (corrections) » est un rapport généré ultérieurement avec quelques nouvelles commandes, mais également des corrections de commandes déjà présentes dans « Commandes de janvier ».Lorsque les deux tables sont réunies, toutes les lignes des deux tables sont conservées, ce qui crée des mesures en double.
Le premier flux dans le classeur « duplicates from union.tfl » démontre ce problème.
Option 1 : Conserver toutes les données provenant d'une table et les données non correspondantes de l'autre table
Pour cet exemple, nous voulons toutes les données de « Commandes de janvier (corrections) » et uniquement les commandes « Commandes de janvier » qui n'existent pas dans « Commandes de janvier (corrections) ».
- Créez une nouvelle jointure entre « Commandes de janvier » et « Commandes de janvier (corrections) »
- Dans l'étape Jointure 1, procédez comme suit :
- Pour les clauses de jointure appliquées, créez une clause de jointure sur [ID de commande] = [ID de commande]
- Dans Type de jointure, cliquez sur les sections du diagramme Venn de manière à ce que seul le segment le plus à gauche soit rempli.Tableau Prep appellera ceci une jointure « gauche sans correspondance uniquement ».
- Faite glisser « Commandes de janvier (corrections) » vers Jointure 1 et déposez la table sur Nouvelle union
Option 2 : Conserver les enregistrements affichant la date la plus récente
Par exemple, Mme Mouse a modifié sa commande pour ajouter un autre manteau, mais cette modification a été enregistrée par accident dans les « Commandes de janvier ». L'ordre correct est celui affichant la date la plus récente.
- Créez une jointure EXTERNE ENTIÈRE entre « Commandes de janvier » et « Commandes de janvier (corrections) » sur [ID de commande] = [ID de commande]
- Ajoutez une étape à partir de la jointure 2
- Fusionnez tous les champs correspondants, à l'exception des champs de date et des valeurs de mesure :
- Cliquez sur le champ dont les valeurs doivent remplacer l'autre dans le volet Profil
- Faites un Ctrl+clic sur le champ correspondant
- Faites un clic droit sur l'un des champs et sélectionnez Fusionner les champs
- Lorsque les champs sont fusionnés, Tableau Prep ne conserve pas les deux valeurs (si ce sont deux valeurs différentes), mais conserve plutôt les valeurs du champ sélectionné, le cas échéant.
- Par exemple, le nom Mme Horse a été enregistré par accident sous Mme House dans la table « Commandes de janvier » et son nom correct apparaissent dans « Commandes de janvier (corrections) ». Lors de la fusion de [Customer] et [Customer-1], je souhaite sélectionner [Customer-1] en premier.
- Vous pouvez vérifier quel champ remplace l'autre à partir du nom du champ fusionné. Le nom peut être mis en forme en tant que [nom du premier champ & nom du second champ]. Le nom du champ répertorié en premier sera le champ qui remplacera l'autre.
- Si les champs ont été fusionnés dans le mauvais ordre, vous pouvez annuler la fusion en faisant un clic droit sur l'icône de fusion au-dessus du nom du champ fusionné dans le volet Profil et en sélectionnant Supprimer.
- Cliquez sur le bouton Créer un champ calculé…
- Dans la boîte de dialogue Champ calculé qui s'ouvre, procédez comme suit, puis cliquez sur OK :
- Nommez le champ calculé. Dans cet exemple, le champ calculé est appelé « Date la plus récente »
- Dans le champ de formule, créez un calcul du type suivant :
IF [Date] > [Date-1]
THEN [Date]
ELSE IFNULL( [Date-1], [Date] )
END
- Le calcul ci-dessus renverra [Date] s'il est « plus grand », ou dans le cas de dates plus récentes, que [Date-1]. Sinon, le calcul renverra [Date-1].
- Si l'un des champs est une valeur NULL, la première condition sera toujours « false ».La fonction IFNULL() remplace [Date-1] par [Date] quand [Date-1] est NULL. Cela signifie que le calcul renverra toujours une valeur non NULL s'il en existe une.
- Supprimez [Date] et [Date-1]
- Créez un champ calculé appelé par exemple « Nouveau coût » comportant un calcul du type suivant :
IF [Date] > [Date-1]
THEN [Cost]
ELSE IFNULL( [Cost-1], [Cost] )
END
- Supprimez [Coût] et [Coût-1]
- Répétez les étapes 6-7 pour chaque mesure
Option 3 : Chaque doublon devrait être traité différemment
- Créez une jointure EXTERNE ENTIÈRE entre « Commandes de janvier » et « Commandes de janvier (corrections) » sur [ID de commande] = [ID de commande]
- Ajoutez une étape à partir de la jointure 3
- Fusionnez tous les champs qui ont a) les mêmes valeurs dans les deux tables, ou b) que les valeurs d'une autre table doivent toujours remplacer
- Cliquez sur le bouton Créer un champ calculé…
- Dans la boîte de dialogue Champ calculé qui s'ouvre, procédez comme suit, puis cliquez sur OK :
- Nommez le champ calculé. Dans cet exemple, le champ calculé est appelé « Nouveau coût »
- Dans le champ de formule, créez un calcul du type suivant :
CASE [Order ID-1 & Order ID]
WHEN 5 THEN [Date]
WHEN 9 THEN [Date]
ELSE IFNULL([Date-1],[Date])
END
- Le calcul ci-dessus sera lu pour toute valeur de [Order ID-1 & Order ID] et renverra le champ de date spécifiée. Pour simplifier les choses, j'ai uniquement spécifié quels ID renverront [Date] et indiqué que tout le reste renverra [Date-1] ou [Date] si [Date-1] est NULL, en raison de l'instruction ELSE.
- La valeur [Order ID-1 & Order ID] est utilisée dans l'instruction CASE parce que ce champ aura une valeur unique pour chaque ligne de données.
- Cela signifie également que les nouveaux ID ajoutés renverront [Date-1] si ce flux est à nouveau exécuté à l'avenir.
- Supprimez [Date] et [Date-1]
- Répétez les étapes 4-6 pour tous les champs où les doublons doivent être traités sur une base individuelle