# Constrain

Constrain deyimi, komut dosyası değişkenlerini tanımlamak için Let veya Set deyimleriyle birlikte kullanılabilir. Constrain deyimi, bu değişkenler için olası değerler üzerinde kısıtlamalar tanımlamanıza olanak tanır. Bir değişken tanımı kısıtlamaları ihlal ederse yeniden yükleme başarısız olur. Kısıtlamalarla, değişken değerlerinin belirli türlerle eşleşmesini, belirli sayısal aralıklara girmesini ve tanımladığınız kabul edilebilir değerlerle eşleşmesini zorunlu tutabilirsiniz.

Söz Dizimi:

Constrain variablename = json

Burada:

* variablename bir komut dosyası değişkenidir.

* json kısıtlamaları belirten geçerli bir JSON nesnesidir. Bireysel kısıtlamalar bu nesnenin içine anahtar-değer çiftleri olarak eklenir.

Kısıtlama türleri

| Kısıtlama türü (anahtar) | Anlamı | Kısıtlama gereksinimleri (değer) | Örnekler |
| --- | --- | --- | --- |
| `"type"` | Değişken değerlerini belirli bir veri türüyle sınırlayın. | `"text"` bir metin türü belirtir.<br><br>`"number"` sayısal bir tür belirtir. | ```<br>CONSTRAIN vExampleText = {"type": "text"}<br>```<br><br>```<br>CONSTRAIN vExampleNumeric = {"type": "number"}<br>``` |
| `"maxnum"` | Bir değişken için maksimum değer ayarlayın. | Yalnızca sayılar (tam sayı veya kayan nokta). Bilimsel gösterime izin verilir. | ```<br>CONSTRAIN vExample = {"maxnum": 5000}<br>``` |
| `"minnum"` | Bir değişken için minimum değer ayarlayın. | Yalnızca sayılar (tam sayı veya kayan nokta). Bilimsel gösterime izin verilir. | ```<br>CONSTRAIN vExample = {"minnum": 250}<br>``` |
| `"valuesnum"` | Değişken için kabul edilebilir sayısal değerlerin bir listesini tanımlayın. | Köşeli parantez içine alınmış sayıların virgülle ayrılmış listesi. Örneğin: `[1,2,3]` | ```<br>CONSTRAIN vExample = {"valuesnum": [1,2,3]}<br>``` |
| `"valuestext"` | Değişken için kabul edilebilir metin değerlerinin bir listesini tanımlayın. | Köşeli parantez içine alınmış dizelerin virgülle ayrılmış listesi. Örneğin: `["a","b","c"]` | ```<br>CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}<br>``` |

## Constrain ifadesi ne zaman kullanılmalı?

İstenmeyen değişken değerlerinin analitik uygulamalarına yüklenmesini önlemek için Constrain deyimini kullanın. Aşağıdaki bölümlerde bunu kullanabileceğiniz belirli yollar özetlenmektedir.

### Yeniden yükleme zamanı değişkeni güncellemesi

