Ana içeriğe geç

Exists - kod fonksiyonu

Exists() , belirli bir alan değerinin komut dosyasında alana zaten yüklenmiş olup olmadığını belirler. Fonksiyon, TRUE veya FALSE değerini döndürür, bu nedenle bir LOAD deyiminin veya IF işlevinin where yan tümcesinde kullanılabilir.

Bilgi notuAyrıca bir alan değerinin yüklenip yüklenmediğini belirlemek için Not Exists() fonksiyonunu da kullanabilirsiniz. Ancak bir where yan tümcesinde Not Exists() fonksiyonunu kullanıyorsanız dikkat etmeniz önerilir. Exists() fonksiyonu hem önceden yüklenen tabloları hem de geçerli tabloya önceden yüklenen değerleri test eder. Bu nedenle yalnızca ilk oluşum yüklenir. İkinci oluşumla karşılaşıldığında değer zaten yüklenmiştir. Daha fazla bilgi için örneklere bakın.

Söz Dizimi:  

Exists(field_name [, expr] )

Dönüş veri türü: Boole

Bağımsız Değişkenler:  

Exists bağımsız değişkenleri
Bağımsız Değişken Açıklama
field_name

Değer aramak istediğiniz alanın adı. Tırnak işaretleri olmadan açık alan adı kullanabilirsiniz.

Alan önceden kod tarafından yüklenmiş olmalıdır. Başka bir deyişle, kodda bir yan tümcede yüklenmiş olan bir alana başvuramazsınız.

expr

Varsa denetlemek istediğiniz değer. Geçerli load deyiminde bir veya birkaç alana başvuran bir ifade veya açık bir değer kullanabilirsiniz.

Bilgi notuGeçerli load deyiminde yer almayan alanlara başvuramazsınız.

Bu bağımsız değişken isteğe bağlıdır. Bunu atlarsanız fonksiyon, geçerli kayıtta field_name değerinin önceden mevcut olup olmadığını denetler.

Örnek 1:  

Exists (Employee)

Geçerli kayıttaki Employee alanının değeri bu alanı içeren daha önce okunmuş herhangi bir kayıtta zaten mevcutsa -1 (True) sonucunu döndürür.

Örnek 2:  

Exists(Employee, 'Bill')

Employee alanının geçerli içeriğinde 'Bill' alan değeri bulunursa -1 (True) sonucunu döndürür.

Exists (Employee, Employee) ve Exists (Employee) deyimleri eşdeğerdir.

Örnek 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;
 

Bunun sonucunda veri modelinde EmployeeAddresses adında bir tablo elde edilir ve Employee ile Address boyutları kullanılarak tablo grafiği olarak görüntülenebilir.

where cümlesi: where Exists (Employee, Name), Citizens tablosundan gelen adlardan yalnızca Employees içinde de bulunan adların yeni tabloya yüklenmesi anlamını taşır. Drop deyimi karışıklığı önlemek için geçici Employees ve Citizens tablolarını kaldırır.

Örnek 3 sonuçları
EmployeeAddress
BillNew York
JohnMiami
SteveChicago

Örnek 4:  

EmployeeAddresses tablosunu oluşturan önceki örnekte örnek verilerdeki deyimi where not Exists kullanarak aşağıdakiyle değiştirme.

NonEmployee:

Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);

 

where yan tümcesi, not: where not Exists (Employee, Name) içerir.

Başka bir deyişle yalnızca, Employees içinde bulunmayan Citizens tablosundaki adlar yeni tabloya yüklenir.

Citizens tablosunda Lucy için iki değer vardır ancak sonuç tablosuna yalnızca biri dahil edilir. Birinci satırı yüklediğinizde değer, Employee sembol tablosuna dahil edilir. Bu nedenle, ikinci satır denetlendiğinde değer artık mevcuttur.

Sonraki örnekte, tüm değerlerin nasıl yükleneceği gösterilmektedir.

Örnek 4 sonuçları
EmployeeAddress
MaryLondon
LucyMadrid

Örnek 5:  

Employees: Load Employee As Name, ID, Salary; 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;
 

Tüm Lucy değerlerini alabilmek için iki şeyi değiştirmeniz gerekir:

  • Employees için öncelikli yükleme ekleyin; Employee öğesini Name olarak yeniden adlandırırsınız.

    Load Employee As Name, ID, Salary;

  • Citizens içinde Where koşulunu şuna değiştirin:

    not Exists (Name, Employee).

Böylece Name ve Employee için farklı sembol tabloları oluşturulur. İkinci Lucy satırı denetlendiğinde, halen Name içinde mevcut değildir.

Örnek 5 sonuçları
EmployeeAddress
MaryLondon
LucyMadrid
LucyParis

Örnekte kullanılan veriler:

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

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız, bize bildirin, düzeltelim!

Analiz Modernleştirme Programına katılın

Remove banner from view

Analiz Modernleştirme Programı ile değerli QlikView uygulamalarınızı ödün vermeden modernleştirin. Bize ulaşmak ve daha fazla bilgi almak için buraya tıklayın: ampquestions@qlik.com