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.
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"]
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 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.
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 bkz. Değişken kısıtlamalarını tanımlamak için geliştirici alternatifleri.
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 olsun) kısıtlamalara tabi olacaktır.
Değişken kısıtlamalarını genel API aracılığıyla tanımlamak için, QlikEngine JSON API'sindeki GenericVariableConstraints özelliğini kullanın: GenericVariableProperties (yalnızca İngilizce).
Ö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:
Constrain değişken tanımının a türünde olması gerektiğini belirtmek için bir number deyimi.
LET değişkenini tanımlayan bir a 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
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:
Constrain değişken tanımının maksimum 3000 değerine sahip olabileceğini belirtmek için bir b deyimi.
LET değişkenini tanımlayan bir b 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
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:
Constrain değişken tanımının minimum 3000 değerine sahip olabileceğini belirtmek için bir b deyimi.
LET değişkenini tanımlayan bir c 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
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:
Constrain için değişken tanımının sayısal olması ve 2, 3 veya 4 olması gerektiğini belirten bir d deyimi.
LET değişkenini tanımlayan bir d 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
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:
Constrain için değişken tanımının aşağıdaki metin değerlerinden biri olması gerektiğini belirten bir e deyimi:
Department A
Department B
Department C
SET değişkenini tanımlayan bir e 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 e olarak Department C 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:
Constrain değişken tanımının f türünde olması gerektiğini belirtmek için bir number deyimi.
SET değişkenini tanımlayan bir f 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.
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:
Constrain değişken tanımının g türünde olması gerektiğini belirtmek için bir text deyimi.
LET değişkenini tanımlayan bir g 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.
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:
Constrain değişken tanımının h türünde olması gerektiğini belirtmek için bir text deyimi.
SET değişkenini tanımlayan bir h 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.
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:
Constrain değişken tanımının i türünde olması gerektiğini belirtmek için bir number deyimi.
LET değişkenini tanımlayan bir i 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
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:
Constrain değişken tanımının 1 ile 5 arasında olması gerektiğini belirtmek için bir j 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.
LET değişkenini tanımlayan bir k 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
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 öğesini 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. Şu kodu 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