Differenze tra Direct Discovery e dati in memoria | Guida di Qlik Sense su Windows
Vai al contenuto principale Passa a contenuto complementare

Differenze tra Direct Discovery e dati in memoria

Modello in memoria

Nel modello in memoria di Qlik Sense tutti i valori univoci nei campi selezionati da una tabella nello script di caricamento vengono caricati in strutture di campo e i dati associativi vengono contemporaneamente caricati nella tabella. Sia i dati dei campi sia i dati associativi vengono conservati in memoria.

One table with three fields.

Una seconda tabella correlata caricata in memoria condividerebbe un campo comune e potrebbe aggiungere nuovi valori univoci al campo comune o condividere valori esistenti.

Two tables with a common field.

Direct Discovery

Quando i campi della tabella vengono caricati con un'istruzione Direct Discovery LOAD (Direct Query), viene creata una tabella simile contenente solo i campi DIMENSION. Come con i campi in memoria, i valori univoci per i campi DIMENSION vengono caricati in memoria, ma le associazioni tra i campi rimangono nel database.

One table with two dimension fields.

Anche i valori di campo MEASURE vengono lasciati nel database.

One table with measure field values left in the database.

Una volta stabilita la struttura di Direct Discovery, i campi Direct Discovery possono essere utilizzati con determinati oggetti di visualizzazione e per le associazioni con i campi in memoria. Quando si utilizza un campo Direct Discovery, Qlik Sense crea automaticamente la query SQL appropriata da eseguire sui dati esterni. Quando si effettuano le selezioni, i valori dei dati associati dei campi Direct Discovery vengono utilizzati nelle condizioni WHERE delle query di database.

Con ciascuna selezione, le visualizzazioni con i campi Direct Discovery vengono ricalcolate, e questi calcoli vengono eseguiti nella tabella del database sorgente con la query SQL creata da Qlik Sense. È possibile utilizzare la funzione della condizione di calcolo per specificare quando è necessario ricalcolare le visualizzazioni. Fino a quando la condizione non viene soddisfatta, Qlik Sense non invia query per ricalcolare le visualizzazioni.

Differenze di prestazioni tra campi in memoria e campi Direct Discovery

L'elaborazione in memoria è sempre più veloce rispetto a quella nei database sorgente. Le prestazioni di Direct Discovery rispecchiano quelle del sistema che esegue il database di elaborazione delle query Direct Discovery.

È possibile utilizzare le procedure consigliate standard di ottimizzazione del database e delle query per Direct Discovery. Tutte le ottimizzazioni delle prestazioni devono essere eseguite nel database sorgente. Direct Discovery non fornisce supporto per l'ottimizzazione delle prestazioni delle query dall'Qlik Sense applicazione. È possibile, tuttavia, effettuare chiamate asincrone, parallele al database, utilizzando la funzionalità di pooling delle connessioni. Di seguito è riportata la sintassi dello script di caricamento per impostare la funzionalità di pooling:

SET DirectConnectionMax=10;

La memorizzazione nella cache Qlik Sense permette anche di migliorare l'esperienza generale dell'utente. Vedi Memorizzazione nella cache e Direct Discovery di seguito.

Anche le prestazioni di Direct Discovery con campi DIMENSION possono essere migliorate separando alcuni campi dalle associazioni. A tale scopo viene utilizzata la parola chiave DETACH in DIRECT QUERY. Sebbene i campi separati non vengano sottoposti a query per le associazioni, fanno comunque parte dei filtri e velocizzano i tempi di selezione.

Mentre Qlik Sense i campi in memoria e Direct Discovery i campi DIMENSION mantengono tutti i dati in memoria, il modo in cui vengono caricati influisce sulla velocità dei caricamenti in memoria. Qlik Sense I campi in memoria mantengono una sola copia di un valore di campo quando ci sono più istanze dello stesso valore. Tuttavia, vengono caricati tutti i dati dei campi e quelli duplicati vengono esclusi in un secondo momento.

