Es kommt sehr häufig vor, dass wir in unseren Tabellen ein paar Drill-Downs verwenden, und wir wollen den Durchschnitt der Indikatoren auf verschiedenen Ebenen berechnen.

Es wird empfohlen, sich mit den Funktionen memberValue und crossValue vertraut zu machen, bevor Sie mit diesem Tutorial fortfahren.

In der folgenden Tabelle sehen Sie zwei Drill-down-Ebenen () (Mitarbeitername und Produkt). Das durchschnittliche Rating berechnet die durchschnittliche Bewertung für diesen Mitarbeiter für dieses Produkt.

Sie können jedoch die durchschnittliche Bewertung des Mitarbeiters für ein Produkt mit der gesamten Mitarbeiterbewertung für das gleiche Produkt als Benchmark vergleichen, wie sie im Avg. Benchmark-Spalte. Dies könnte als bedingte Formatierung hinzugefügt werden, so dass wir, wenn die durchschnittliche Bewertung des Mitarbeiters für ein Produkt höher ist als die gesamte Bewertung des Mitarbeiters für dieses Produkt, es als grün markieren und dort einen oberen Pfeil anzeigen können.

Hier ist, wie Sie dies berechnen können.

if(!equals(substringBefore(memberValue(), ' ') ,'Product')) { 
  return ''; 
} else { 
  filter("L_PRODUCT in ('" + memberValue() + "')") {crossValue('CUBE_DAILY_CALLS.DAILY_CALLS','M_RATING@AVG')}; 
}

Es wird empfohlen, sich mit der crossValue-Formel vertraut zu machen, bevor Sie mit diesem Tutorial fortfahren. Da crossValue keine Drill-Downs in der Kontextansicht durchführt.

In dieser Tabelle unten wird nun das Produkt als erste Ebene der Drill-Downs platziert, und dann ist der Mitarbeitername die zweite Ebene. Durchschnittlicher Benchmark ist immer noch der gesamte Mitarbeiterdurchschnitt am Produkt. Wenn Sie die Reihenfolge der Drill-Downs ändern, wird die Berechnung von *Avg. Benchmark" etwas anders.

Der Code ist wie folgt:

double benchmark = 0; 
if(equals(substringBefore(memberValue(), ' '), 'Product') 
   || isBlank(memberValue())) { 
  benchmark = M_RATING@AVG; 
}else { 
  benchmark = prev('M_RATING@AVG',1); 
} 

return benchmark

Nächste Schritte