Vai al contenuto principale

Exists - funzione di script

Exists() determina se un valore di campo specifico è già stato caricato nel campo nello script di caricamento. La funzione restituisce TRUE o FALSE, quindi può essere utilizzata nella clausola where di un'istruzione LOAD o una funzione IF.

Nota informaticaOra è possibile utilizzare anche Not Exists() per determinare se un valore di campo non è stato caricato, tuttavia si raccomanda cautela in caso di utilizzo di Not Exists() in una clausola WHERE. La funzione Exists() testa sia le tabelle precedentemente caricate sia i valori precedentemente caricati nella tabella corrente. Pertanto, verrà caricata solo la prima occorrenza. Quando viene incontrata la seconda occorrenza, il valore risulta già caricato. Vedere gli esempi per ulteriori informazioni.

Sintassi:  

Exists(field_name [, expr] )

Restituisce il tipo di dati: Booleano

Argomenti:  

Argomenti Exists
Argomento Descrizione
field_name

Il nome del campo in cui si desidera ricercare un valore. È possibile utilizzare un nome di campo esplicito senza virgolette.

Il campo deve essere già stato caricato dallo script. Ciò significa che non si può fare riferimento a un campo caricato in una clausola posta più avanti nello script.

expr

Il valore di cui si desidera controllare l'esistenza. È possibile utilizzare un valore esplicito o un'espressione che si riferisce a uno o più campi nell'attuale istruzione LOAD.

Nota informaticaNon è possibile fare riferimento a campi non inclusi nell'istruzione LOAD corrente.

Questo argomento è opzionale. Se lo si omette, la funzione controllerà se il valore di field_name nel record corrente esiste già.

Esempio 1:  

Exists (Employee)

restituisce -1 (True) se il valore di campo Employee nel record attuale esiste già in uno qualsiasi dei record letti in precedenza contenenti tale campo.

Esempio 2:  

Exists(Employee, 'Bill')

restituisce -1 (True) se il valore di campo 'Bill' viene trovato nel contenuto attuale del campo Employee.

Le istruzioni Exists (Employee, Employee) e Exists (Employee) sono equivalenti.

Esempio 3:  

Employees: LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where Exists (Employee); Drop Tables Employees;

 

il risultato è una tabella denominata Citizens nel modello dati, che può essere visualizzata come grafico tabellare utilizzando le dimensioni Employee e Address.

La clausola where: where Exists (Employee), significa che nella nuova tabella vengono caricati solo i nomi della tabella Citizens che sono anche presenti in Employees. Per evitare confusione, l'istruzione Drop rimuove la tabella temporanea Employees per evitare confusioni.

Risultati esempio 3
Employee Address
Bill New York
John Miami
Steve Chicago

Esempio 4:  

Employees: Load * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Employee);   Drop Tables Employees;

 

la clausola where include not: where not Exists (Employee).

Ciò significa che solo i nomi presenti nella tabella Citizens che non sono inclusi in Employees vengono caricati nella nuova tabella.

Notare che sono presenti due valori per Lucy nella tabella Citizens, ma solo uno è incluso nella tabella dei risultati. Quando si carica la prima riga con il valore Lucy, questo viene incluso nel campo Employee. Pertanto, quando viene controllata la seconda riga, il valore risulta già esistente.

Risultati esempio 4
Employee Address
Mary London
Lucy Madrid

Esempio 5:  

il seguente esempio mostra come caricare tutti i valori.

Employees: Load Employee As Name; LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Name, Employee);   Drop Tables Employees;

 

Per ottenere tutti i valori per Lucy, sono stati modificati due elementi:

  • Un caricamento precedente sulla Employees è stato inserito, quindi il nome di Employee è stato modificato a Name.

    Load Employee As Name;

  • La condizione Where in Citizens è stata modificata a:

    not Exists (Name, Employee).

Questa operazione crea campi per Name e Employee. Quando viene controllata la seconda riga per Lucy, non esiste ancora in Name.

Risultati esempio 5
Employee Address
Mary London
Lucy Madrid
Lucy Paris

Dati utilizzati nell'esempio:

LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|');

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 – facci sapere come possiamo migliorare!

Partecipa al programma Analytics Modernization

Remove banner from view

Modernizza senza compromettere le tue preziose app QlikView con il programma Analytics Modernization. Fare clic qui per maggiori informazioni o per contattarci: ampquestions@qlik.com