Come implementare il caricamento incrementale in QlikView?

Contenuti

Nel mio articolo precedente, abbiamo discusso “hCome usare QVD per rendere la tua applicazione QlikView più efficiente?". In questo articolo, faremo un passo avanti per rendere la nostra applicazione più efficiente quando si tratta di grandi dati transazionali. Come ho detto nel mio precedente articolo, Stavo lavorando su un'applicazione QlikView, dove dovevo mostrare le vendite su più canali per frequenze predefinite (ad esempio, Quotidiano, Mensile, Annualmente).

Inizialmente, Stavo ricaricando l'intera tabella delle transazioni su base giornaliera, anche se avevo già i dati fino a ieri con me. Questo non solo ha richiesto molto tempo, ha anche aumentato il carico sul server del database e sulla rete. È qui che il caricamento incrementale con QVD ha fatto una grande differenza caricando solo i dati nuovi o aggiornati dal database in una tabella.

Carichi incrementali:

Il carico incrementale è definito come l'attività di caricare solo record nuovi o aggiornati dal database in un QVD established stabilito. I carichi incrementali sono utili perché funzionano in modo molto efficiente rispetto ai carichi completi, in particolare per grandi set di dati.

incremental_load_qlikview_1-300x214-9426153

Il caricamento incrementale può essere implementato in diversi modi, i metodi comuni sono i seguenti:

  1. Inserisci solo (non convalidare per i record duplicati)
  2. Inserisci e aggiorna
  3. Inserire, aggiorna ed elimina

Comprendiamo ognuno di questi 3 scenari con un esempio

1. Inserisci solo:

Diciamo che abbiamo dati di vendita grezzi (in excel) e ogni volta che viene registrata una nuova vendita, viene aggiornato con i dettagli di base sulla vendita entro la data di modifica. Dal momento che stiamo lavorando su QVD, Abbiamo già creato QVD fino a ieri (25 agosto 2014 in questo caso). Ora, Voglio caricare solo i record incrementali (evidenziato in giallo sotto).

incremental_load_qlikview_2-3363379

Per eseguire questo esercizio, prima creare un QVD per i dati fino a 25 agosto 2014. Per identificare nuovi record incrementali, dobbiamo sapere la data fino alla quale, QVD è già aggiornato. Questo può essere identificato controllando il massimo di Modified_date nel file QVD disponibile.

Come menzionato prima, ho pensato che “Saldi. qvd”È aggiornato con dati fino a 25 agosto 2014. Per identificare la data dell'ultima modifica del “Saldi. qvd", Il seguente codice può aiutare:

incremental_load_qlikview_3-2733357

Qui, Ho caricato in memoria l'ultimo QVD aggiornato e poi ho individuato la data dell'ultima modifica memorizzando un massimo di “Data di modifica". Prossimo, memorizziamo questa data in una variabile “Last_Updated_Date“E lascia cadere il tavolo”Saldi". Nel codice sopra, ho usato Aspetto() funzione per memorizzare la data massima di modifica. Ecco la tua sintassi:

Sbirciare (nome del campo, numero di riga, nome della tabella)

Questa funzione restituisce il contenuto di un dato campo per una riga specificata dalla tabella interna. FieldName e TableName devono essere forniti come stringa e Row deve essere un numero intero. 0 denota il primo record, 1 il secondo e così via. I numeri negativi indicano l'ordine dalla fine della tabella. -1 denota l'ultimo record.

Poiché conosciamo la data dopo la quale i record saranno considerati nuovi record, possiamo caricare record incrementali dal set di dati (Clausola Where nell'istruzione Load) e uniscili con QVD . disponibile (guarda l'istantanea qui sotto).

incremental_load_qlikview_4-8445503

Ora, carica QVD aggiornato (Saldi), avrebbe record incrementali.

incremental_load_qlikview_5-8385090

Come potete vedere, sono stati aggiunti due record da 26 agosto 2014. tuttavia, abbiamo anche inserito un record duplicato. Ora possiamo dire che un metodo solo INSERT non convalida i record duplicati perché non abbiamo avuto accesso ai record disponibili.

