Tableau içerisinde hesaplama yazarken en sık karşılaştığım hatalardan biri ;
Can not mix aggregate and non-aggregate comparisons or results in if expressions
Kısaca tek satırdaki bir veriyi kontrol edip, birden fazla verinin işlem sonucuyla karşılaştırılamadığını ifade ediyor.
Örneğin;
if [Profit]<0 then 0 else SUM([Profit]) end
Koda baktığınızda tek hücredeki Profit değeri 0’dan küçükse 0, geri kalan değerlerde sum(Profit) değerini göster diyoruz, ama tabii ki Tableau bu yazıma üstteki hatayı veriyor. Bunu düzeltmek oldukça basit. Konu ölçütler olduğunda non-aggregate olan alanı yani tek satırlık kontrol yaptığımız alanı aggregate alan haline getirirsek sorun çözülüyor. Yani kod aşağıdaki gibi olursa hata almıyor olacaksınız.
if SUM([Profit])<0 then 0 else SUM([Profit]) end
Ölçütlerde çözüm bulmak kolay ama işin içinde boyutlar varsa yapılması gerekeni bilmediğinizde baş ağrıtıcı bir soruna dönüşebiliyor. Yeni örnek kodumuz aşağıdaki gibi olsun.
Tabii ki yine aynı hatayı alıyor ve hesaplamanızı çalıştıramıyorsunuz. Doğal olarak Region alanının ortalamasını ya da toplamını alamıyorsunuz. Bu tip hesaplamaları aggregate haline dönüştürmek için Tableau’ da ATTR() fonksiyonunu kullanabilirsiniz. Yani hesaplamayı aşağıdaki şekilde dönüştürdüğünüzde hesaplamanız hata almıyor olacak;
if ATTR([Region])="West" then SUM([Sales]) else SUM([Profit]) end
Comments