Gå till huvudinnehåll Gå till ytterligare innehåll

Merge

Merge-prefixet kan adderas till valfri LOAD- eller SELECT-sats i skriptet för att specificera att den laddade tabellen ska slås samman med en annan tabell. Det specificerar även att satsen ska köras i en delvis laddning.

Typisk användning är när du laddar en ändringslogg och vill använda den för att tillämpa inserts, updates och deletes på en befintlig tabell.

Syntax:  

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

 

Under en vanlig (icke-delvis) laddning fungerar konstruktionen Merge LOAD som en vanlig LOAD-sats, men den tar även bort äldre, ej använda poster och poster som markerats för borttagning. Det första fältet i LOAD-satsen måste innehålla information om operationen: Insert, Update eller Delete.

För varje post som laddas jämförs postens identifierare med redan laddade poster, och bara den senaste posten (enligt ordningsnumret) kommer att sparas. Om den senaste posten är markerad med Delete sparas inte någon.

Om prefixet Concatenate används, eller om det redan finns en tabell med samma fältuppsättning, blir detta tabellen som ändras. Annars sparas resultatet av konstruktionen Merge LOAD i en ny tabell.

Om prefixet Concatenate används kan den resulterande tabellen ha fler fält än den ändringslogg som används som indata för Merge.

Vid en delvis laddning sker samma sak som vid en fullständig laddning. Den enda skillnaden är att konstruktionen Merge LOAD aldrig skapar en ny tabell. Det finns alltid en relevant tabell från föregående skriptexekvering att ändra.

Om den laddade ändringsloggen är en ackumulerad logg, dvs. innehåller ändringar som redan har laddats, kan du begränsa mängden indata genom att använda parametern SequenceNoVar i en Where-sats. Med den kan Merge LOAD instrueras att bara ladda poster där fältet SequenceNoField är större än SequenceNoVar. Efter körningen tilldelar Merge LOAD ett nytt värde till SequenceNoVar med det största värdet för fältet SequenceNoField.

Argument:  

Argument
Argument Beskrivning
only En valfri kvalificerare som innebär att satsen bara ska exekveras vid delvisa laddningar. Den ska ignoreras vid vanliga (icke-delvisa) laddningar.
SequenceNoField Namnet på det fält som innehåller en tidsmarkör eller ett ordningsnummer som anger operationernas ordning.
SequenceNoVar

Namnet på den variabel som tilldelas det högsta värdet för SequenceNoField i tabellen som slås samman.

ListOfKeys En kommaavgränsad lista med fältnamn som specificerar den primära nyckeln.
operation Det första fältet i LOAD-satsen måste innehålla operationen: Insert, Update eller Delete. ’i’, ’u’ och ’d’ accepteras också.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!

Gå med i programmet Analytics Modernization

Remove banner from view

Modernisera utan att kompromissa med dina värdefulla QlikView-appar med programmet för analysmodernisering. Klicka här för mer information eller ta kontakt: ampquestions@qlik.com