Ana içeriğe geç

İsteğe bağlı şablon uygulamalarda bağlama ifadeleri

Bir şablon uygulamadaki veri bağlamaları, isteğe bağlı bir uygulamaya veri yüklenirken oluşturulan sorguları düzenlemek için karşılık gelen seçim uygulamasından hangi verilerin kullanılacağını belirtir.

Temel ifadeleri bağlama biçimi ($(odag_FIELDNAME)), ifadeleri bağlamanın tek yöntemi değildir. Seçimleri daraltmak veya şablon uygulamanın verileri doğru şekilde yüklemesini sağlamak için diğer önekler kullanılabilir.

Uyarı: İlk olarak On-demand App Generation için Qlik Sense uzantısıyla oluşturulmuş şablon uygulamaların, bir alandan çok sayıda seçim bağlamak amacıyla aşağıda gösterilen yaklaşımı kullanması için değiştirilmesi gerekir.

Kullanılabilir bağlama önekleri

Genel önek biçimi odag[s|o][n][cnt] olup burada:

  • s - yalnızca seçili değerleri dahil et
  • o - yalnızca isteğe bağlı değerleri dahil et
  • n - sayısal sürümü seç, varsayılan olarak tırnak içinde olmadan
  • cnt - gerçek değerler yerine değer sayısını ekle

Aşağıdaki tabloda, kullanılabilir bağlama öneklerinin tüm sürümleri sağlanmaktadır. Örneklerde, seçili değerleri (yeşil değerler) 1,2,3 ve isteğe bağlı seçili değeri (beyaz değer) 4 olan MyField adlı bir alan olduğu varsayılmaktadır.

Bağlama önekleri
Önek Açıklama Örnek Değiştirildiği öğe
odag_ Seçili (yeşil) ve isteğe bağlı (beyaz) değerlerle değiştirilir. Değerlerin metin sürümünü seçer. Bu, dize değerleri için standart önektir. $(odag_MyField) '1','2','3','4'
odagcnt_ Karşılık gelen odag_ bağlamasındaki değer sayısıyla değiştirilir. Bu önek, sorguların optimizasyonu için kullanılır. $(odagcnt_MyField) 4
odagn_

Seçili (yeşil) ve isteğe bağlı (beyaz) değerlerle değiştirilir. Değerlerin sayısal sürümünü seçer. Bu, sayısal değerler için standart önektir.

Not:

Veri modeli, alanın seçili veya isteğe bağlı bir değeri olamayacak şekildeyse ifadede noValue belirtilmelidir. Örneğin: $(odagn_MyField){"noValue":"-99999"}.

Daha fazla bilgi için bkz. Değer alıntı ve sınırlayıcı karakterlerini değiştirme.

$(odagn_MyField) 1,2,3,4
odagncnt_ Karşılık gelen odagn_ bağlamasındaki değer sayısıyla değiştirilir. Bu, sorguların optimizasyonu içindir. $(odagncnt_MyField) 4
odago_

İsteğe bağlı (beyaz) değerlerle değiştirilir. Değerlerin metin sürümünü seçer. Bu, sorguların optimizasyonu içindir.

Büyük veritabanı için optimizasyon.

$(odago_MyField) '4'
odagocnt_ Karşılık gelen odago_ bağlamasındaki değer sayısıyla değiştirilir. Bu, sorguların optimizasyonu içindir. $(odagocnt_MyField) 1
odagon_

İsteğe bağlı (beyaz) değerlerle değiştirilir. Değerlerin sayısal sürümünü seçer. Bu, sorguların optimizasyonu içindir.

Büyük veritabanı için optimizasyon.

$(odagon_MyField) 4
odagoncnt_ Karşılık gelen odagon_ bağlamasındaki değer sayısıyla değiştirilir. Bu, sorguların optimizasyonu içindir. $(odagoncnt_MyField) 1
odags_

Seçili (yeşil) değerlerle değiştirilir. Değerlerin metin sürümünü seçer. Bu, sorguların optimizasyonu içindir.

Büyük veritabanı için optimizasyon.

$(odags_MyField) '1','2','3'
odagscnt_ Karşılık gelen odags_ bağlamasındaki değer sayısıyla değiştirilir. Bu, sorguların optimizasyonu içindir. $(odagscnt_MyField) 3
odagsn_