Anche i campi DIMENSION contengono solo una copia di un valore di campo, ma i valori duplicati vengono ordinati nel database prima di essere caricati in memoria. Quando si gestiscono grandi quantità di dati, come avviene di solito quando si utilizza Direct Discovery, i dati vengono caricati molto più rapidamente sotto forma di caricamento DIRECT QUERY rispetto a quanto non avverrebbe con il caricamento SQL SELECT utilizzato per i campi in memoria.

Differenze tra dati in memoria e dati di database

DIRECT QUERY rileva la distinzione tra maiuscole e minuscole quando si effettuano associazioni con dati in memoria. Direct Discovery seleziona i dati dai database di origine in base alla distinzione tra maiuscole e minuscole dei campi del database interrogati. Se i campi del database non supportano la distinzione tra maiuscole e minuscole, una query Direct Discovery può restituire dati non restituiti da una query in memoria. Ad esempio, se i dati seguenti esistono in un database che non rileva la distinzione tra maiuscole e minuscole, una Direct Discovery query del valore "Red" restituirebbe tutte e quattro le righe.

Tabella di esempio
Colonna A Colonna B
rosso uno
Rosso due
Rosso tre
Rosso quattro

Una selezione in memoria di "Red," d'altra parte, restituirebbe solo:

Red two

Qlik Sense normalizza i dati in modo da produrre corrispondenze nei dati selezionati che non verrebbero riprodotte dai database. Di conseguenza, una query in memoria può produrre più valori corrispondenti rispetto a una query Direct Discovery. Ad esempio, nella tabella seguente, i valori per il numero "1" variano in base alla posizione degli spazi adiacenti:

Tabella con valori diversi per il numero "1" a causa della diversa posizione degli spazi adiacenti
Colonna A Colonna B
' 1' Spaziatura prima
'1' nessuno_spazio
'1 ' Spazio dopo
'2' due

Se si seleziona "1" in una casella di filtro per ColumnA, in cui i dati sono in memoria Qlik Sense standard, vengono associate le prime tre righe:

Associated rows
ColumnA ColumnB
' 1' space_before
'1' no_space
'1 ' space_after

Se la casella di filtro contiene Direct Discovery dati, la selezione di "1" potrebbe associare solo "no_space". Le corrispondenze restituite per i dati Direct Discovery dipendono dal database. Alcuni restituiscono solo "no_space" e alcuni, come SQL Server, restituiscono "no_space" e "space_after".

Memorizzazione nella cache e Direct Discovery

Qlik Sense memorizza nella cache gli stati di selezione delle query e i relativi risultati. Quando vengono effettuati gli stessi tipi di selezione, Qlik Sense utilizza la cache per rispondere alla query anziché eseguire altre query sui dati sorgente. Quando si effettua una selezione diversa, viene eseguita una query SQL sulla sorgente dati. I risultati memorizzati nella cache vengono condivisi tra gli utenti.

  1. L'utente applica la selezione iniziale.

    Viene eseguita una query pass-through SQL sulla sorgente dati sottostante.

  2. L'utente annulla la selezione e applica la stessa selezione iniziale.

    Viene restituito il risultato della cache e SQL non viene passato alla sorgente dati sottostante.

  3. L'utente applica una selezione diversa.

    Viene eseguita una query pass-through SQL sulla sorgente dati sottostante.

È possibile impostare un limite di tempo per la cache con la DirectCacheSeconds variabile di sistema. Una volta raggiunto il limite di tempo, Qlik Sense cancella la cache per i Direct Discovery risultati della query che sono stati generati per le selezioni precedenti. Qlik Sense riprende quindi a eseguire query sui dati sorgente per le selezioni e ricrea la cache per il limite di tempo indicato.

Il tempo di memorizzazione nella cache predefinito per i risultati della query Direct Discovery è 30 minuti, a meno che non si utilizzi la DirectCacheSeconds variabile di sistema.

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – ti pregiamo di farcelo sapere!