Ausführen von initialen SQL-Befehlen
Hinweis: Ab Version 2019.2.2 unterstützt Tableau Prep Builder die Verwendung von initialen SQL-Befehlen, allerdings noch nicht alle Optionen, die von Tableau Desktop unterstützt werden. Informationen zur Verwendung von initialen SQL-Befehlen mit Tableau Prep Builder finden Sie unter Verwenden von initialen SQL-Befehlen zum Abfragen Ihrer Verbindungen(Link wird in neuem Fenster geöffnet) in der Tableau Prep Builder Salesforce-Hilfe.
Wenn Sie eine Verbindung zu bestimmten Datenbanken herstellen, können Sie einen initialen SQL-Befehl 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.
Hinweis: Das anfängliche SQL unterscheidet sich von einer benutzerdefinierten SQL-Verbindung. Eine benutzerdefinierte SQL-Verbindung definiert eine Beziehung (oder Tabelle), für die Abfragen ausgeführt werden. Weitere Informationen finden Sie unter 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 Connectoren.
So verwenden Sie SQL-Anfangsdaten
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.
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 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 anfängliche SQL-Anweisungen nicht zulässt, wird die Arbeitsmappe zwar geöffnet, doch die anfänglichen SQL-Befehle werden nicht gesendet.
Für weitere Informationen über den Befehl tsm configuration set
, siehe Tableau Server-Hilfe(Link wird in neuem Fenster geöffnet).
Parameter in einer SQL-Anfangsdatenanweisung
Sie können Parameter in einer SQL-Anfangsdatenanweisung an Ihre Datenquelle weiterleiten. Die folgende Liste zeigt mehrere Vorteile der Verwendung von Parametern in einer anfänglichen SQL-Anweisung.
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 |
Warnung: Tableau Desktop schließt keine Domäne mit ein. Sie können eine mit einschließen, wenn Sie keine Delegierung verwenden und "tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys" festlegen.
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 anfängliche SQL-Anweisung 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 anfänglichen SQL-Anweisung verwenden, müssen Sie eine entsprechende Verbindung erstellen, die nicht mit anderen Benutzern geteilt werden kann. Dadurch wird zudem das Teilen des Zwischenspeichers 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 anfänglicher SQL erstellt wurden.
Wenn Sie eine Verbindung mit MySQL herstellen und anfängliche 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 anfänglicher SQL zum Erstellen einer Tabelle dazu, dass Tableau abstürzt.
Wenn Sie eine Verbindung zu Oracle herstellen und eine anfängliche SQL-Anweisung 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;