Toplama işlevleri
Toplama işlevleri olarak bilinen işlev ailesi, girdi olarak birden çok alan değeri alan ve grup başına tek bir sonuç döndüren işlevlerden oluşur; burada gruplandırma, kod deyiminde bir grafik boyutu veya bir group by cümlesi tarafından tanımlanır.
Toplama işlevleri arasında Sum(), Count(), Min(), Max() ve daha birçok işlev yer alır.
Çoğu toplama işlevi hem veri komut dosyasında hem de grafik ifadelerinde kullanılabilir ancak söz dizimi farklılık gösterir.
Sınırlamalar:
Bu iç toplamalar TOTAL niteleyicisini içermedikçe, toplama işlevinin parametresi diğer toplama işlevlerini içermemelidir. Daha gelişmiş iç içe toplamalar için, belirli bir boyutla birlikte gelişmiş Aggr işlevini kullanın.
Bir varlığı adlandırırken, birden fazla alana, değişkene veya hesaplamaya aynı adı atamaktan kaçının. Aynı adlara sahip varlıklar arasındaki çatışmaları çözmek için katı bir öncelik sırası bulunur. Bu sıra, bu varlıkların kullanıldığı tüm nesnelere veya bağlamlara yansıtılır. Bu öncelik sırası aşağıdaki gibidir:
-
Bir toplama içinde, alanlar değişkenlerden daha önceliklidir. Hesaplama etiketleri toplamalarla alakalı olmadıkları için bunlara öncelik verilmez.
-
Bir toplamanın dışında bir hesaplama etiketinin bir değişkene göre önceliği; değişkenin ise bir alan adına göre önceliği vardır.
-
Ayrıca, bir toplamanın dışında, bir hesaplamanın etiketi hesaplanan bir etiket olmadıkça bu etikete başvurularak yeniden kullanılabilir. Böyle bir durumda, kendi kendine başvurma riskini azaltmak için hesaplamanın önemi düşürülür ve ad her zaman önce bir hesaplama etiketi olarak, sonra bir alan adı olarak, sonra da bir değişken adı olarak yorumlanır.
Bir veri kod dosyasında toplama işlevleri kullanma
Toplama işlevleri yalnızca LOAD ve SELECT deyimleri içinde kullanılabilir.
Grafik ifadelerinde toplama işlevleri kullanma
Bu iç toplamalar TOTAL niteleyicisini içermedikçe, toplama işlevinin parametresi diğer toplama işlevlerini içermemelidir. Daha gelişmiş iç içe toplamalar için, belirli bir boyutla birlikte gelişmiş Aggr işlevini kullanın.
Toplama işlevi, seçim ile tanımlanan olası kayıtlar kümesi üzerinden toplanır. Bununla birlikte, set analizinde set ifadesi kullanılarak alternatif bir kayıt kümesi tanımlanabilir.
Bkz. Set analizi
Toplamaları hesaplama
Toplama, belirli bir tablonun kayıtları üzerinde döngü yaparak, içerdiği kayıtları toplar. Örneğin, Count(<Field>), <Field> öğesinin bulunduğu tablodaki kayıtların sayısını sayar. Yalnızca farklı alan değerlerini toplamak istiyorsanız, Count(distinct <Field>) örneğindeki gibi distinct tümcesini kullanmanız gerekir.
Toplama işlevi farklı tablolardan alanlar içeriyorsa işlevi kurucu alanların tablolarının çapraz ürün kayıtları üzerinde döngü yapar. Bunun performans açısından olumsuz bir yanı vardır ve bu nedenle, özellikle de büyük miktarda veriye sahip olduğunuzda, bu tür toplamalardan kaçınılmalıdır.
Anahtar alanların toplanması
Toplamaların hesaplanma şekli, toplama için hangi tablonun kullanılması gerektiği net olmadığı için anahtar alanları toplayamayacağınız anlamına gelir. Örneğin, <Key> alanı iki tabloyu birbirine bağlıyorsa, Count(<Key>) ifadesinin birinci tablonun kayıt sayısını mı yoksa ikinci tablonun kayıt sayısını mı döndüreceği net değildir
Ancak distinct cümlesini kullanırsanız toplama iyi tanımlanmıştır ve hesaplanabilir.
Bu nedenle, bir toplama işlevi içinde distinct cümlesi olmadan bir anahtar alan kullanırsanız Qlik Sense anlamsız olabilecek bir sayı döndürecektir. Çözüm ya distinct cümlesini ya da anahtarın bir kopyasını (yalnızca tek bir tabloda bulunan bir kopya) kullanmaktır.
Örneğin, aşağıdaki tablolarda ProductID, tablolar arasındaki anahtardır.
Count(ProductID), Products tablosunda (ürün başına yalnızca bir kayıt içerir, ProductID birincil anahtardır) veya Details tablosunda (büyük olasılıkla ürün başına birkaç kayıt içerir) sayılabilir. Farklı ürünlerin sayısını saymak istiyorsanız Count(distinct ProductID) kullanmalısınız. Belirli bir tablodaki satır sayısını saymak istiyorsanız anahtarı kullanmamalısınız.