Ausführen der SQL-Anfangsdaten

Hinweis: Tableau Prep Builder Version 2019.2.2.2 und höher unterstützt die Verwendung von Initial SQL, unterstützt aber noch nicht alle Optionen, die unterstützt werden von Tableau Desktop . Für weitere Informationen zur Verwendung von Initial SQL mit dem Tableau Prep Builder, siehe Verwenden von Initial SQL zum Abfragen Ihrer Verbindungen in der Tableau Prep Builder Online-Hilfe.

Wenn Sie eine Verbindung zu bestimmten Datenbanken herstellen, können Sie einen SQL-Anfangsdatenbefehl angeben, der beim Herstellen der Verbindung zur Datenbank ausgeführt wird, zum Beispiel bei jedem Öffnen der Arbeitsmappe, Aktualisieren eines Extrakts, Anmelden bei Tableau Server oder Veröffentlichen in Tableau Server. Der SQL-Anfangsdatenbefehl wird jedoch nicht ausgeführt, wenn Sie Ihre Ansicht aktualisieren. Beachten Sie, dass sich diese SQL-Anfangsdaten von einer benutzerdefinierten SQL-Verbindung unterscheiden. Eine benutzerdefinierte SQL-Verbindung definiert eine Beziehung (oder Tabelle), für die Abfragen ausgeführt werden. Für weitere Informationen, siehe Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage.

Mit diesem Befehlen können Sie Folgendes tun:

  • Temporäre Tabellen einrichten, die während der Sitzung verwendet werden.

  • Benutzerdefinierte Datenumgebung einrichten.

Sie haben die Möglichkeit, einen SQL-Anfangsdatenbefehl im Dialogfeld "Serververbindung" oder auf der Seite "Datenquelle" hinzuzufügen.

Hinweis: Wenn Ihre Datenquelle die Ausführung einer SQL-Anfangsanweisung unterstützt, wird der Link SQL-Anfangsdaten in der unteren linken Ecke des Dialogfelds "Serververbindung" angezeigt. Informationen zu Ihren Datenquellen finden Sie unter Unterstützte Konnektoren.

So verwenden Sie SQL-Anfangsdaten

  1. Klicken Sie im Dialogfeld "Serververbindung" auf SQL-Anfangsdaten, oder wählen Sie auf der Seite "Datenquelle" Daten > SQL-Anfangsdaten oder Daten > Abfragenverbund und SQL-Anfangsdaten aus, abhängig von der Datenbank, zu der Sie eine Verbindung herstellen.

  2. Geben Sie den SQL-Befehl in das Dialogfeld SQL-Anfangsdaten ein. Über das Dropdown-Menü Einfügen können Sie Parameter an eine Datenquelle weitergeben.

Hinweis: Tableau untersucht die Anweisung nicht auf Fehler. Die SQL-Anweisung wird einfach bei der Herstellung der Verbindung an die Datenbank gesendet.

Unter Umständen ist es mit Ihrer Softwarelizenz nicht möglich, SQL-Anfangsdaten mit Ihrer Verbindung zu verwenden. Wenn Sie in Tableau Server veröffentlichen, muss der Server so konfiguriert sein, dass SQL-Anfangsdatenanweisungen zulässig sind. Standardmäßig ist die Serversoftware so konfiguriert, dass die Anweisungen ausgeführt werden können, wenn die Arbeitsmappe in einem Webbrowser geladen wird.

Administratoren können den Server mit dem Befehl tsm configuration set so konfigurieren, dass anfängliche SQL-Anweisungen ignoriert werden.

tsm configuration set -k vizqlserver.initialsql.disabled -v true

Wenn der Server SQL-Anfangsdatenanweisungen nicht zulässt, wird die Arbeitsmappe zwar geöffnet, doch die SQL-Anfangsdatenbefehle werden nicht gesendet.

Für weitere Informationen über den Befehl tsm configuration set, siehe Tableau Server-Hilfe.

Parameter in einer SQL-Anfangsdatenanweisung

Sie können Parameter in einer SQL-Anfangsdatenanweisung an Ihre Datenquelle weiterleiten. Dies ist aus mehreren Gründen hilfreich:

  • Sie können mit den Parametern TableauServerUser oder TableauServerUserFull einen Identitätswechsel konfigurieren.

  • Sofern Ihre Datenquelle dies unterstützt, können Sie die Sicherheitsfunktion auf Zeilenebene einrichten (z. B. für Oracle VPD oder SAP Sybase ASE), um sicherzustellen, dass die Benutzer nur die Daten sehen können, für die sie Anzeigeberechtigungen haben.

  • Sie können weitere Einzelheiten bei der Anmeldung wie z. B. die Tableau-Version oder den Arbeitsmappennamen bereitstellen.

