Keine Angst vor Berechnungen in Beziehungen

Berechnungen können eine einschüchternde Wirkung haben. Berechnungen in einer Datenquelle, die Beziehungen verwendet, können noch einschüchternder sein. Aber es gibt keinen Grund dafür, Angst vor Berechnungen in Beziehungen zu haben.

Hinweis: Wenn Sie noch nicht mit den Prinzipien hinter den von Beziehungen verwendeten Datenquellen vertraut sind, kann es hilfreich sein, Keine Angst vor Beziehungen zu lesen, bevor Sie in dieses Thema eintauchen.

Berechnungstypen

Bei einer Berechnung auf Zeilenebene erfolgt für jeden Datensatz in den Daten eine Berechnung. Beispielsweise weist jede Verkaufstransaktion einen Verkaufsbetrag in Form des Preises auf, der möglicherweise um den Rabattprozentsatz angepasst wird: Price * (1- ZN([Discount])). Diese Berechnung erfolgt zeilenweise für jede Transaktion. Die Ergebnisse werden durch eine neue Spalte in der Datenquelle für den Verkaufsbetrag repräsentiert.

Es gibt auch aggregierte Berechnungen. Aggregierte Berechnungen werden auf der Detailebene der Visualisierung berechnet, und ihr Wert hängt von der Struktur der Ansicht ab. Anzahlen sind ein Beispiel für eine aggregierte Berechnung. Der Wert von Count([Title]) hängt davon ab, ob wir die Anzahl nach Format, Autor oder Verkaufstag betrachten.

Weitere Informationen zu Berechnungstypen finden Sie in unserem Blog(Link wird in neuem Fenster geöffnet).

Detailgenauigkeit von Tabellen

Da jede Tabelle in der Tableau-Datenquelle eine eigene Detailgenauigkeit aufweisen kann, ist die Tabelle, mit der eine Berechnung verknüpft ist, von großer Bedeutung. In Tableau war es früher beispielsweise möglich (vor Version 2020.2 und vor Beziehungen), die Anzahl an Datensätzen in der Datenquelle zu zählen, indem eine Berechnung mit dem konstanten Wert 1 erstellt und summiert wurde. 1 wurde jeder Zeile in der Datenquelle zugewiesen, sodass die Summe gleich der Anzahl an Zeilen war.

Nun hätte diese Berechnung jedoch den Wert 1. Es gibt keine globale Detailgenauigkeit für die gesamte Datenquelle, und eine konstante Berechnung befindet sich im nicht zugewiesenen Bereich am unteren Rand des Datenbereichs. Sie hat eine eigene Detailgenauigkeit. Das Summieren von 1 ergibt lediglich 1.

Wie bereits erwähnt gehören Berechnungen mit derselben Detailgenauigkeit wie eine Tabelle (weil sie in der Regel ein Feld aus der Tabelle enthalten) in diese Tabelle im Datenbereich. Beispielsweise wird die Verkettung von Vor- und Nachnamen, um den vollständigen Namen der einzelnen Autoren zu erhalten (d. h., [First Name] + " " + [Last Name]), in der Tabelle "Autor" platziert.

Wenn wir jedoch Felder aus mehreren Tabellen in einer Berechnung verwenden, würde die Berechnung im zugewiesenen Bereich am unteren Rand des Datenbereichs platziert werden. Dies wird als tabellenübergreifende Berechnung auf Zeilenebene bezeichnet. Dafür ist eine Verknüpfung der involvierten Tabellen auf Zeilenebene erforderlich, wodurch die Leistung beeinträchtigt werden kann. (Stellen Sie sicher, dass in den Leistungsoptionen der Beziehung die richtige Kardinalität festgelegt ist).

Zuweisen der Detailgenauigkeit

Da die Detailgenauigkeit einer Tabelle bestimmt, was die Ergebnisse einer Berechnung darstellen, ist es wichtig, Berechnungen in den entsprechenden Tabellen zu verwenden. Mithilfe eines LOD-Ausdrucks vom Typ FIXED kann eine Berechnung in eine bestimmte Tabelle gezogen werden. Das Feld, auf das der Ausdruck festgelegt ist (die Dimensionsdeklaration(Link wird in neuem Fenster geöffnet)), bestimmt die Detailgenauigkeit der Ergebnisse.

Beispiel: Lesereisen von Autoren

F: An wie vielen Lesereiseveranstaltungen nehmen die einzelnen Autoren teil?

A: Diese Zahl sollte zu jedem Autor "gehören", also sollte sie in der Autorentabelle enthalten sein.

  • Lesereiseveranstaltungen von Autoren = {FIXED [Author Name] : SUM([Book Tour Events])}
  • (Sprachlich ausgedrückt ist dies "die Gesamtzahl der mit jedem Autor verknüpften Lesereiseveranstaltungen".)

