Tabloyu birleştiren anahtar alanın önemliliği yüksek ise, yani çok sayıda tekil değer içeriyorsa, WHERE key_field IN cümlesi çok sayıda değer içerebileceğinden, QlikView içinde bir seçim çok büyük bir SQL deyimi meydana getirebilir. Bu durumda, olası bir alternatif çözüm QlikView'nin alt sorgular oluşturmasına izin vermektir.
Bunu göstermek için, ürünler tablosunun (ProductTable) bir satış emri tablosuna (SalesOrderDetail) bağlı olduğu (ProductID ürün kimliği kullanımıyla) ve iki tablonun da Direct Discovery modunda bulunduğu bir örnek kullanıyoruz.
Boyut olarak OrderMonth ve hesaplama olarak Sum(Subtotal) içeren bir grafik ve Size seçimi için de bir filtre kutusu oluşturuyoruz.
Senaryo 1: Düşük önemlilik
Bu senaryoda, ürün tablosu az sayıda (266) tekil ürün içermektedir. Size içinde bir seçim yaparsak, Direct Discovery ilgili verileri döndürmek için, seçilen boyut ile eşleşen ürün kimliklerini (bu örnekte 20 ürün) içeren WHERE ProductID IN cümlesini kullanarak bir SQL deyimi oluşturur.
Oluşturulan SQL şuna benzer:
Senaryo 2: Alt sorguları kullanma
Aynı örnekte yüksek sayıda (örneğin, 20.000) tekil ürün olursa, bir boyut filtresi (örneğin, Size) seçildiğinde, binlerce ürün kimliği içeren WHERE ProductID IN cümlesiyle bir SQL deyimi oluşturulması gerekir. Sonuçta oluşan deyim, sınırlamalar veya bellek ya da performans sorunları nedeniyle veri kaynağı tarafından işlenemeyecek kadar büyük olabilir.
Çözüm, bunun yerine DirectEnableSubquery'nin true olarak ayarlanmasıyla QlikView uygulamasının alt sorgular oluşturmasına izin vermektir. Oluşturulan SQL deyimi şöyle görünebilir:
WHERE ProductID IN cümlesini boyutu artık, seçimden kaynaklanan anahtarların sayısına bağımlı değildir.
Alt sorguları kullanırken aşağıdaki sınırlamalar geçerlidir:
- Alt sorgu söz dizimi yalnızca, başka bir tablodan gelen verileri kullanarak bir grafiğe filtre uygulamayı gerektiren verileri seçtiğinizde çağrılır.
- Burada belirleyici faktör anahtarların sayısı değil, anahtarların içindeki veri miktarıdır.
- Alt sorgular ancak, ilgili tüm tablolar Direct Discovery modunda ise çağrılabilir. Bellek modunda bulunan bir tablodan veriler kullanarak grafiği filtrelerseniz, bir IN cümlesi oluşturulacaktır.