Accéder au contenu principal Passer au contenu complémentaire

Merge

Le préfixe Merge peut être ajouté à n'importe quelle instruction LOAD ou SELECT du script pour spécifier que la table chargée doit être fusionnée dans une autre table. Cela spécifie également que cette instruction doit être exécutée lors d'un chargement partiel.

Le cas d'utilisation type est le chargement d'un journal des modifications et son utilisation pour appliquer inserts, updates et deletes à une table existante.

 

Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)

 

Lors d'un chargement normal (non partiel), la construction Merge LOAD fonctionne comme une instruction Load normale, mais avec la fonctionnalité supplémentaire de suppression des enregistrements obsolètes plus anciens et des enregistrements marqués comme devant être supprimés. Le premier champ de l'instruction load doit contenir des informations sur l'opération : Insert, Update ou Delete.

Pour chaque enregistrement chargé, l'identificateur de l'enregistrement est comparé aux enregistrements précédemment chargés et seul le dernier enregistrement (suivant le numéro de séquence) est conservé. Si le dernier enregistrement est marqué comme Delete, aucun n'est conservé.

Si le préfixe Concatenate est utilisé ou s'il existe déjà une table avec le même ensemble de champs, celle-ci sera la table à modifier. Sinon, le résultat de la construction Merge LOAD sera stocké dans une nouvelle table.

Si le préfixe Concatenate est utilisé, la table résultante peut contenir plus de champs que le journal des modifications utilisé comme entrée pour Merge.

Un chargement partiel fait la même chose qu'un chargement complet. La seule différence réside dans le fait que la construction Merge LOAD ne crée jamais de table. Il existe toujours une table correspondante provenant de la précédente exécution de script à modifier.

Si le journal des modifications chargé est un journal accumulé, à savoir, s'il contient des modifications qui ont déjà été chargées, le paramètre SequenceNoVar peut être utilisé dans une clause Where pour limiter la quantité de données d'entrée. La construction Merge LOAD peut alors être appliquée de sorte à charger uniquement les enregistrements pour lesquels le champ SequenceNoField est supérieur à SequenceNoVar. Une fois terminé Merge LOAD assigne une nouvelle valeur à SequenceNoVar avec la valeur maximale rencontrée dans le champ SequenceNoField.

 

Arguments
Argument Description
only Qualificateur facultatif indiquant que l'instruction doit être exécutée uniquement lors des chargements partiels. Elle doit être ignorée lors des chargements normaux (non partiels).
SequenceNoField Nom du champ contenant un horodatage ou un numéro de séquence définissant l'ordre des opérations.
SequenceNoVar

Nom de la variable qui est assignée à la valeur maximale de SequenceNoField de la table en cours de fusion.

ListOfKeys Liste séparée par des virgules de noms de champ spécifiant la clé primaire.
operation Le premier champ de l'instruction load doit contenir l'opération : Insert, Update ou Delete. ‘i’, ‘u’ et ‘d’ sont également acceptés.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !

Rejoignez le Programme de modernisation analytique

Remove banner from view

Modernisez votre système sans compromettre vos précieuses applications QlikView grâce au Programme de modernisation analytique. Cliquez ici pour plus d'informations ou contactez : ampquestions@qlik.com