F: Wie viele Autoren unternehmen keine Lesereisen?

A: Man tendiert leicht zu einer Berechnung wie der folgenden:

  • COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END).
  • (Sprachlich ausgedrückt bedeutet dies "wenn die Lesereiseveranstaltungen gleich null sind, den Namen des Autors zurückgeben. Jeden eindeutigen Autorennamen zählen".)

Dies ist jedoch eine tabellenübergreifende Berechnung auf Zeilenebene, da "Book Tour Events" (Lesereiseveranstaltungen) aus der Tabelle "Series" (Serie) und "Author Name" (Autorenname) aus der Tabelle "Author" (Autor) stammt. Für tabellenübergreifende Berechnungen wie diese werden innere Verknüpfungen verwendet. Demzufolge wird die Zeile aus den Verknüpfungsergebnissen ausgeschlossen, wenn kein entsprechender Wert aus beiden Tabellen vorhanden ist. Dies bedeutet wiederum, dass Tableau etwas zählen soll, was nicht existiert. Beachten Sie, dass dies jedoch eine gute Möglichkeit wäre, wenn sich die beiden Felder in derselben Tabelle befänden. An dieser Berechnung ist an sich nichts aussetzen, außer dass sie nicht zur Struktur der Datenquelle passt.

Stattdessen müssen wir das Vorhandensein oder Fehlen von Lesereiseveranstaltungen für jeden Autor angeben und diese Ergebnisse in der Tabelle "Author" (Autor) erfassen. Sobald die einzelnen Autoren als "Teilnahme an einer Lesereise" gekennzeichnet sind oder nicht, können wir die Anzahl der Autoren bestimmen, die keine Lesereise unternehmen.

  • Teilnehmer einer Lesereise? = IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END
  • (Sprachlich ausgedrückt bedeutet dies: "Anzahl Lesereiseveranstaltungen für jeden Autor zählen".) Wenn diese Anzahl zero ist, den Autor mit "Nein", andernfalls mit "Ja" beschriften. Durch die Benennung des Feldes als "Teilnehmer einer Lesereise?" werden die Werte für "Nein" und "Ja" abgeglichen.)

Nun können wir die Anzahl für "Nein" erfassen und die ursprüngliche Frage beantworten.

Wenn unsere Berechnung Autoren ohne Buchreisen = IF [Book tour participant?]= "No" THEN ([Author Name]) END lautet, erhalten wir eine Liste der Autoren, die keine Lesereisen unternehmen. (Dies können Sie sich wie folgt vorstellen: "für jeden Autor, für den sich die Frage nach der Teilnahme an einer Lesereise verneinen lässt, den Namen des Autors auflisten".)

Wenn unsere Berechnung COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END) lautet, erhalten wir eine numerische Antwort, die sich im nicht zugewiesenen Bereich am unteren Rand des Datenbereichs befindet. Warum? Weil diese Berechnung aggregiert wird.

Bonusfrage:

Ist es auch möglich, die Struktur der Berechnung "Teilnehmer einer Lesereise?" zu verwenden, um die Liste der Autorennamen zurückzugeben? IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END . Wo würde diese Berechnung im Datenbereich erscheinen? Warum? Probieren Sie es in Ihrer eigenen Version von Tableau Desktop aus oder laden Sie diese Arbeitsmappe herunter, um es herauszufinden. (Tableau Desktop 2020.2 oder höher erforderlich. Sobald sie in den Arbeitsmappen vorhanden ist, klicken Sie im Datenbereich mit der rechten Maustaste auf die Berechnung, und wählen Sie "Bearbeiten" aus, um den Berechnungseditor zu öffnen und eine Erklärung in den Berechnungskommentaren anzuzeigen.)

Verwandte Ressourcen

Fühlen Sie sich ein bisschen überfordert und möchten einen Schritt zurück gehen? Sehen Sie sich Keine Angst vor Beziehungen an.

Sind Sie bereit, weiter zu erforschen, wie komplexe Analysen mit Beziehungen durchgeführt werden können? Sehen Sie sich auch Keine Angst vor engeren Beziehungen an.

Weitere Informationen zu den technischen Grundlagen von Beziehungen direkt vom Produktmanagement-Team finden Sie in der Serie über Beziehungen im Tableau-Blog.

Sehen Sie sich auch Video-Podcasts zu Beziehungen von Action Analytics(Link wird in neuem Fenster geöffnet) an, z. B. Why did Tableau Invent Relationships?(Link wird in neuem Fenster geöffnet). Klicken Sie in der Bibliothek(Link wird in neuem Fenster geöffnet) auf "Video-Podcast", um mehr Inhalte anzuzeigen.

Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.