when öneki ve soneki bir deyimin veya bir çıkış cümlesinin yürütülüp yürütülmemesi gerektiğini belirleyen koşullu bir cümle oluşturmak için kullanılır. Bu, uzun if..end if deyiminin kısa bir alternatifi olarak da görülebilir.
Qlik Sense üzerinde Boolean true değeri -1 ile, false ise 0 ile temsil edilir.
statement veya exitstatement ancak koşul TRUE olarak değerlendirilirse yürütülür.
When öneki, ek When veya Unless önekleri de dahil olmak üzere, bir veya birden fazla başka deyime zaten sahip olan deyimlerde kullanılabilir.
Ne zaman kullanılır?
When deyimi bir Boole sonucu döndürür. Genel olarak bu tür bir fonksiyon, kullanıcı komut dosyasının parçalarını yüklemek veya dışlamak istediğinde, koşul olarak kullanılır.
Bağımsız Değişkenler
Bağımsız Değişken
Açıklama
condition
TRUE veya FALSE olarak değerlendirilen bir mantıksal ifade
statement
Kontrol ifadeleri dışında herhangi bir Qlik Sense kod deyimi.
exitstatement
Bir exit for, exit do veya exit sub cümlesi ya da bir exit script deyimi.
Bölgesel ayarlar
Aksi belirtilmedikçe bu konudaki örneklerde aşağıdaki tarih formatı kullanılır: AA/GG/YYYY. Tarih formatı, veri yükleme kodunuzda SET DateFormat deyiminde belirtilir. Varsayılan tarih formatı, bölgesel ayarlarınız ve diğer unsurlar nedeniyle sisteminizde farklı olabilir. Aşağıdaki örneklerdeki formatları ihtiyaçlarınıza uyacak şekilde değiştirebilirsiniz. Dilerseniz yükleme kodunuzdaki formatları aşağıdaki örneklere uyacak şekilde değiştirebilirsiniz. Daha fazla bilgi için bkz. Uygulamalar ve komut dosyaları için bölgesel ayarları değiştirme.
Uygulamalardaki varsayılan bölgesel ayarlarda kullanıcı profili temel alınır. Bu bölgesel format ayarları, Qlik Cloud kullanıcı arayüzünde görüntülenen dil ayarlarıyla ilgili değildir. Qlik Cloud, kullandığınız tarayıcıyla aynı dilde görüntülenir.
A=1 deyimi TRUE olarak değerlendirildiğinde komut dosyası durdurulur.
when A=1 LOAD * from myfile.csv;
A=1 deyimi TRUE olarak değerlendirildiğinde myfile.csv yüklenir.
when A=1 unless B=2 drop table Tab1;
A=1 deyimi TRUE olarak ve B=2 FALSE olarak değerlendirildiğinde, Tab1 tablosu bırakılır.
Örnek 1 – When ön eki
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
"Transactions" adlı tabloya gönderilen tarihleri ve tutarları içeren bir veri kümesi.
A değişkeninin oluşturulduğunu ve 1 değerine sahip olduğunu belirten Let deyimi.
A1 değerine eşitse komut dosyası yüklenmeye devam edecek koşulunu sağlayan When koşulu.
Komut dosyası
LET A = 1;
WHEN A = 1
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
id
date
amount
Sonuçlar tablosu
kimlik
tarih
amount
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
Komut dosyasının başlangıcında A değişkenine 1 değeri atandığından, When ön ekini izleyen koşul değerlendirilir ve TRUE sonucunu döndürür. TRUE sonucunu döndürdüğü için, komut dosyası LOAD deyimini çalıştırmaya devam eder. Sonuçlar tablosundaki kayıtların tümü görülebilir.
Bu değişkenin değeri olarak 1 dışındaki herhangi bir değer ayarlandıysa, veri modeline hiçbir veri yüklenmez.
Örnek 2 – When son eki
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
"Transactions" adlı tabloya gönderilen tarihleri ve tutarları içeren üç veri kümesi.
İlk veri kümesi 1-7 arasındaki işlemleri içerir.
İkinci veri kümesi 8-14 arasındaki işlemleri içerir.
Üçüncü veri kümesi 15-21 arasındaki işlemleri içerir.
"Transactions" tablosunun ondan fazla satır içerip içermediğini belirleyen When koşulu. When deyimlerinden herhangi biri TRUE olarak değerlendirilirse komut dosyası durdurulur. Bu koşul üç veri kümesinden her birinin sonuna yerleştirilir.
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
id
date
amount
Sonuçlar tablosu
kimlik
tarih
amount
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
8
10/01/2018
164.27
9
10/03/2018
384.00
10
10/06/2018
25.82
11
10/09/2018
312.00
12
10/15/2018
4.56
13
10/16/2018
90.24
14
10/18/2018
19.32
Üç veri kümesinin her birinde yedi işlem vardır. İlk veri kümesi 1-7 arasındaki işlemleri içerir ve uygulamaya yüklenir. "Transactions" tablosunda ondan az satır bulunduğundan, bu LOAD deyimini izleyen When koşulu FALSE olarak değerlendirilir. Komut dosyası sonraki veri kümesiyle devam eder.
İkinci veri kümesi 8-14 arasındaki işlemleri içerir ve uygulamaya yüklenir. "Transactions" tablosunda ondan az satır bulunduğundan, bu LOAD deyimini izleyen When koşulu TRUE olarak değerlendirilir. Bu nedenle komut dosyası sonlandırılır.
Örnek 3 – Birden fazla When ön eki
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
Tek işlem içeren bir veri kümesi 'Transactions' adlı tablo olarak oluşturulur.
Tetiklenen For döngüsü, aşağıdakileri değerlendiren içi içe iki When koşulu içerir:
'Transactions' tablosunda 100 kayıttan daha az kayıt vardır.
'Transactions' tablosundaki kayıtların sayısı 6 sayısının katlarından biri değildir.
Komut dosyası
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when(RowsCheck)
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:
id
Sonuçlar tablosunda yalnızca ilk beş işlem kimliği gösterilir ancak komut dosyası 36 satır oluşturur ve ardından When koşulu karşılandığında sonlandırılır.
Sonuçlar tablosu
kimlik
0
1
2
3
4
5
+30 satır daha
For döngüsünde yer ala iç içe When koşulları aşağıdaki soruları değerlendirir:
'Transactions' tablosunda 100'den az satır mı var?
'Transactions' tablosundaki kayıtların toplam sayısı altının katlarından biri değil mi?
Her iki When koşulu da TRUE değerini döndürdüğünde, yedi kayıt daha oluşturulur ve mevcut "Transactions" tablosuyla birleştirilir.
When koşulları beş kez TRUE değerini döndürür. Bu noktada "Transactions" tablosunda toplam 36 veri satırı vardır.
"Transactions" tablosunda 36 veri satırı oluşturulduğunda, ikinci When deyimi FALSE değerini döndürür ve dolayısıyla bunu izleyen LOAD deyimi artık yürütülmez.
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!