Ga naar hoofdinhoud Ga naar aanvullende inhoud

Merge

Het voorvoegsel Merge kan aan elke LOAD- of SELECT-opdracht in het script worden toegevoegd om op te geven dat de geladen tabel met een andere tabel moet worden samengevoegd. Dit geeft ook aan dat deze opdracht met behulp van gedeeltelijk laden moet worden uitgevoerd.

De typische gebruikscase is als u een wijzigingslog laadt en deze wilt gebruiken om inserts, updates en deletes toe te passen voor een bestaande tabel.

Syntaxis:  

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

 

Tijdens een normale (niet-gedeeltelijke) lading werkt de constructie Merge LOAD als een normale Load-instructie, maar met de aanvullende functionaliteit dat verouderde records en records die zijn geselecteerd voor verwijdering, worden verwijderd. Het eerste veld van de load-instructie moet informatie over de bewerking bevatten: Insert, Update of Delete.

Voor elk record wordt de record-ID vergeleken met eerder geladen records en alleen het laatste record (op basis van het volgnummer) wordt behouden. Als het laatste record is gemarkeerd met Delete, wordt geen enkele record behouden.

Als de prefix Concatenate wordt gebruikt, of als er al een tabel met dezelfde verzameling velden aanwezig is, wordt dit de relevante tabel die kan worden gewijzigd. Anders wordt het resultaat van de constructie Merge LOAD opgeslagen in een nieuwe tabel.

Als de prefix Concatenate wordt gebruikt, heeft de resulterende tabel mogelijk meer velden dan de wijzigingslog die is gebruikt voor Merge.

Bij een gedeeltelijke lading gebeurt hetzelfde als bij een volledige lading. Het enige verschil is dat bij de constructie Merge LOAD nooit een nieuwe tabel wordt gemaakt. Er bestaat altijd een relevante tabel van de vorige uitvoering van het script die kan worden gewijzigd.

Als het geladen wijzigingslogboek een verzameld logboek is en dus wijzigingen bevat die al zijn geladen, kan de parameter SequenceNoVar worden gebruikt in een Where-clausule om het aantal ingevoerde gegevens te beperken. De constructie Merge LOAD kan vervolgens alleen worden gemaakt voor het laden van records waarbij het veld SequenceNoField groter is dan SequenceNoVar. Na voltooiing zal de constructie Merge LOAD een nieuwe waarde toewijzen aan de SequenceNoVar met de maximumwaarde die aanwezig is in het veld SequenceNoField.

Argumenten:  

Argumenten
Argument Beschrijving
only Een optionele kwalificatie die aangeeft dat de opdracht alleen bij gedeeltelijke ladingen moet worden uitgevoerd. Deze moet worden genegeerd tijdens normale (niet-gedeeltelijke) ladingen.
SequenceNoField De naam van het veld dat een tijdsstempel of een volgnummer bevat dat de volgorde van de bewerkingen definieert.
SequenceNoVar

De naam van de variabele die de maximumwaarde krijg toegewezen voor SequenceNoField van de tabel die wordt samengevoegd.

ListOfKeys Een door komma's gescheiden lijst van veldnamen die de primaire sleutel aangeven.
operation Het eerste veld van de load-instructie moet de bewerking bevatten: Insert, Update of Delete. ‘i’, ‘u’ en ‘d’ worden ook geaccepteerd.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!

Neem deel aan het Analytics Modernization Program

Remove banner from view

Moderniseer zonder uw waardevolle QlikView-apps op het spel te zetten met het Analytics Modernization Program. Klik hier voor meer informatie of om contact op te nemen: ampquestions@qlik.com