Seçili (yeşil) değerlerle değiştirilir. Değerlerin sayısal sürümünü seçer. Bu, sorguların optimizasyonu içindir.

Büyük veritabanı için optimizasyon.

$(odagsn_MyField) 1,2,3
odagsncnt_ Karşılık gelen odagsn_ bağlamasındaki değer sayısıyla değiştirilir. Bu, sorguların optimizasyonu içindir. $(odagsncnt_MyField) 3
Not:

Metin sürümlerinde boş değerler filtrelenir. Sayısal sürümlerde sayısal olmayan ve NaN değerleri filtrelenir.

Büyük veritabanı için optimizasyon

odags_ ve odagsn_ önekleri, sorguların optimizasyonu için tasarlanmıştır. Bağlı alanlarda bir seçim olmadığında odag_ tüm değerleri içerirken odags_ ise bir değer içermez. Bazı durumlarda, odags_ ve odagscnt_ öneklerini kullanmak daha verimlidir. Böylece değer kümesinin boş olup olmadığını test edebilirsiniz. Örneğin, MyField içinde bir seçim yapılmadığında, odag_MyField içinde tüm değerler için test yapılmasındansa aşağıdaki daha verimlidir:

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

İsteğe bağlı bir alanda bulunmayan seçim uygulamasından seçilecek alternatif bir alan olduğunda odags_ kullanılamaz. Örneğin, kullanıcı CountryName içinde seçim yaparsa, ancak bağlama ifadesi, CountryCode adlı ilişkilendirilmiş alanda bulunuyorsa odags_ kullanılamaz. Bu durumda bunun yerine odago_ kullanılabilir. odago_ bağlamasında bir değer yoksa bu, tüm değerlerin dahil edileceği veya hiçbir değerin dahil edilmeyeceği anlamına gelebilir.

Sayısal değerleri bağlama

İsteğe bağlı uygulamaya bağlanan veriler, dizeler yerine sayılardan oluştuğunda sayısal alanlardaki alıntı sarmalama davranışını devre dışı bırakmak faydalı olabilir. Örneğin, satış kayıtları sayısal bir DAY_OF_WEEK sütunu içeriyorsa ve seçim uygulaması kullanıcısının DAY_OF_WEEK öğesinin rastgele birleşimlerini seçmesini istiyorsanız, seçim uygulamasını yüklemek için kullanılan toplama sorgusunu, SELECT ve GROUP BY listelerinde DAY_OF_WEEK öğesini içerecek şekilde artırabilirsiniz. DAY_OF_WEEK değerleri seçildiğinde bu değerlerin tırnak işaretleriyle sarmalanırsa, veritabanının dizeden sayısal değerlere otomatik tür dönüştürme işlemini desteklememesi durumunda çalışma zamanı sorgusu hatası oluşabilir.

Bu durumu ele almak için, bağlama ifadesi sonekinin sayısal sürümünü kullanabilirsiniz. Böylece alan bağlaması, seçim uygulamasından dize değerleri yerine sayısal değerlerin kullanılmasını zorlar. Aşağıdaki sayısal sürüm kullanılabilir:

  • odagn_
  • odagon_
  • odagsn_

Sayısal sürümler kullanılarak, seçilen değerleri saklayan ikili değerlerin sayısal kısmından değerler seçilir ve varsayılan olarak değerler tırnak içine alınmaz.

Belirli sayıda seçimi gerekli kılma

Bazı durumlarda, isteğe bağlı uygulamanın belirli bir alan için belirli sayıda veya belirli bir aralık içindeki değerleri içermesini gerekli kılmak gerekebilir. Örneğin, isteğe bağlı uygulamanın sorgusu bir başlangıç ve bitiş tarihi arasındaki tüm satışları almaya yönelik BETWEEN cümlesini içeriyorsa, YEARQUARTER alanının bağlama ifadesi, şurada belirtildiği gibi YEARQUARTER için tam olarak iki değerin seçilmesini gerekli kılan bir son ek söz dizimi [2] içerebilir.

$(odag_YEARQUARTER)[2]