Folgende Parameter werden in einer SQL-Anfangsdatenanweisung unterstützt:

Parameter Beschreibung Beispiel eines zurückgegebenen Werts
TableauServerUser Der Benutzername des aktuellen Serverbenutzers. Wird beim Einrichten des Identitätswechsels auf dem Server verwendet. Gibt einen Leerstring zurück, wenn der Benutzer nicht bei Tableau Server angemeldet ist. jsmith
TableauServerUserFull Der Benutzername und die Domäne des aktuellen Serverbenutzers. Wird beim Einrichten des Identitätswechsels auf dem Server verwendet. Gibt einen Leerstring zurück, wenn der Benutzer nicht bei Tableau Server angemeldet ist. domain.lan\jsmith
TableauApp Der Name der Tableau-Anwendung.

Tableau Desktop Professional

Tableau Server

TableauVersion Die Version der Tableau-Anwendung. 9.3
WorkbookName Der Name der Tableau-Arbeitsmappe. Verwenden Sie ihn nur in Arbeitsmappen mit einer eingebetteten Datenquelle. Finanzanalyse

Beispiele

Die folgenden Beispiele zeigten unterschiedliche Möglichkeiten, wie Sie Parameter in einer SQL-Anfangsdatenanweisung nutzen können.

  • Bei diesem Beispiel wird der Sicherheitskontext auf einem Microsoft SQL-Server festgelegt:

    EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;

  • Dieses Beispiel zeigt, wie Sie in einer DataStax-Datenquelle mit Parametern Details zur Anmeldung hinzufügen oder eine Sitzungsvariable einrichten können, um die Daten nachzuverfolgen:

    SET TABLEAUVERSION [TableauVersion];

  • Dieses Beispiel kann herangezogen werden, um die Sicherheit auf Zeilenebene für Oracle-VPD einzurichten:

    begin

     DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);

    end;

    Hinweis: Oracle PL/SQL-Blöcke müssen mit einem nachgestellten Semikolon abgeschlossen werden. Informationen zur richtigen Syntax finden Sie in der Oracle-Dokumentation.

Verschieben der Ausführung einer Anweisung auf den Server

Sie können eine SQL-Anfangsdatenanweisung verschieben, sodass sie nur auf dem Server ausgeführt wird. Ein Grund für die Verschiebung der Ausführung einer Anweisung auf den Server ist, wenn Sie nicht die Berechtigung zum Ausführen der Befehle haben, die einen Identitätswechsel festlegen. Verwenden Sie die Tags <ServerOnly></ServerOnly>, um die nur auf dem Server auszuführenden Befehle einzuschließen.

Beispiel:

CREATE TEMP TABLE TempTable(x varchar(25));
INSERT INTO TempTable VALUES (1);
<ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>

Sicherheit und Identitätswechsel

Falls Sie den Parameter TableauServerUser oder TableauServerUserFull in einer SQL-Anfangsdatenanweisung verwenden, müssen Sie eine entsprechende Verbindung erstellen, die nicht gleichzeitig von anderen Benutzern verwendet werden kann. Dadurch wird zudem die Zwischenspeicherfreigabe eingeschränkt, wodurch die Sicherheit erhöht, aber die Geschwindigkeit verringert werden kann.

Fehlerbehebung „Tabelle erstellen“ für MySQL- und Oracle-Verbindungen

Bei MySQL-Verbindungen werden Tabellen nicht aufgelistet, nachdem sie mithilfe von Initial SQL erstellt wurden.

Wenn Sie eine Verbindung mit MySQL herstellen und Initial SQL ausführen, werden Tabellen möglicherweise aufgrund der Art und Weise, wie Tableau die Abfrage erstellt, nicht angezeigt:

CREATE TABLE TestV1.testtable77(testID int);

Um dieses Problem zu beheben, fügen Sie der SQL-Anweisung IF NOT EXISTS hinzu:

CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);

Bei Oracle-Verbindungen führt die Verwendung von Initial SQL zum Erstellen einer Tabelle dazu, dass Tableau abstürzt.

Wenn Sie eine Verbindung zu Oracle herstellen und eine Initial SQL-Anweisung wie die folgende ausführen, bleibt Tableau aufgrund der Art und Weise, wie Tableau die Abfrage erstellt, in einer Endlosschleife hängen:

CREATE TABLE TEST_TABLE (TESTid int)

Verwenden Sie die folgende SQL-Anweisung, um dieses Problem zu beheben:

BEGIN
EXECUTE IMMEDIATE 'create table test_table(testID int)';
EXCEPTION
WHEN OTHERS THEN NULL;
END;

 

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