Ana içeriğe geç

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 kod dosyasında hem de grafik ifadelerinde kullanılabilir, ancak söz dizimi farklılık gösterir.

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 ve set ifadeleri

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.

Ürünler ve Ayrıntılar tabloları arasındaki ProductID anahtarı

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.