Seçim uygulamasındaki isteğe bağlı uygulama navigasyon noktası, tam olarak iki YEARQUARTER değeri seçilmediği sürece devre dışı kalır. Tam olarak iki YEARQUARTER değerinin seçilmesi gerektiğini belirten bir mesaj görüntülenir.

Seçim miktarı kısıtlamaları, seçim uygulaması ile isteğe bağlı uygulama arasında önkoşul bağlantısı oluşturur. Bu, miktar kısıtlamaları kullanmayan bağlama ifadelerinden farklıdır. Örneğin, şablon uygulamanın kodunda şu durumdaki gibi, miktar kısıtlaması olmayan bir bağlama ifadesi varsa:

$(odag_MYFIELD)

seçim uygulamasının MYFIELD adlı bir alan içermesi veya bu alan yoksa alanın seçili değerlerinin bulunması gibi bir gereklilik yoktur. Seçim uygulaması MYFIELD adlı bir alan içermiyorsa veya kullanıcı bu alandan seçim yapmayı ihmal ederse, isteğe bağlı uygulama navigasyon noktası, kayıt sınırı değeri koşulunu yerine getirmek üzere diğer seçimler yapıldığında da etkinleştirilebilir.

Bununla birlikte bağlama ifadesi şu ise:

$(odag_MYFIELD)[1+]

seçim uygulaması için artık iki gereklilik vardır:

  • Seçim uygulaması MYFIELD adlı bir alan içermelidir.
  • Kullanıcı MYFIELD için en az bir değer seçmelidir.

Bu tür bağlama ifadeleri, şablon uygulama ile kullanılabilecek seçim uygulamalarını sınırladığından dikkatli bir şekilde kullanılmalıdır. Bir şablon uygulamaya bağlanan tüm seçim uygulamalarında bu seçim miktarı gereksinimini uygulamak istediğinizden emin değilseniz, şablon uygulamanın bağlamalarında bu miktar kısıtlamasını kullanmamalısınız.

İsteğe bağlı uygulama hizmeti, veri bağlama işlemini gerçekleştirmek için komut dosyasındaki açıklamalara duyarsız olan bir dize değiştirme yaklaşımı kullanır. Bu, uygulama oluşturulduktan sonra bağlı değerlerin listesini içermesini istemediğiniz açıklamalarda bağlama ifadeleri kullanmamanız gerektiği anlamına gelir.

Diğer miktar kısıtlamaları da olasıdır. Aşağıdaki tabloda seçim miktarı kısıtlamalarının farklı birleşimleri özetlenmektedir.

Seçim miktarı kısıtlamalarının farklı birleşimleri
Kısıtlama düzeni Seçim gerekliliği
$(odag_YEARQUARTER)[2] YEARQUARTER öğesinin tam olarak 2 değeri seçilmelidir.
$(odag_YEARQUARTER)[2-4] YEARQUARTER öğesinin 2 - 4 değeri seçilmelidir.
$(odag_YEARQUARTER)[2+] YEARQUARTER öğesinin en az 2 değeri seçilmelidir.
$(odag_YEARQUARTER)[2-] YEARQUARTER öğesinin en fazla 2 değeri seçilebilir.
Not: Şablon uygulamadaki tüm miktar kısıtlamalarının karşılanıp karşılanmadığına ilişkin denetim, uygulama oluşturma işlemi sırasında gerçekleştirilir. Bir miktar kısıtlaması aşılırsa, uygulama oluşturma isteği reddedilir ve bir hata iletisi görüntülenir.

Değer alıntı ve sınırlayıcı karakterlerini değiştirme

Seçim uygulamasında seçilen bir alana ait bir değerler listesi, şablon uygulamanın koduna eklendiğinde, değerler tek tırnak işareti içine alınır ve virgülle ayrılır. Alıntı ve sınırlayıcı için varsayılan karakterler bunlardır. Bu değerler, her alan için bağlama deyimine eklenen söz diziminde değiştirilebilir. Örneğin:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

Ardından bu yeni değerler, seçim uygulamasından alınan bağlama değerleri listesi formüle edilirken kullanılır. Örneğin, seçili değerler yılın ilk üç ayı ise liste şöyle oluşturulur:

|Ocak|;|Şubat|;|Mart|

