# When

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.

Söz Dizimi:

(when condition statement | exitstatement when condition )

Dönüş verileri türü: Boolean

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.

Uygulamalardaki bölgesel ayarlarda Qlik Sense'in yüklü olduğu bilgisayarın veya sunucunun bölgesel sistem ayarları temel alınır. Eriştiğiniz Qlik Sense sunucusu İsveç olarak ayarlıysa, Veri yükleme düzenleyicisi tarihler, saat ve para birimi için İsveç bölgesel ayarlarını kullanır. Bu bölgesel format ayarları, Qlik Sense kullanıcı arayüzünde görüntülenen dil ayarlarıyla ilgili değildir. Qlik Sense, kullandığınız tarayıcıyla aynı dilde görüntülenir.

Fonksiyon örnekleri

| Örnek | Sonuç |
| --- | --- |
| ` exit script when A=1;  ` | `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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Yükleme kodu ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası ş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.

* `A` `1` 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 | tutar |
| --- | --- | --- |
| 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 | 23.09.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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Yükleme kodu ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası ş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.

Komut dosyası

```
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 
]; 
 
exit script when NoOfRows('Transactions') > 10 ; 

Concatenate
LOAD 
*  
Inline [ 
id, date, amount 
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 
]; 

exit script when NoOfRows('Transactions') > 10 ; 
 
Concatenate 
LOAD 
*  
Inline [ 
id, date, amount 
15, 10/01/2018, 164.27 
16, 10/03/2018, 384.00 
17, 10/06/2018, 25.82 
18, 10/09/2018, 312.00 
19, 10/15/2018, 4.56 
20, 10/16/2018, 90.24 
21, 10/18/2018, 19.32 
]; 
 
exit script when NoOfRows('Transactions') > 10 ; 
```

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 | tutar |
| --- | --- | --- |
| 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 | 23.09.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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Yükleme kodu ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası ş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:

  1. '`Transactions`' tablosunda `100` kayıttan daha az kayıt vardır.

  2. '`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.