15.06.2020
Bin da, fertig: Eine Diskussion über Bins in Tableau
Das Erstellen von Bins in Tableau scheint ziemlich unkompliziert zu sein. Klicken Sie mit der rechten Maustaste auf eine Kennzahl und wählen Sie „Erstellen -> Bin“ aus. Fertig. Es gibt jedoch einige Einschränkungen und Fallstricke, die Sie unbedingt verstehen sollten. In diesem Beitrag erkläre ich diese und biete einige Lösungen an, darunter eine versteckte Funktion in Tableau, die Sie meiner Meinung nach sehr praktisch finden werden.
Ich werde verweisen Jonathan Drummey in diesem Blogbeitrag schon mehrmals erwähnt, aber was ist sonst noch neu? Meistens verbinden sich Dinge in Tableau mit Jonathan Drummey Und Joe Mako. Es gibt einige gute Beiträge zum Thema Bins sowie eine großartige Tableau-Arbeitsmappe.
Beginnen wir zunächst mit dieser Blogbeitrag von Jonathan über Mülleimer.
Eine der größten Einschränkungen bei Bins besteht darin, dass Sie beim Erstellen eines Histogramms mithilfe der Bins keine Referenzlinie hinzufügen können. Jonathan und Joe bieten eigene Gleichungen an, mit denen Sie Ihre eigenen Bins erstellen können. Dabei verwenden Sie ein berechnetes Feld als Bin und können dem Histogramm Referenzlinien hinzufügen.
Diese Berechnungen sind gute Lösungen, und obwohl dieser Blogbeitrag aus dem Jahr 2014 stammt, können diese Lösungen auch heute noch verwendet werden.
Nick Hara schrieb dieser hervorragende Weblog-Beitrag mit dem Titel „I’ve Bin All over the place“ (Januar 2019), wo er eine Reihe von Beispielen zeigt und Dieses großartige Tableau-Arbeitsbuch steht zum Obtain bereit.
Lassen Sie uns einige Dinge über Behälter erkunden.
Seien Sie vorsichtig mit Gleitkommazahlen
Eine der Schwierigkeiten bei der Verwendung der Customary-Bins in Tableau tritt beim Binning von Dezimalwerten auf. Dies liegt an Gleitkommaproblemen bei der Verarbeitung der Arithmitik der Funktionen Flooring() oder Ceiling() in Tableau. Dieses Drawback wird in dieser Data Base-Artikel von Tableau, Histogramme zeigen Dezimalwerte in falschen Bins an. Kurz gesagt: Multiplizieren Sie die Dezimalwerte in einer Berechnung mit 100 oder 1.000, um die Dezimalstellen zu entfernen, und legen Sie dann das berechnete Feld in den Papierkorb. Beachten Sie, dass Nick dieses Drawback in seiner oben erwähnten Arbeitsmappe auf diese Weise löst.
So sehen die Behälter in Tableau beispielsweise aus, wenn ich 100 Zahlen von 0,01 bis 1,00 in Schritten von 0,01 nehme und sie mit der Behältergröße 0,05 einteile. Man würde erwarten, dass die Behälter ziemlich gleichmäßig verteilt sind, aber das ist nicht der Fall.
Jetzt nehme ich dasselbe Feld, multipliziere es mit 100 und erstelle einen Behälter mit diesem berechneten Feld und der Behältergröße 5. Wenn wir das tun, erhalten wir die Behälterverteilung, die wir erwarten würden.
Okay, das ist ziemlich unkompliziert, aber es gibt noch andere Probleme, auf die wir stoßen können. Sehen wir uns an, wie diese benutzerdefinierten berechneten Felder für Bins die Werte in diesen Bins verteilen.
Achten Sie bei der Verwendung benutzerdefinierter Berechnungen auf die Bin-Verteilung
Nick hat seine Binning-Lösung ursprünglich für etwas bei der Arbeit entwickelt. Für seinen Blogbeitrag hat er diese Lösung mithilfe der World Indicators-Daten von Tableau Desktop portiert, insbesondere des Felds Inhabitants City, das eine Dezimalzahl ist, die den Prozentsatz der städtischen Bevölkerung in jedem Land über mehrere Jahre angibt. Dies erweist sich als großartiger Anwendungsfall für diese Diskussion, da wir auf beide Probleme stoßen, das Gleitkommaproblem und Probleme mit der Verteilung der Bins bei diesen benutzerdefinierten Berechnungen.
Lassen Sie uns das durchgehen und uns zu einer endgültigen Lösung vorarbeiten. Obwohl dieser Abschnitt lang, sehr detailliert und kompliziert erscheinen magazine, verspreche ich, dass die endgültige Lösung ziemlich einfach und unkompliziert ist (und wir werden auch eine versteckte Funktion in Tableau kennenlernen).
Ich habe Nicks Arbeitsmappe geändert, um die Werte anzuzeigen, aus denen sein Histogramm besteht. Unten sehen Sie das Histogramm und die einzelnen Werte in einem Stamm- und Blattdiagramm (abgeschnitten bei ~30 Zeilen).
Möglicherweise fallen Ihnen sofort einige Probleme mit der Einteilung auf. Erstens beginnt die Einteilung bei 0 bis 5 und die Werte in dieser ersten Einteilung liegen tatsächlich zwischen 5 und 10. Zweitens, und das ist besorgniserregender, gibt es in der zweiten Einteilung Werte, die mit der ersten Einteilung gruppiert werden sollten. Beispielsweise sollte der Wert 0,0910 mit den anderen Werten gruppiert werden, die zwischen 5 und 10 liegen.
Nicks Formel für sein berechnetes Feld:
Berechnetes Feld: Bevölkerungsklasse (Param)
Formel:
((Städtisches Bin)-(DECKEL((Städtische Bevölkerung)*100)%(Städtisches Bin))) + DECKEL((Städtische Bevölkerung)*100 ) – (Städtisches Bin)
Hinweis – (City Bin) ist ein Parameter, den Nick erstellt hat, um die Behältergröße zu ändern
Nehmen wir zwei kleine Änderungen an Nicks Formel vor. Erstens ändern wir die CEILING-Funktion in eine FLOOR-Funktion. Zweitens addieren wir 5 zum Wert der Bins, um sie über einen Bin-Wert zu verschieben, was in diesem Fall einfach bedeutet, dass wir die -(Städtische Mülltonne) aus der Gleichung.
Berechnetes Feld: Bevölkerungsgruppe (Param) überarbeitet
Formel:
((Städtische Bin)-(FLOOR((Städtische Bevölkerung)*100)%(Städtische Bin))) + FLOOR((Städtische Bevölkerung)*100)
Unsere überarbeitete Formel erstellt diese Behälter. Sie ist tatsächlich korrekt und funktioniert als endgültige Lösung.
Wenn wir diese Bins jedoch mit den Standardbins von Tableau vergleichen, wird keine Übereinstimmung festgestellt. Das liegt daran, dass bei den Standardbins von Tableau das zuvor beschriebene Drawback mit Gleitkommazahlen auftritt.
Wenn wir ein berechnetes Feld erstellen, es mit 100 multiplizieren und mit diesem neuen berechneten Feld einen Behälter erstellen, ist dieses Drawback gelöst und die Behälter entsprechen der oben überarbeiteten Berechnung.
Die Standardbehälter funktionieren einwandfrei, aber leider können wir den Standardbehältern keine Referenzlinie hinzufügen, da sie diskret sind. Damit haben wir den Kreis geschlossen. Wir haben die Berechnungsformel korrigiert, um einen kontinuierlichen Behälter zu erstellen, und wir haben die Standardbehälter korrigiert. Beide sind jetzt korrekt, aber die durch das berechnete Feld erstellten kontinuierlichen Behälter sind die einzigen, die die von uns gesuchte Referenzlinie zulassen.
Verwenden einer versteckten Funktion in Tableau: SYS_NUMBIN()
Ich kann mir nicht das Verdienst für die Entdeckung dieser versteckten Funktion anrechnen. Zurück im Juni 2017 kam Jonathan Drummey zu uns ins Büro, um unserem kleinen Staff aus Tableau-Entwicklern und Datenwissenschaftlern ein praxisorientiertes Tableau-Coaching zu bieten.. In einem unserer vielen Gespräche in diesen zwei Tagen erwähnte Jonathan, dass er auf diese Funktion gestoßen sei. Soweit ich mich erinnere, arbeitete er in Tableau, stieß auf ein Drawback und ein seltsames Fehlerfenster erschien. Er sah diese Funktion und beschloss, sie auszuprobieren, und tatsächlich funktionierte sie im Berechnungsfenster. Wir sprachen kurz darüber, wie wir sie verwenden könnten, aber wir gingen einen Schritt weiter, die Zeit verging und ab und zu schaue ich wieder darauf zurück. Nun, wie sich herausstellte, ist es eine großartige Lösung für dieses spezielle Drawback und tremendous einfach zu verwenden.
Die Syntax ist SYS_NUMBIN((Maß), (Bin-Größe))In diesem Fall wäre es SYS_NUMBIN((Städtische Bevölkerung), 0,05)aber wie wir gelernt haben, wird das problematisch sein. Außerdem erstellt diese Funktion ganzzahlige Bins, die bei 0 beginnen, dann bei 1 usw. Daher werden wir ein paar kleinere Anpassungen vornehmen. Um das Drawback mit den Gleitkommazahlen zu lösen, verwenden wir das Feld, das die Kennzahl mit 100 multipliziert.
Um die Bins von (0,1,2…) auf (5,10,15) zu ändern, multiplizieren wir die Bins mit der Bin-Größe und addieren dann die Bin-Größe. Beispiel: (0*5) + 5 = 5 für das erste Bin. (1*5) + 5 = 10 für das zweite Bin und so weiter. Um die Bins anzupassen, die Tableau automatisch erstellen würde, würde es folgendermaßen aussehen: (SYS_NUMBIN((Maß), (Bin-Größe)) * (Bin-Größe)) + (Bin-Größe). In diesem Fall wäre die neue Formel:
Berechnetes Feld: Städtische Bevölkerung * 100 (SYS_NUMBIN)
Formel:
(SYS_NUMBIN((Städtische Bevölkerung * 100),(Städtische Bin)) * (Städtische Bin)) + (Städtische Bin)
Darüber hinaus können wir die Funktion SYS_NUMBIN() verwenden, um einige der von Nick erstellten Gleichungen zu vereinfachen. Er hatte beispielsweise ein großartiges Beispiel für eine Verteilung mit einem Rand und variabler Breite. Seine Formel sieht folgendermaßen aus:
Berechnetes Feld: Gesundheitsbehälter-Schwanz (variabel)
Formel:
WENN (Gesundheitserfahrung/Kopf)>=(Gesundheitsschwelle) DANN (Gesundheitsschwelle)
ANDERS
WENN (Gesundheitsbehälter)>=(Gesundheitserfahrung/Kopf) DANN
(((Gesundheitsbehälter)*.1)-(DECKEL((Gesundheitserfahrung/Kopf))%((Gesundheitsbehälter)*.1)))
+ CEILING((Gesundheitserfahrung/Kopf))-(Gesundheitsbehälter)*.1
SONST ((Gesundheitsbehälter)-(DECKEL((Gesundheitserfahrung/Kopf))%(Gesundheitsbehälter)))
+ CEILING((Gesundheitserfahrung/Kopf))-(Gesundheitsbehälter)
ENDE
ENDE
Verwendung der SYS_NUMBIN() Funktion können wir einfach Folgendes tun:
Berechnetes Feld: Gesundheitsbehälterende (variabel) (SYS_NUMBIN)
Formel:
WENN (Gesundheitserfahrung/Kopf)>=(Gesundheitsschwelle) DANN (Gesundheitsschwelle)
ANDERS
WENN (Gesundheitsbehälter)>=(Gesundheitserfahrung/Kopf)
DANN (SYS_NUMBIN((Gesundheitserfahrung/Kopf),(Gesundheitsbehälter)*.1) * (Gesundheitsbehälter)*.1)
SONST (SYS_NUMBIN((Gesundheitserfahrung/Kopf),(Gesundheitsbehälter)) * (Gesundheitsbehälter))
ENDE
ENDE
Dies führt zu genau derselben Verteilung:
Weitere Hinweise zu SYS_NUMBIN()
Hier sind nur einige weitere Dinge, die wir mit kontinuierlichen Bins in Tableau tun können.
In diesem speziellen Fall bestand das Ziel in einem kontinuierlichen Behälter, da wir eine Referenzlinie hinzufügen wollten. Sie können Ihrem in Behälter unterteilten Histogramm jedoch auch ein Referenzband, ein Verteilungsband oder ein Boxplot hinzufügen.
Da es sich um eine benutzerdefinierte Berechnung handelt, können Sie den Behälter in einem berechneten Feld verwenden. Sie können ihn beispielsweise mit Parameteraktionen, festgelegten Aktionen oder anderen Berechnungen kombinieren, um den Behältern eine Farbe zuzuweisen.
Legen Sie die Breite der Bins ganz einfach mithilfe anderer Regeln fest. Das ist nichts Neues. Das machen die Leute schon seit Jahren, aber jetzt ist es ein bisschen einfacher. Die Freedman-Diaconis-Regel zum Bestimmen der Bin-Breite für eine kontinuierliche Variable lautet beispielsweise (2 * (IQR/n^(1/3))), wobei IQR der Interquartilsabstand und n die Anzahl der Datensätze ist. Wir können ganz einfach mithilfe der Freedman-Diaconis-Regel ein berechnetes Feld erstellen und es dann einfach in die SYS_NUMBIN()-Funktion für die Bin-Größe einfügen.
Berechnetes Feld: Freedman-Diaconis-Behältergröße
Formel:
{ 2 * ( (PERCENTILE((Städtische Bevölkerung * 100), 0,75) – PERCENTILE((Städtische Bevölkerung * 100), 0,25)) / POWER(Anzahl((Anzahl der Datensätze)), 1/3) ) }
Berechnetes Feld: Städtische Bevölkerung * 100 (SYS_NUMBIN mit FD)
Formel:
(SYS_NUMBIN((Städtische Bevölkerung * 100),(Freedman-Diaconis-Behältergröße)) * (Freedman-Diaconis-Behältergröße)) + (Freedman-Diaconis-Behältergröße)
Es gibt eine Reihe von Formeln, die zur Bestimmung der Breite der Behälter verwendet werden können (weitere Beispiele finden Sie hier). Hinweis – Die Formel, die Tableau standardmäßig zur Ermittlung der Anzahl der Bins verwendet, lautet Anzahl der Bins = 3 + log2(n) * log(n) Wo N ist die Anzahl der unterschiedlichen Zeilen in der Tabelle. Die Größe jedes Bins wird bestimmt, indem die Differenz zwischen dem kleinsten und dem größten Wert durch die Anzahl der Bins geteilt wird.
Hinweis – Es scheint, dass SYS_NUMBIN(), selbst wenn es als diskrete Dimension verwendet wird, die Datenverdichtung nicht wie ein typischer Bin aktiviert. Das ist sinnvoll, da wir den Pillentyp von einem Bin in eine diskrete Dimension konvertiert haben und letztere die Datenverdichtung nicht aktiviert (lesen Sie mehr über Datenverdichtung durch Domänenvervollständigung und Domänenauffüllung hier).
Keiner dieser Anwendungsfälle ist neu, da wir andere Gleichungen (von Jonathan Drummey, Joe Mako, Nick Hara und anderen) verwenden könnten, um kontinuierliche Bins zu erstellen. Ich finde jedoch, dass die Funktion SYS_NUMBIN() viel einfacher zu merken ist, daher hoffe ich, dass Sie diese versteckte Funktion und diese Informationen beim Erstellen von Bins in Tableau nützlich finden. Unten finden Sie eine Tableau Public-Visualisierung mit all diesen Beispielen, die Sie herunterladen und erkunden können.