# Unless

unless öneki ve soneki bir deyimin veya bir çıkış cümlesinin değerlendirilip değerlendirilmemesi 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:

(Unless condition statement | exitstatement Unless condition )

statement veya exitstatement ancak condition False olarak değerlendirilirse yürütülür.

unless öneki, ek when veya unless önekleri de dahil olmak üzere, bir veya birden fazla başka deyime zaten sahip olan deyimlerde kullanılabilir.

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

## Ne zaman kullanılır?

`Unless` deyimi bir Boole sonucu döndürür. Genellikle bu tür bir fonksiyon, kullanıcı komut dosyasının parçalarını koşullu olarak yüklemek veya dışlamak istediğinde, koşul olarak kullanılır.

Aşağıdaki satırlarda `Unless` fonksiyonunun nasıl kullanılabileceğine ilişkin üç örnek gösterilir:

`exit script 
 unless A=1;` `unless A=1 
 LOAD  * from myfile.csv;` `unless A=1 
 when B=2 drop table Tab1;`

## 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.

## Örnek 1 – Unless ön eki

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

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

* 1 değeri verilmiş A değişkenini oluşturma.

* Transactions adlı tabloya yüklenen bir veri kümesi (değişken A = 2 olmadığı sürece).

Komut dosyası

```
LET A = 1;

UNLESS A = 2

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şında A değişkenine 1 değeri atandığından, `Unless` ön ekini izleyen koşul değerlendirilir ve `FALSE` sonucu döndürülür. Sonuç olarak komut dosyası `Load` deyimini çalıştırmaya devam eder. Sonuçlar tablosunda, `Transactions` tablosundan gelen tüm kayıtlar görülebilir.

Bu değişken değeri 2'ye eşit olacak şekilde ayarlanırsa, veri modeline hiçbir veri yüklenmez.

## Örnek 2 – Unless son eki

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

#### Komut dosyası ve sonuçlar

Genel bakış

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

Komut dosyası başlangıç olarak ilk veri kümesini `Transactions` adlı tabloya yükler. Ardından, `Transactions` tablosunda 10'dan az kayıt olmadığı sürece komut dosyası sonlandırılır.

Bu koşulun sonucunda komut dosyası sonlandırılmazsa, `Transactions` tablosuyla bir işlem kümesi daha birleştirilir ve bu işlem böyle tekrarlanır.

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 unless 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 unless 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 unless 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 | 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 |

Komut dosyasının üç veri kümesinden her birinde yedi kayıt vardır.

İlk veri kümesi (1 ile 7 arasında `id` işlemini içerir) uygulamaya yüklenir. `Unless` koşulu, `Transactions` tablosunda 10'dan az satır olup olmadığını değerlendirir. Bu `TRUE` olarak değerlendirilir ve bu nedenle ikinci veri kümesi (8 ile 14 arasında `id` işlemini içerir) uygulamaya yüklenir. İkinci `Unless` koşulu, `Transactions` tablosunda 10'dan az kayıt olup olmadığını değerlendirir. Bu `FALSE` olarak değerlendirilir ve bu nedenle komut dosyası sonlandırılır.

## Örnek 3 – Birden fazla Unless ön eki

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

#### Komut dosyası ve sonuçlar

Genel bakış

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

Bu örnekte, tek işlem içeren bir veri kümesi `Transactions` adlı tablo olarak oluşturulur. Ardından 'for' döngüsü tetiklenir ve bu döngüde iç içe iki unless deyimi değerlendirilir:

1. `Transactions` tablosunda 100'den fazla kayıt olmadığı sürece

2. `Transactions` tablosundaki kayıtların sayısı 6'nın katları olmadığı sürece

Bu koşullar `FALSE` olduğunda, yedi kayıt daha oluşturulur ve mevcut `Transactions` tablosuyla birleştirilir. İki işlemden biri `TRUE` değerini döndürene kadar bu işlem tekrarlanır.

Komut dosyası

```
Transactions:
Load
        0 as id
Autogenerate 1;

For i = 1 to 100
        unless NoOfRows('Transactions') > 100 unless mod(NoOfRows('Transactions'),6) = 0
                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`değişkenlerini silin.

Sonuçlar tablosu

| kimlik |
| --- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| +30 satır daha |

'for' döngüsündeki iç içe yerleştirilmiş unless deyimleri şunları değerlendirir:

1. `Transactions` tablosunda 100'den fazla satır var mı?

2. `Transactions` tablosundaki kayıtların toplam sayısı 6'nın katlarından biri mi?

Her iki unless deyimi de `FALSE` değerini döndürdüğünde, yedi kayıt daha oluşturulur ve mevcut `Transactions` tablosuyla birleştirilir.

Bu deyimler beş kez `FALSE` değerini döndürür ve bu noktada `Transactions` tablosunda toplam 36 veri satırı vardır.

Bundan sonra, ikinci `Unless` deyimi `TRUE` değerini döndürür ve dolayısıyla bunu izleyen LOAD deyimi artık yürütülmez.