Cosa c'è di più, in questo metodo non possiamo aggiornare il valore dei record esistenti.

Per riassumere, i seguenti sono i passaggi per caricare solo i record incrementali in QVD utilizzando il metodo INSERT only:

1) Identifica nuovi record e caricali
2) Concatena questi dati con un file QVD
3) Sostituisci il vecchio file QVD con una nuova tabella concatenata

2. Inserisci e aggiorna il metodo:

Come visto nell'esempio precedente, non siamo in grado di eseguire il controllo del record duplicato e aggiornare il record esistente. Qui è dove, il metodo di inserimento e aggiornamento viene in aiuto:

incremental_load_qlikview_6-6322315

Nel set di dati sopra (tavolo giusto), abbiamo un record (ID = PRD1458) da aggiungere e un altro (ID = PRD858) attualizzare (valore di vendita di 131 un 140). Ora, per aggiornare e verificare i record duplicati, abbiamo bisogno di una chiave primaria nel nostro set di dati.

Supponiamo che id sia la chiave primaria e, secondo la data di modifica e l'identificazione, dovremmo essere in grado di identificare e classificare i record nuovi o modificati.

Per eseguire questo metodo, seguire passaggi simili per identificare i nuovi record come abbiamo fatto nel metodo INSERT only e concatenando i dati incrementali con uno esistente, applichiamo il controllo dei record duplicati o aggiorniamo il valore dei record esistenti.

incremental_load_qlikview_7-4054219

Qui, abbiamo caricato solo quei record in cui la chiave primaria (ID) è nuovo e utilizza la funzione Esiste () impedisce a QVD di caricare record obsoleti poiché la versione AGGIORNATA è attualmente in memoria, quindi i valori dei record esistenti vengono aggiornati automaticamente.

Ora, abbiamo tutti i record univoci disponibili in QVD con un valore di vendita aggiornato per ID (PRD858).

incremental_load_qlikview_8-3073865

3. metodo INSERT, AGGIORNA ED ELIMINA:

Lo script per questo metodo è molto simile a INSERT & AGGIORNARE, tuttavia, qui abbiamo un passaggio in più necessario per eliminare i record eliminati.

Caricheremo le chiavi primarie di tutti i record nel set di dati corrente e applicheremo un join interno con il set di dati concatenato (Antica + Incrementale). Il join interno manterrà solo i registri comuni e, così, cancellerà i record indesiderati. Supponiamo di voler eliminare un record da (ID PRD1058) nell'esempio sopra.

incremental_load_qlikview_9-6365252

Qui, abbiamo un set di dati con l'aggiunta di un record (ID PRD1458), modificare un record (ID PRD158) e l'eliminazione di un record (ID PRD1058).

incremental_load_qlikview_10-2019641

Note finali:

In questo articolo, abbiamo discusso di come i carichi incrementali siano migliori e forniscano un modo efficiente per caricare i dati rispetto al carico COMPLETO. Come buona pratica, dovresti avere un backup regolare dei tuoi dati perché potrebbe essere interessato o potrebbe verificarsi una perdita di dati, se ci sono problemi con il server del database e la rete.

A seconda del settore e della necessità dell'applicazione, puoi selezionare quale metodo funziona per te. La maggior parte delle applicazioni comuni nel settore BFSI si basa su Insert and Update. L'eliminazione dei record non viene normalmente utilizzata.

Hai affrontato una situazione simile o hai un altro trucco per migliorare l'efficienza delle applicazioni Qlikview sotto il tuo cappello?? Se è così, Mi piacerebbe sentire i tuoi pensieri attraverso i commenti qui sotto., in quanto avvantaggia anche qualcun altro che cerca di gestire una situazione simile.

Se ti piace quello che hai appena letto e vuoi continuare a imparare l'analisi, iscriviti alle nostre email, Seguici su Twitter o come il nostro pagina Facebook.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.