Vai al contenuto principale

Unisci

Il prefisso Merge può essere aggiunto a qualsiasi istruzione LOAD o SELECT nello script per specificare che dovrebbe aggiungere record a un'altra tabella. Specifica anche che questa istruzione dovrebbe essere eseguita in un ricaricamento parziale.

Il caso tipico di utilizzo riguarda il caricamento di un registro dei cambiamenti che si desidera utilizzare per applicare inserts, updates e deletes a una tabella esistente.

Eseguire un ricaricamento parziale usando il pulsante Ricarica. Per ulteriori informazioni, vedere Pulsante. È anche possibile utilizzare Qlik Engine JSON API.

Per eseguire un ricaricamento parziale su una pianificazione, fare clic su More su un'app, quindi scegliere Pianifica ricaricamento. Nella finestra di dialogo che si apre, attivare Ricaricamento parziale.

Syntax:  

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

 

Durante un caricamento normale (non parziale), la costruzione LOAD Unisci funzionerà come una normale istruzioneLoad ma con la funzionalità aggiuntiva di rimuovere i record vecchi e obsoleti e i record contrassegnati per l'eliminazione. Il primo campo dell'istruzione load deve presentare informazioni sull'operazione: Insert, Update o Delete.

Per ciascun record caricato, l'identificatore record verrà confrontato con i record precedentemente caricati e verrà conservato solo il record più recente (in base al numero di sequenza). Se il record più recente è contrassegnato con Delete, non ne verrà conservato nessuno.

Se viene utilizzato il prefisso Concatenate o se esiste già una tabella con lo stesso set di campi, questa sarà la tabella pertinente da modificare. In caso contrario, il risultato della costruzione LOAD Unisci verrà archiviato in una nuova tabella.

Se viene utilizzato il prefisso Concatenate, la tabella risultante può avere più campi rispetto al registro di modifica utilizzato come input per Unisci.

Un caricamento parziale consentirà di ottenere lo stesso risultato di un caricamento completo. L'unica differenza è che la costruzione LOAD Unisci non creerà mai una nuova tabella. Esiste sempre una tabella pertinente dall'esecuzione script precedente da modificare.

Se il registro delle modifiche caricato è di tipo accumulato, ovvero contiene modifiche già caricate, il parametro SequenceNoVar può essere utilizzato in una clausola Where per limitare la quantità di dati di input. La costruzione LOAD Unisci può quindi essere realizzata per caricare soltanto i record in cui il campo SequenceNoField è superiore a SequenceNoVar. Al completamento, la costruzione LOAD Unisci assegnerà un nuovo valore a SequenceNoVar con il valore massimo visto nel campo SequenceNoField.

Arguments:  

Argomenti
Argomento Descrizione
only Un qualificatore opzionale che denota che l'istruzione dovrebbe essere eseguita solo durante i caricamenti parziali. Deve essere ignorata durante i caricamenti normali (non parziali).
SequenceNoField Il nome del campo contenente una data e ora o un numero di sequenza che definisce l'ordine delle operazioni.
SequenceNoVar

Il nome della variabile che viene assegnata al valore massimo per SequenceNoField della tabella unita.

ListOfKeys Un elenco separato da virgole di nomi di campo che specifica la chiave primaria.
operation Il primo campo dell'istruzione load deve contenere l'operazione: Vengono accettati anche Insert, Update o Delete. ‘i’, ‘u’ e ‘d’.

Example: Script di caricamento dei dati

In questo esempio, una tabella inline denominata Persons viene caricata con quattro righe. Unisce quindi modifica la tabella nel modo seguente:

  • Aggiunge la riga, Mary, 4
  • Elimina la riga, Steven, 3
  • Assegna il numero 5 a Jake

La variabile LastChangeDate verrà impostata al valore massimo nella colonna ChangeDate dopo l'esecuzione di Unisci.

Persons: load * inline [ Name, Number Jake, 3 Jill, 2 Steven, 3 ]; Merge (ChangeDate, LastChangeDate) on Name Concatenate(Persons) LOAD * inline [ Operation, ChangeDate, Name, Number Insert, 1/1/2021, Mary, 4 Delete, 1/1/2021, Steven, Update, 2/1/2021, Jake, 5 ];

Prima del caricamento Unisci, la tabella risultante appare come segue:

Resulting table
Name Number
Jake 3
Jill 2
Steven 3

A seguito del caricamento Unisci, la tabella appare come segue:

Resulting table
ChangeDate Name Number
2/1/2021 Jake 5
- Jill 2
1/1/2021 Mary 4

Quando i dati vengono caricati, la finestra di dialogo Avanzamento caricamento dati mostra le operazioni che vengono eseguite:

Finestra di dialogo Avanzamento caricamento dati

Data load progress dialog box.

Example: Script di caricamento dati - Caricamento parziale

Nell'esempio seguente, l'argomento Solo specifica che il comando Unisci verrà eseguito solo durante un caricamento parziale. Gli aggiornamenti verranno filtrati in base al valore LastChangeDate precedentemente acquisito. Al termine dell'operazione Unisci, alla variabile LastChangeDate verrà assegnato il valore massimo della colonna ChangeDate elaborato durante l'unione

Merge Only (ChangeDate, LastChangeDate) on Name Concatenate(Persons) LOAD Operation, ChangeDate, Name, Number from [lib://ChangeFilesFolder/BulkChangesInPersonsTable.csv] (txt) where ChangeDate >= $(LastChangeDate);