Çıplak alan referansları
Alan bir toplama işlevi içine alınmadığında çıplak alan olarak değerlendirilir.
Çıplak alan referansı, muhtemelen çeşitli değerler içeren bir dizidir. Bu durumda Qlik Sense, bu değerlerden hangisini istediğinizi bilmeden bunu NULL olarak değerlendirir.
Her zaman ifadenizde bir toplama işlevi kullanın.
İfadenizin doğru bir şekilde değerlendirilmediğini fark ederseniz bir toplama işlevi bulunmaması olasılığı yüksektir.
Bir ifadedeki alan referansı, değerler dizisidir. Örneğin:
Tek değere daraltmak için Invoice Date alanını bir toplama işlevi içine almalısınız.
İfadenizde bir toplama işlevi kullanmazsanız Qlik Sense, varsayılan olarak Only() işlevini kullanır. Alan referansı birden fazla değer döndürürse Qlik Sense bunu NULL olarak yorumlar.
If() işlevini kullanarak fatura tarihlerini bölme
If() işlevi çoğu zaman koşullu toplamalar için kullanılır. İşlevde sağlanan koşulun True veya False değeri vermesine bağlı olarak bir değer döndürür.
Uygulamanın içinde Naked field references sayfasında, Using If() on Invoice dates başlıklı bir tablo bulacaksınız.
Aşağıdakileri yapın:
-
Using If() on Invoice dates başlıklı mevcut tabloyu seçin.
Özellikler paneli açılır. - Sütun ekle'ye tıklayın ve Hesaplama'yı seçin.
- simgesine tıklayın.
İfade düzenleyicisi açılır. - Şunları girin: If( [Invoice Date]>= Date(41323), 'After', 'Before' )
- Uygula'ya tıklayın.
Bu ifade, Invoice Date değerinin, 2/18/2013 tarihinden önce olup olmadığını test eder ve bu tarihten önceyse 'Before' değerini döndürür. Tarih, 2/18/2013 referans tarihiyle aynı veya bu tarihten sonraysa 'After' döndürülür. Referans tarih, 41323 tamsayı değeri olarak ifade edilir.
Daha fazla bilgi için bk. if kodu ve grafik işlevi
Çıplak alan referanslarını önleme
İlk bakışta bu ifade doğru görünüyor:
If([Invoice Date]>= Date(41323) 'After', 'Before')
Fatura tarihlerini referans tarihin ardından değerlendirmeli, 'After' veya 'Before' öğesini döndürmelidir. Ancak Invoice Date bir çıplak alan referansıdır, toplama işlevi yoktur ve birkaç değerden oluşan bir dizi olarak bunu NULL olarak değerlendirecektir. Önceki örnekte, tablomuzda Date değeri başına yalnızca bir Invoice Date vardı; bu nedenle ifade doğru hesaplamayı yaptı.
Şimdi benzer bir ifadenin farklı bir boyut değeri altında nasıl hesaplama yaptığına ve çıplak alan referansı sorununun nasıl çözüleceğine göz atalım:
If() işlevinde çıplak alan referanslarını önleme
Öncekine benzer bir ifade kullanacağız:
If([Invoice Date]>= Date(41323), Sum(Sales))
Bu defa işlev, referans tarihten sonraki satışları toplar.
Uygulamanın içinde Naked field references sayfasında, Sum(Amount) başlıklı bir tablo bulacaksınız.
Aşağıdakileri yapın:
- Mevcut Sum(Amount) tablosunu seçin.
Özellikler paneli açılır. - Sütun ekle'ye tıklayın ve Hesaplama'yı seçin.
-
simgesine tıklayın.
İfade düzenleyicisi açılır. - Şunları girin: If( [Invoice Date]>= 41323, Sum(Sales) )
- Uygula'ya tıklayın.
Her yıl için, referans tarihten sonra gelen bir fatura tarihleri dizisi vardır. İfademizde toplama işlevi eksik olduğundan ifademiz NULL değerini verir. Doğru bir ifade, If() işlevinin ilk parametresinde Min() veya Max() gibi bir toplama işlevini kullanmalıdır:
If(Max([Invoice Date])>= Date(41323), Sum(Sales))
Aşağıdakileri yapın:
- Sütun ekle'ye tıklayın ve Hesaplama'yı seçin.
-
simgesine tıklayın.
İfade düzenleyicisi açılır. - Şunları girin: If( [Invoice Date]>= Date(41323), Sum(Sales) )
- Uygula'ya tıklayın.
Alternatif olarak If() işlevi, Sum() işlevinin içine koyulabilir:
Sum(If([Invoice Date]>= Date(41323), Sales) )
Aşağıdakileri yapın:
- Sütun ekle'ye tıklayın ve Hesaplama'yı seçin.
-
simgesine tıklayın.
İfade düzenleyicisi açılır. - Şunları girin: Sum( If([Invoice Date]>= Date(41323), Sales ) )
- Uygula'ya tıklayın.
Sondan bir önceki ifadede If() işlevi, boyut değeri başına bir defa değerlendirildi. Son ifadede bu, ham verilerde her satır için bir defa değerlendirilir. İşlevin değerlendirilme şeklindeki farklılık, sonuçların farklı olmasına neden olur ancak her ikisi de bir yanıt döndürür. Birinci ifade NULL değerini verir. Yukarıdaki resimde, referans tarih olarak 2/18/2013 tarihi kullanılarak ifadeler arasındaki fark gösterilmektedir.