Alıntı ve sınırlayıcı karakterlerinin varsayılan değerleri, standart SQL veritabanlarının çoğu için çalışır. Ancak bu karakterler, bazı SQL veritabanlarında çalışmayabileceği gibi NoSQL ve REST dahil olmak üzere birçok dinamik veri kaynağında da çalışmaz. Söz konusu kaynaklar için, bu bağlama ifadesini ekleyerek alıntı ve sınırlayıcı karakterlerini değiştirmeniz gerekir.

Aşağıdaki tabloda, tırnak işareti ve sınırlayıcı karakterlerini değiştirmeye yönelik biçim parametresi açıklanmaktadır.

Biçim parametreleri
Parametre Varsayılan değer Tanım
quote

Metin önekleri için ' (tek tırnak işareti)

sayısal önekler için boş

Her bir değerin önüne ve arkasına eklenir
ayırıcı , (virgül) Tüm değerlerin arasına eklenir
quoteReplace '' (çift tırnak işareti)

Değer boş olmadığında ve tırnak işareti kullanımı boş olmadığında, değerlerin içinde geçen tüm tırnak işaretleri, belirtilen dizeyle değiştirilir.

Not: quoteReplace, odagn_ gibi sayısal önekler için parametre olarak desteklenmez. quoteReplace, sayısal önekler tarafından yoksayılır.
noValue (boş)

Bir alan için seçili bir değer olmadığında, yerine bu değer kullanılır. Seçimdeki belirli bir alan için değer olmadığında bu parametre kullanışlıdır.

Değer, kaynak verilerde mevcut olmayan bir değere ayarlanmalıdır. Sayısal değerler söz konusu olduğunda, örneğin, veritabanındaki tüm değerler pozitifse negatif bir değer kullanın.

Not: Tırnak içine alınmayan değerler için, alanın seçili değerleri boş bir küme olabiliyorsa noValue belirtilmelidir.

Aşağıdaki tablolarda, odag_ ve odagn_ için oluşturulan değerler ve biçim belirtimi açıklanmaktadır. Oluşturulan eklenen değerler, varsayılan VAL1, VAL2 veri değerlerine dayalıdır.

odag_ örnek biçim belirtimleri ve oluşturulan değerler
Biçim belirtimi Açıklama Oluşturulan eklenen değerler
belirtilmedi

' içine alınmış şekilde, tüm değerlerin virgülle ayrılmış listesi.

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Birleştirilmiş değerler VAL1VAL2

{"quote": "X", "delimiter": "Y"}

X içine alınmış ve Y ile sınırlanmış değerler.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} XX içine alınmış ve YY ile sınırlanmış değerler.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} X içine alınmış ve , ile sınırlanmış değerler (varsayılan).  XVAL1X,XVAL2X
{"delimiter": "YY"} ' içine alınmış (varsayılan) ve YY ile sınırlanmış değerler 'VAL1'YY'VAL2'
{"quote": ""} Tırnak içine alınmamış ve , ile sınırlanmış değerler. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

A içine alınmış ve virgül ile sınırlanmış değerler (varsayılan). Alanın içindeki A değerleri, \A ile değiştirilecektir.

Not:

Bu örnekte \, json biçiminde kaçış karakteri olduğundan çift \ olması gerekir.

AV\AL1A,AV\AL2A
odagn_ örnek biçim belirtimleri ve oluşturulan değerler
Biçim belirtimi Açıklama Oluşturulan eklenen değerler
belirtilmedi

Tırnak içine alınmamış değerlerin virgülle ayrılmış listesi. Sayısal değerlerin kullanılacağını unutmayın.

VAL1,VAL2
{"delimiter": "YY"} Tırnak içine alınmamış ve YY ile sınırlanmış değerler VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} odag_ önekine kıyasla quoteReplace parametresi yoksayılır. AVAL1A,AVAL2A

Tek tek değerleri işleme

Alan değerlerinin tek tek işlenmesi gerektiğinde, Values değişkeninde değerler oluşturmak için bir satır içi yöntemi kullanabilir ve Replace veya başka bir fonksiyonla rastgele işlem gerçekleştirebilirsiniz. Aşağıdaki örnekte, yer tutucu değerleriyle Replace kullanılır.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;