Ga naar hoofdinhoud

Exists - scriptfunctie

Exists() bepaalt of een specifieke veldwaarde al is geladen in het veld in het load-script. De functie retourneert TRUE  of FALSE, zodat deze kan worden gebruikt in de where-clausule van een LOAD -opdracht of een IF-functie.

InformatieU kunt Not Exists() ook gebruiken om te bepalen of een veldwaarde niet is geladen, maar voorzichtigheid is geboden als u Not Exists() gebruikt in een where-clausule. De functie Exists() test zowel eerder geladen tabellen als eerder geladen waarden in de huidige tabel. Dit betekent dat alleen het eerste exemplaar wordt geladen. Wanneer een tweede exemplaar wordt gevonden, is de waarde al geladen. Bekijk de voorbeelden voor meer informatie.

Syntaxis:  

Exists(field_name [, expr] )

Retourgegevenstype: Booleaanse waarde

Argumenten:  

Argumenten voor exists
Argument Beschrijving
field_name

De naam van het veld waarin u een waarde wilt zoeken. U kunt een expliciete veldnaam gebruiken zonder aanhalingstekens.

Het veld moet al door het script zijn geladen. Dit betekent dat u niet naar een veld kunt verwijzen dat in een clausule verderop in het script wordt geladen.

expr

De waarde waarvan u wilt controleren of deze bestaat. U kunt een expliciete waarde gebruiken of een uitdrukking die verwijst naar een of meer velden in de huidige laadinstructie.

InformatieU kunt niet verwijzen naar velden die niet in de huidige laadinstructie zijn opgenomen.

Dit argument is optioneel. Als u dit weglaat, controleert de functie of de waarde van field_name al bestaat in het huidige record.

Voorbeeld 1:  

Exists (Employee)

Retourneert -1 (True) als de waarde van het veld Employee in de huidige record al bestaat in een eerder gelezen record met dat veld.

Voorbeeld 2:  

Exists(Employee, 'Bill')

Retourneert -1 (True) als de veldwaarde 'Bill' wordt gevonden in de huidige inhoud van het veld Employee.

De opdrachten Exists (Employee, Employee) en Exists (Employee) zijn equivalent.

Voorbeeld 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;

 

Dit resulteert in een tabel met de naam Citizens in het gegevensmodel, die kan worden bekeken als een tabelgrafiek met de dimensies Employee en Address.

De clausule where: where Exists (Employee), betekent dat alleen de namen uit de tabel Citizens die tevens in Employees voorkomen in de nieuwe tabel worden geladen. Met de opdracht Drop worden de tijdelijke tabellen Employees verwijderd om verwarring te voorkomen.

Resultaten voorbeeld 3
Employee Address
Bill New York
John Miami
Steve Chicago

Voorbeeld 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;

 

De clausule where bevat not: where not Exists (Employee).

Dit betekent dat alleen de namen uit de tabel Citizens die niet in Employees voorkomen in de nieuwe tabel worden geladen.

Er zijn twee waarden voor Lucy in de tabel Citizens, maar slechts één waarde wordt opgenomen in de resultaattabel. Als u de eerste rij laadt met de waarde Lucy wordt deze opgenomen in het veld Employee. Als de tweede regel wordt gecontroleerd, is de waarde al aanwezig.

Resultaten voorbeeld 4
Employee Address
Mary London
Lucy Madrid

Voorbeeld 5:  

Dit voorbeeld wordt getoond hoe u alle waarden kunt laden.

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;

 

Er zijn twee dingen veranderd om alle waarden voor Lucy te krijgen:

  • Een eerdere lading in de Employees-tabel is ingevoegd waar de naam van Employee is gewijzigd in Name.

    Load Employee As Name;

  • De Where-conditie in Citizens is gewijzigd in:

    not Exists (Name, Employee).

Dit maakt velden voor Name en Employee. Als de tweede rij met Lucy wordt gecontroleerd, is deze nog steeds niet aanwezig in Name.

Resultaten voorbeeld 5
Employee Address
Mary London
Lucy Madrid
Lucy Paris

Gebruikte gegevens in voorbeeld:

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 '|');

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!

Neem deel aan het Analytics Modernization Program

Remove banner from view

Moderniseer zonder uw waardevolle QlikView-apps op het spel te zetten met het Analytics Modernization Program. Klik hier voor meer informatie of om contact op te nemen: ampquestions@qlik.com