Constrain özellikle yeniden yükleme zamanı değişken güncellemeleri ile birlikte kullanıldığında yararlıdır. Yeniden yükleme zamanı değişken güncellemeleriyle, [Yeniden Yüklemeler API'sindeki](https://qlik.dev/apis/rest/reloads/) variables özelliğini kullanarak uygulama yeniden yüklemeleri sırasında değişkenleri dinamik olarak güncelleyebilirsiniz. Constrain deyimi, kötü niyetli veya yanlış biçimlendirilmiş değişken tanımlarının analiz yeniden yüklemelerine dahil edilmesini önler.

Yeniden yükleme zamanı değişken güncellemeleri, Constrain deyimi ile birlikte aşağıdaki kullanım durumlarını destekler:

* Müşteri kimliği veya adı gibi koşullara göre verileri seçerek yükleyen şablonlu uygulamalar (yükleme sırasında değişken olarak aktarılabilir)

* Birçok Qlik Cloud kiracısına dağıtılmış uygulamalar üzerinde merkezi kontrol

* Değişken odaklı iş akışlarını ve görevleri QlikView ve Qlik Sense Client-Managed hedefinden buluta taşıma

### Güvenlik, güvenilirlik ve işbirliği

Yeniden yükleme zamanı değişkeni güncelleme senaryoları dışında kullanıldığında bile Constrain, örneğin işbirliğine dayalı yükleme komut dosyası geliştirme sırasında yükleme komut dosyası yazımı için güvenlik kontrollerini geliştirir. Örneğin, bir uygulama sahibi değişken değerleri için kısıtlamalar tanımlayabilir ve uygulamanın güvenilir bir şekilde başarıyla yeniden yüklenmesi için karşılanması gereken belirli koşulları ortak çalışanlara bildirebilir.

## Dikkat edilmesi gereken noktalar

* Değişken için Constrain tanımı geçerli bir JSON nesnesi olmalıdır.

* Tek bir değişken için birden fazla kısıtlama belirtebilirsiniz. Bir değişken için tüm kısıtlamaların tek bir kısıtlama nesnesi içinde yer alması gerekir. Örneğin bkz. [Örnekler - Çoklu kısıtlamalar](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Examples)

* Uygulamaya belirli bir ada sahip bir komut dosyası değişkeni yüklediyseniz, gelecekte bu değişken için kısıtlamalar ve değerler tanımlama girişimleri, orijinal ve yeniden tanımlanan değişkenler arasındaki çakışmalar nedeniyle başarısız olabilir.

  Bu çakışmaları çözmek için boş tanımlar ekleyerek değişken kısıtlamalarını ve değerlerini sıfırlayın. Örnekler:

  ```
  CONSTRAIN x;
  LET x;
  ```

  ```
  CONSTRAIN x;
  SET x;
  ```

  Daha sonra değişkeni ve kısıtlamalarını kod dosyasının sonraki bölümlerinde yeniden tanımlayabilirsiniz. Uzun biçimli bir örnek için bkz. [Örnek - Değişken tanımı çakışmalarını çözme](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#ConflictResolve).

* Değişken tanımının ve kısıtlama tanımının sırası önemli değildir. Ancak değişkene bağlı yeniden yükleme hatası durumunda, kırılma noktasının oluştuğu çizgi farklı olacaktır.

* Constrain komut dosyası deyimi yalnızca kod değişkenleri için değişken tanımlarını kısıtlar. Ayrıca genel API'yi kullanarak kod ve son kullanıcı değişkenlerine (sayfa görünümünde veya API kullanılarak oturum değişkenleri olarak oluşturulan ya da güncellenen) kısıtlamalar uygulayabilirsiniz. Daha fazla bilgi için şuraya bakın: [Değişken kısıtlamalarını tanımlamak için geliştirici alternatifleri](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Developer).

* Kısıtlamalar, değişken için herhangi bir değerle eşleşemeyen senaryoları önlemek amacıyla doğrulanır. Geçersiz kısıtlamalara örnekler:

  * {"minnum": 5000, "maxnum": 4}
  * {"type": "text", "maxnum": 4}

## Değişken kısıtlamalarını tanımlamak için geliştirici alternatifleri

Değişken kısıtlamalarını tanımlamak için kod dosyasında Constrain deyimini kullanmak yerine genel API'yi de kullanabilirsiniz. API aracılığıyla kısıtlamalar tanımlanırken, değişken değerlerini güncellemeye yönelik tüm girişimler (ister doğrudan komut dosyasında, ister sayfa görünümünde veya [Yeniden Yüklemeler API'si](https://qlik.dev/apis/rest/reloads/) aracılığıyla olsun) kısıtlamalara tabi olacaktır.

Değişken kısıtlamalarını genel API aracılığıyla tanımlamak için Qlik Sense Engine (qix) API'sindeki GenericVariableConstraints nesnesini kullanın: [GenericVariableConstraints](https://qlik.dev/apis/json-rpc/qix/schemas/).

## Örnek - type

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme "type" ile başarısız oldu

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:

* a değişken tanımının number türünde olması gerektiğini belirtmek için bir Constrain deyimi.

* a değişkenini tanımlayan bir LET deyimi.

Komut dosyası

```
CONSTRAIN a = {"type": "text"};
LET a = 1000;
```

Sonuçlar

Verileri yüklemesini.

Kısıtlama, a değişkeni için bir metin türü gerektirdiğinden yeniden yükleme başarısız olur. Değişken tanımı bir sayıdır.

Buna karşılık, kısıtlamada typenumber şeklinde bir ifade belirtilmesi yeniden yüklemenin başarılı olmasına neden olur.

## Örnek - maxnum

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme "maxnum" ile başarısız oldu

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:

* b değişken tanımının maksimum 3000 değerine sahip olabileceğini belirtmek için bir Constrain deyimi.

* b değişkenini tanımlayan bir LET deyimi.

```
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
```

Sonuçlar

Verileri yüklemesini.

Kısıtlama, b değişkeni için bir maksimum 3000 değerini gerektirdiğinden yeniden yükleme başarısız olur. Değişken tanımı 3001 olarak değerlendirilir.

Buna karşılık, kısıtlamada 2999 olarak b belirtmek, yeniden yüklemenin başarılı olmasına neden olur.

## Örnek - minnum

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme "minnum" ile başarısız oldu

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:

* b değişken tanımının minimum 3000 değerine sahip olabileceğini belirtmek için bir Constrain deyimi.

* c değişkenini tanımlayan bir LET deyimi.

```
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
```

Sonuçlar

Verileri yüklemesini.

Kısıtlama, c değişkeni için bir minimum 3000 değerini gerektirdiğinden yeniden yükleme başarısız olur. Değişken tanımı 2999 olarak değerlendirilir.

Buna karşılık, kısıtlamada 3000 olarak c belirtmek, yeniden yüklemenin başarılı olmasına neden olur.

## Örnek - valuesnum

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme "valuesnum" ile başarısız oldu

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:

* d için değişken tanımının sayısal olması ve 2, 3 veya 4 olması gerektiğini belirten bir Constrain deyimi.

* d değişkenini tanımlayan bir LET deyimi.

```
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
```

Sonuçlar

Verileri yüklemesini.

Yeniden yükleme başarısız olur çünkü d değişkeni üç olası değer listesinde olmayan 1 olarak değerlendirilir.

Buna karşılık, kısıtlamada 2 olarak d belirtmek, yeniden yüklemenin başarılı olmasına neden olur.

## Örnek - valuestext

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme "valuestext" ile başarısız oldu

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:

* e için değişken tanımının aşağıdaki metin değerlerinden biri olması gerektiğini belirten bir Constrain deyimi:

  * Department A

  * Department B

  * Department C

* e değişkenini tanımlayan bir SET deyimi.

```
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
```

Sonuçlar

Verileri yüklemesini.

Yeniden yükleme başarısız olur çünkü e değişkeni Department D şeklindedir ve kısıtlama tarafından tanımlanan izin verilen değerler listesinde yer almaz.

Buna karşılık, kısıtlamada Department C olarak e belirtmek, yeniden yüklemenin başarılı olmasına neden olur.

## Örnekler - SET ve LET

Bu örnekler, değişken tanımı sırasında SET veya LET kullanıldığında kısıtlamaların nasıl uygulandığı arasındaki farkları göstermektedir. Tüm örneklerde type gereksinimi uygulayan kısıtlamalar kullanılmaktadır, ancak bu ilkeler genel olarak tüm kısıtlama türleri için geçerlidir.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme SET ile başarısız oldu

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:

* f değişken tanımının number türünde olması gerektiğini belirtmek için bir Constrain deyimi.

* f değişkenini tanımlayan bir SET deyimi.

Komut dosyası

```
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
```

Sonuçlar

Verileri yüklemesini.

Kısıtlama, f değişkeni için bir sayı türü gerektirdiğinden yeniden yükleme başarısız olur. Değişken tanımı sayısal bir ifade içerir ancak SET ifadesi kullanıldığından, tanım metin olarak değerlendirilir.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme LET ile başarısız oldu

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:

* g değişken tanımının text türünde olması gerektiğini belirtmek için bir Constrain deyimi.

* g değişkenini tanımlayan bir LET deyimi.

Komut dosyası

```
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
```

Verileri yüklemesini.

Kısıtlama, g değişkeni için bir metin türü gerektirdiğinden yeniden yükleme başarısız olur. Değişken tanımı sayısal bir ifade içerir ve LET ifadesi kullanılır, bu da tanımın sayı olarak değerlendirilmesine neden olur.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme SET ile başarılı

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:

* h değişken tanımının text türünde olması gerektiğini belirtmek için bir Constrain deyimi.

* h değişkenini tanımlayan bir SET deyimi.

Komut dosyası

```
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
```

Verileri yüklemesini.

Yeniden yükleme başarılı. Kısıtlama, h değişkeni için bir metin türü gerektirir. Değişken tanımı sayısal bir ifade içerir ancak SET ifadesi kullanıldığından, tanım metin olarak değerlendirilir.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Yeniden yükleme LET ile başarılı

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:

* i değişken tanımının number türünde olması gerektiğini belirtmek için bir Constrain deyimi.

* i değişkenini tanımlayan bir LET deyimi.

Komut dosyası

```
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
```

Verileri yüklemesini.

Yeniden yükleme başarılı. Kısıtlama, i değişkeni için bir sayı türü gerektirir. Değişken tanımı sayısal bir ifade içerir ve LET ifadesi kullanılır, bu da tanımın sayı olarak değerlendirilmesine neden olur.

## Örnekler - Çoklu kısıtlamalar

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Minimum ve maksimum değerlerin ayarlanması

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:

* j değişken tanımının 1 ile 5 arasında olması gerektiğini belirtmek için bir Constrain deyimi.

* j değişkenini tanımlayan bir LET deyimi.

Komut dosyası

```
CONSTRAIN j = {"minnum": 1, "maxnum": 5};
LET j = 2;
```

Verileri yüklemesini.

Yeniden yükleme başarılı. f değişkeni 2 olarak değerlendirilir ve bu da kabul edilebilir aralıktadır.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Listelerden hem metin hem de sayı kabul etme

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:

* Kabul edilebilir değerlerden biri olduğu sürece değişkenin metin veya sayısal olmasına izin veren bir Constrain deyimi.

* k değişkenini tanımlayan bir LET deyimi.

Komut dosyası

```
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
```

Verileri yüklemesini.

Yeniden yükleme başarılı. k değişkeni için değer, kabul edilebilir değerler listesinde bulunur. Benzer şekilde, k adresinin 3 olarak belirtilmesi başarılı bir yeniden yükleme ile sonuçlanacaktır.

## Örnek - Değişken tanımı çakışmalarını çözme

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

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

Genel bakış

Bu örnek, uygulamada önceki bir yüklemede zaten tanımlanmış olan bir değişken için kısıtlamalar eklerken değişken tanımı çakışmalarının nasıl ortaya çıkabileceğini göstermektedir.

Komut dosyası 1: Kod değişkenini ayarlama

Veri yükleme düzenleyicisi uygulamasını açın. Şu kodu ekleyin:

```
LET vConflictExample = 'Department C';
```

Verileri yüklemesini. Yeniden yükleme başarılı. vConflictExample değişkeni uygulamada bir komut dosyası değişkeni olarak oluşturulmuştur.

Komut dosyası 2: Önceden yüklenmiş kod değişkeni üzerinde kısıtlama tanımı deneniyor

Komut dosyası 1'i silin. Aşağıdaki komut dosyasını ekleyin:

```
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
```

Verileri yüklemesini.

Yeni kısıtlama ve değer tanımı uyumlu olsa bile, yeniden yükleme bir kısıtlama hatasıyla başarısız olur. Bunun nedeni, komut dosyası 1'in değişkeni zaten bir metin değeriyle uygulamaya yüklemiş olması ve bu değerin hala uygulamada kalıcı olmasıdır. Bu sorunu çözmek için değişken kısıtlamasını ve tanımını sıfırlamamız gerekir. Komut dosyası 3'e bakın.

Komut dosyası 3'ü yükleyin: Kısıtlama ve değer tanımlarını sıfırlama

Komut dosyası 2'yi silin. Aşağıdaki komut dosyasını ekleyin:

```
CONSTRAIN vConflictExample;
LET vConflictExample;

CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;

MockData:
LOAD 
* 
Inline [
id, date, amount
1, 05/30/2025, 23.56
];
```

Verileri yüklemesini.

Yeniden yükleme başarılı. Yukarıdaki senaryo, her biri boş satırlarla ayrılmış üç bölüme ayrılabilir:

* İlk bölüm vConflictExample için kısıtlama ve değer tanımını sıfırlar. Bu, komut dosyası 1 ile uygulamaya yüklenen tanımı kaldırır.

* İkinci bölüm, komut dosyası 2 yüklemesinde başarısız olan yeni kısıtlama ve değer tanımlarını yeniden uygular.

* Üçüncü bölüm, sayfa görünümünü açabilmemiz ve değişken değerini inceleyebilmemiz için sahte veriler ekler (aşağıya bakın).

Sayfa görünümünü düzenleme modunda açın ve the Değişkenler icon iletişim kutusunu açın. vConflictExample değişkeninin başarıyla oluşturulduğunu görebiliriz.

Sayfa görünümündeki Değişkenler iletişim kutusu, vConflictExample için değişken tanımı çakışmasının çözüldüğünü gösterir.

Sayfa görünümündeki Değişkenler iletişim kutusu, vConflictExample için değişken tanımı çakışmasının çözüldüğünü gösterir.

Sayfa görünümündeki Değişkenler iletişim kutusu, vConflictExamplevConflictExample için değişken tanımı çakışmasının çözüldüğünü gösterir. ![Sayfa görünümündeki Değişkenler iletişim kutusu, komut dosyası değişkeninin başarıyla oluşturulduğunu gösterir.](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_script-variable_constrain-conflict-resolved.png)

## Daha fazla bilgi

* [Let](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Let.htm)
* [Set](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Set.htm)
* [Veri yükleme düzenleyicisinde değişkenlerle çalışma](https://help.qlik.com/tr-TR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)