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.
"number" sayısal bir tür belirtir.
CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"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.
CONSTRAIN vExample = {"maxnum": 5000}
"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.
CONSTRAIN vExample = {"minnum": 250}
"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]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"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"]
İ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'sindekivariables ö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
Uygulamaya belirli bir ada sahip bir kod 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.
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 bk. 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 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 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.
Örnek - type
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ükleyin.
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
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ükleyin.
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
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ükleyin.
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
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ükleyin.
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
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ükleyin.
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.
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ükleyin.
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.
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ükleyin.
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.
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ükleyin.
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.
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ükleyin.
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
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.
Yeniden yükleme başarılı. f değişkeni 2 olarak değerlendirilir ve bu da kabul edilebilir aralıktadır.
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ükleyin.
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
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ükleyin. Yeniden yükleme başarılı. vConflictExample değişkeni uygulamada bir kod 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ükleyin.
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: