Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage

Bei den meisten Datenbanken können Sie eine Verbindung mit einer bestimmten Abfrage herstellen und nicht mit dem gesamten Datensatz. Da jede Datenbank eine leicht unterschiedliche SQL-Syntax aufweist, kann sich die benutzerdefinierte SQL für die Verbindung mit einer Datenbank von der benutzerdefinierten SQL für die Verbindung mit einer anderen Datenbank unterscheiden. Die Verwendung von benutzerdefinierter SQL kann jedoch nützlich sein, wenn Sie die erforderlichen Informationen genau kennen und mit dem Erstellen von SQL-Abfragen vertraut sind.

Obwohl benutzerdefinierte SQL aus verschiedenen häufigen Gründen genutzt wird, können Sie benutzerdefinierte SQL verwenden, um Ihre Daten in unterschiedlichen Tabellen zu vereinen, Felder für datenbankübergreifende Vereinigungen umzuwandeln, die Größe Ihrer Daten zu Analysezwecken zu verringern oder neu zu strukturieren usw.

Bei Excel- und Textdatei-Datenquellen steht diese Option nur in Arbeitsmappen, die mit einer Version vor Tableau Desktop 8.2 erstellt wurden, oder dann zur Verfügung, wenn Tableau Desktop unter Windows mit einer älteren Verbindung verwendet wird. Zum Herstellen einer Verbindung zu Excel- oder Textdateien über eine ältere Verbindung stellen Sie eine Verbindung zur Datei her. Klicken Sie dazu im Dialogfeld "Öffnen" auf das Dropdown-Menü Öffnen, und wählen Sie die Option Über ältere Verbindung öffnen aus.

WICHTIG: Ab Tableau 2019.1 können Sie keine neuen Excel- oder Textdateiverbindungen vom alten Typ mehr herstellen. Bereits vorhandene Arbeitsmappen, die mit diesen alten Verbindungen erstellt wurden, funktionieren weiterhin bis zur Einführung der Version 2019.4. Dann wird geplant, die gesamte Unterstützung alter Verbindungen einzustellen. Im Dokument Alternativen zur alten Verbindung der Tableau Community finden Sie Alternativen zur Verwendung der alten Verbindung.

Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage

  1. Nachdem Sie die Verbindung zu den Daten hergestellt haben, doppelklicken Sie auf der Datenquellenseite auf Neue benutzerdefinierte SQL.

  2. Geben Sie die Abfrage in das Textfeld ein, bzw. fügen Sie diese ein.

  3. OK, wenn Sie fertig sind.

Nachdem Sie eine Verbindung mit den Daten hergestellt haben, werden im Datenraster der Seite "Datenquelle" nur die relevanten Felder aus der benutzerdefinierten SQL-Abfrage angezeigt.

Beispiele für benutzerdefinierte SQL-Abfragen

Vertikales Kombinieren Ihrer Tabellen (vereinigen)

Wenn Sie Daten an andere Daten anhängen müssen, können Sie die Option zur Gesamtverknüpfung direkt in Tableau verwenden. Es kann vorkommen, dass Ihre Datenbank diese Option nicht unterstützt. In solchen Fällen können Sie stattdessen benutzerdefinierte SQL verwenden.

Angenommen, Sie verfügen über die folgenden beiden Tabellen: November und Dezember

November Dezember

Mithilfe der folgenden benutzerdefinierten SQL-Abfrage können Sie die zweite Tabelle für den Dezember an die erste Tabelle für den November anhängen:

SELECT * FROM November UNION ALL SELECT * FROM December

Das Abfrageergebnis sieht im Datenraster folgendermaßen aus:

Weitere Informationen zur Vereinigungsoption finden Sie unter Vereinigen von Daten.

Ändern des Datentyps eines Feldes zum Durchführen einer datenbankübergreifenden Verknüpfung

Wenn Sie zwei Tabellen verknüpfen möchten, müssen die zu verknüpfenden Felder den gleichen Datentyp aufweisen. In Fällen, in denen sich der Datentyp der Felder unterscheidet, können Sie mithilfe von benutzerdefinierter SQL den Datentyp des Feldes vor der Verknüpfung ändern (konvertieren).

Angenommen, Sie möchten zwei Tabellen, d. h. die Haupttabelle und die untergeordnete Tabelle, mithilfe der Felder "Stamm" und "ID" verknüpfen. Bei dem Stammfeld handelt es sich um einen Nummerntyp, und bei dem ID-Feld handelt es sich um einen Zeichenfolgentyp. Sie können über die folgende benutzerdefinierte SQL-Abfrage den auf "Stamm" festgelegten Datentyp in eine Zahl oder Zeichenfolge ändern, damit Sie die Haupt- und untergeordneten Tabellen mithilfe der Felder "Stamm" und "ID" verknüpfen können.

SELECT [Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]
FROM [Main]

Im Ergebnis dieser Abfrage wird das ursprüngliche Stammfeld und das in eine Zeichenfolge umgewandelte Stammfeld angezeigt.

Weitere Informationen zu Verknüpfungen und datenbankübergreifenden Verknüpfungen finden Sie unter Verknüpfen Ihrer Daten.

Verringern der Größe Ihrer Daten

Bei der Arbeit mit sehr großen Datensätzen ist es empfehlenswert, als Erstes die Größe des Datensatzes zu verringern, denn so sparen Sie Zeit bei der Arbeit mit diesen Daten.

Beispiel: Sie verfügen über eine große Tabelle mit dem Namen "FischerIris". Über die folgende benutzerdefinierte SQL-Abfrage können Sie die angegebenen Spalten und Datensätze abfragen und auf diese Weise die Größe des Datensatzes verringern, mit dem Sie von Tableau aus eine Verbindung herstellen.

SELECT
[FischerIris].[Species] AS [Species],
[FischerIris].[Width] AS [Petal Width],
COUNT([FischerIris].[ID]) AS [Num of Species]
FROM [FischerIris]
WHERE [FischerIris].[Organ] = 'Petal'
AND [FischerIris].[Width] > 15.0000
GROUP BY [FischerIris].[Species], [FischerIris].[Width]

Umstrukturieren Ihrer Daten (Pivot)

In manchen Fällen arbeiten Sie ggf. mit einer Tabelle, für die vor der Analyse eine Umstrukturierung erforderlich ist. Obwohl solche Aufgaben mithilfe von Optionen wie beispielsweise der Pivot-Option direkt in Tableau durchgeführt werden können, bietet Ihre Datenbank dafür unter Umständen keine Unterstützung. In diesem Fall können Sie stattdessen benutzerdefinierte SQL verwenden.

Angenommen, Ihnen liegt die folgende Tabelle vor:

Verwenden Sie die folgende SQL-Abfrage zum Ändern der Struktur und für die Optimierung der Daten zur Analyse in Tableau:

SELECT Table1.Season ID AS [Season ID],
Table1.Items - Don't like AS [Quantity],
"Don't Like" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table.Items - Defective AS [Quantity],
"Defective" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Too big AS [Quantity],
"Too Big" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS Season ID,
Table1.Items - Too small AS [Quantity]
"Too Small" AS [Reason]
FROM Table1

Das Abfrageergebnis sieht im Datenraster folgendermaßen aus:

Weitere Informationen zur Pivotoption finden Sie unter Pivotieren von Daten von Spalten in Zeilen.

Kombinieren (Verknüpfen) und Aggregieren Ihrer Daten

Wenn Sie Tabellen kombinieren und Ihre Daten aggregieren müssen, können Sie sowohl eine Verknüpfungsoption als auch einen Standardaggregationstyp direkt in Tableau verwenden. In manchen Fällen ist stattdessen ggf. die Verwendung von benutzerdefinierter SQL erforderlich.

Angenommen, Sie verfügen über die folgenden beiden Tabellen: Aufträge und Anbieter

Aufträge Anbieter

Über die folgende benutzerdefinierte SQL-Abfrage können Sie die Gesamtanzahl der Aufträge ermitteln und die Verknüpfung links für die Tabellen "Aufträge" und "Anbieter" durchführen:

SELECT Vendors.Name,COUNT(Orders.Order) AS Number Of Orders
FROM Orders
LEFT JOIN Vendors
ON Orders.VendorID=Vendors.VendorID
GROUP BY Name;

Das Ergebnis der Abfrage sieht wie folgt aus:

Weitere Informationen zu Verknüpfungen finden Sie unter Verknüpfen Ihrer Daten.

Es werden Fehler beim Duplizieren von Spalten referenziert.

Wenn die benutzerdefinierte SQL-Abfrage auf doppelte Spalten verweist und Sie eine dieser Spalten zu Analysezwecken in Tableau verwenden, treten unter Umständen Fehler auf. Dies kann auch eintreten, wenn die Abfrage gültig ist. Angenommen, Sie verwenden die folgende Abfrage:

SELECT * FROM authors, titleauthor WHERE authors.au_id = titleauthor.au_id

Die Abfrage ist gültig, aber das Feld au_id ist mehrdeutig, da es in diesem Fall sowohl in der Tabelle "authors" als auch in der Tabelle "titleauthor" enthalten ist. Tableau stellt eine Verbindung für die Abfrage her, aber es tritt immer ein Fehler auf, wenn Sie das Feld au_id verwenden möchten. Das liegt daran, dass Tableau nicht weiß, auf welche Tabelle Sie verweisen.

Hinweis: Als Best Practice hat sich bewährt, Spaltenaliasse in einer benutzerdefinierten SQL-Abfrage wenn möglich mit einer AS-Klausel zu definieren. Dies hängt damit zusammen, dass jede Datenbank über eigene Regeln hinsichtlich der automatischen Erzeugung eines Spaltennamens verfügt, wenn kein Alias verwendet wird.

Bearbeiten einer benutzerdefinierten SQL-Abfrage

Gehen Sie wie folgt vor, um eine benutzerdefinierte SQL-Abfrage zu bearbeiten:

  1. Bewegen Sie auf der Datenquellenseite im Arbeitsbereich den Mauszeiger über die benutzerdefinierte SQL-Tabelle, bis der Pfeil angezeigt wird.

  2. Klicken Sie auf den Pfeil, und wählen Sie dann Benutzerdefinierte SQL bearbeiten aus.

  3. Bearbeiten Sie die benutzerdefinierte SQL-Abfrage im Dialogfenster.

Ändern eines benutzerdefinierten SQL-Abfrage-Namens

Wenn Sie eine benutzerdefinierte SQL-Abfrage in den Verknüpfungsbereich ziehen, weist Tableau ihr einen Standardnamen zu: Benutzerdefinierte SQL-Abfrage, Benutzerdefinierte SQL-Abfrage1 usw. Sie können den Standardnamen in einen aussagekräftigeren Namen ändern.

  1. Doppelklicken Sie auf der Datenquellenseite im Verknüpfungsbereich auf den Standard-Abfragenamen, z. B. Benutzerdefinierte SQL-Abfrage.

  2. Geben Sie den Namen ein, den Sie für die benutzerdefinierte SQL-Abfrage verwenden möchten.

Verwenden von Parametern in einer benutzerdefinierten SQL-Abfrage

Durch die Angabe von Parametern in einer benutzerdefinierten SQL-Abfrageanweisung können Sie einen konstanten Wert durch einen dynamischen Wert ersetzen. Anschließend können Sie den Parameter in der Arbeitsmappe aktualisieren, um die Verbindung zu ändern. Beispielsweise können Sie eine Verbindung zu einer benutzerdefinierten SQL-Abfrage herstellen, die Daten zum Webdatenverkehr für eine bestimmte, durch einen "pageID"-Wert angegebene Seite liefert. Statt in der SQL-Abfrage für den "pageID"-Wert einen konstanten Wert anzugeben, können Sie einen Parameter einfügen. Nachdem Sie die Bearbeitung der Verbindung abgeschlossen haben, können Sie in der Arbeitsmappe ein Parametersteuerelement anzeigen. Mit dem Parametersteuerelement können Sie den "pageID"-Wert ändern und Daten für alle interessierenden Seiten abrufen, ohne die Verbindung bearbeiten oder duplizieren zu müssen.

In Tableau Desktop können Sie Parameter direkt im Dialogfeld "Benutzerdefinierte SQL" erstellen oder einen in der Arbeitsmappe vorhandenen Parameter verwenden. Wenn Sie einen neuen Parameter erstellen, steht dieser anschließend wie jeder andere Parameter in der Arbeitsmappe zur Verfügung. Weitere Informationen finden Sie unter Erstellen von Parametern.

Bei der Webdokumenterstellung (in Tableau Online oder Tableau Server) können Sie einen bestehenden Parameter verwenden, der über Tableau Desktop veröffentlicht wurde. Sie können bei der Webdokumenterstellung keinen neuen Parameter erstellen.

So fügen Sie einen Parameter zu einer benutzerdefinierten SQL-Abfrage hinzu

  1. Bewegen Sie auf der Datenquellenseite im Arbeitsbereich den Mauszeiger über die Tabelle, bis das Bearbeitungssymbol angezeigt wird, und klicken Sie dann auf die Bearbeitungsschaltfläche.

  2. Klicken Sie unten im Dialogfeld auf Parameter einfügen.

  3. Wählen Sie in der SQL-Anweisung einen konstanten Wert aus, und wählen Sie dann über das Dropdown-Menü Parameter einfügen unten im Dialogfeld den Parameter aus, den Sie stattdessen verwenden möchten. Wenn Sie noch keinen Parameter erstellt haben, wählen Sie Neuen Parameter erstellen aus. Befolgen Sie die Anweisungen unter Erstellen von Parametern, um einen Parameter zu erstellen.

Hinweis: Parameter können nur Literalwerte ersetzen. Ausdrücke oder Bezeichner, wie z. B. Tabellennamen, können nicht durch Parameter ersetzt werden.

Im Beispiel unten gibt die benutzerdefinierte SQL-Abfrage alle Bestellungen zurück, deren Priorität auf "Urgent" festgelegt ist. In der benutzerdefinierten SQL-Anweisung ist die Bestellpriorität der konstante Wert. Wenn Sie die Verbindung so ändern möchten, dass die Bestellungen mit hoher Priorität angezeigt werden, müssen Sie die Datenquelle bearbeiten.

Statt viele Varianten derselben Abfrage zu erstellen und zu verwalten, können Sie den konstanten Wert für die Bestellpriorität durch einen Parameter ersetzen. Der Parameter muss alle möglichen Werte für "Order Priority" enthalten.

Nachdem Sie einen Parameter erstellt haben, können Sie diesen in die SQL-Anweisung einfügen und so den konstanten Wert ersetzen.

Nachdem Sie die Bearbeitung der Verbindung abgeschlossen haben, finden Sie den neuen Parameter im Bereich Parameter am unteren Rand des Datenbereichs, und das Parametersteuerelement wird rechts von der Ansicht angezeigt. Die Verbindung wird aktualisiert, wenn Sie einen anderen Wert auswählen.

Hinweis: Wenn Sie einen Extrakt verwenden, müssen Sie diesen aktualisieren, damit die Parameteränderungen wirksam werden. Bei der Veröffentlichung einer Datenquelle, die benutzerdefinierte SQL-Parameter verwendet, werden die Parameter eingeschlossen. Die Parameter werden in alle Arbeitsmappen übertragen, die eine Verbindung zu der Datenquelle herstellen.

Siehe auch

Verwenden von benutzerdefiniertem SQL-Code und RAWSQL zum Ausführen der erweiterten räumlichen Analyse

Vielen Dank für Ihr Feedback! Es gab einen Fehler bei der Übermittlung Ihres Feedbacks. Versuchen Sie es erneut oder senden Sie uns eine Nachricht.