Köra inledande SQL
Obs! Tableau Prep Builder version 2019.2.2 och senare stöder användning av inledande SQL, men stöder ännu inte alla alternativ som stöds av Tableau Desktop. Mer information om hur du använder inledande SQL med Tableau Prep Builder finns i Använda inledande SQL för att skicka frågor till dina anslutningar(Länken öppnas i ett nytt fönster) i Tableau Prep Builder Salesforce-hjälpen.
När du ansluter till vissa databaser kan du ange ett inledande SQL-kommando som körs eller använder ett cachelagrat värde när en anslutning görs till databasen, till exempel när du öppnar arbetsboken, uppdaterar ett extrakt, loggar in på Tableau Server eller publicerar på Tableau Server.
Obs! Inledande SQL skiljer sig från en anpassad SQL-anslutning. En anpassad SQL-anslutning definierar en relation (eller tabell) som man kan göra sökningar mot. Mer information finns i Ansluta till en anpassad SQL-fråga.
Du kan använda det här kommandot för att:
Konfigurera tillfälliga tabeller som används under sessionen.
Konfigurera en anpassad datamiljö.
Du kan lägga till ett inledande SQL-kommando i dialogrutan Serveranslutning eller på sidan Datakälla.
Obs! Om datakällan stöder körning av en inledande SQL-sats visas länken inledande SQL i det nedre vänstra hörnet av dialogrutan Serveranslutning. Information om datakällan finns i Kopplingar som stöds.
Så här använder du inledande SQL
Klicka på Inledande SQL i dialogrutan Serveranslutning. Välj annars Data > Inledande SQL eller Data > Frågemärkning och inledande SQL på sidan Datakälla, beroende på vilken databas du ansluter till.
Ange SQL-kommandot i dialogrutan Inledande SQL. Du kan använda listrutemenyn Infoga för att skicka parametrar till datakällan.
Obs! Tableau undersöker inte om satsen innehåller några fel. Denna SQL-sats skickas till databasen när du ansluter.
Din programvarulicens kan begränsa dig från att använda inledande SQL med din anslutning. Om du publicerar på Tableau Server måste servern vara konfigurerad för att tillåta inledande SQL-satser. Serverprogramvaran är som standard konfigurerad så att dessa satser kan köras när arbetsboken laddas i en webbläsare.
Administratörer kan konfigurera servern så att den ignorerar inledande SQL-satser genom att använda kommandot tsm configuration set
:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
Om servern inte tillåter inledande SQL-satser öppnas arbetsboken, men de inledande SQL-kommandona skickas inte.
Mer information om kommandot tsm configuration set
finns i Tableau Server-hjälpen(Länken öppnas i ett nytt fönster).
Parametrar i en inledande SQL-sats
Du kan skicka parametrar till datakällan i en inledande SQL-sats. För följande lista finns flera fördelar med att använda parametrar i en inledande SQL-sats.
Du kan konfigurera impersonering med parametrarna TableauServerUser eller TableauServerUserFull.
Om datakällan stöder det kan du ställa in säkerhet på radnivå (till exempel för Oracle VPD eller SAP Sybase ASE), för att se till att användarna bara ser de data som de har behörighet att se.
Du kan ge mer information vid loggföring, till exempel Tableau-versionen eller arbetsbokens namn.
Följande parametrar stöds i en inledande SQL-sats:
Parameter | Beskrivning | Exempel på returnerat värde |
TableauServerUser | Användarnamnet för den aktuella serveranvändaren. Använd den här parametern när du konfigurerar impersonering på servern. Returnerar en tom sträng om användaren inte är inloggad på Tableau Server. | jjohansson |
TableauServerUserFull | Användarnamn och domän för aktuell serveranvändare. Använd den här parametern när du konfigurerar impersonering på servern. Returnerar en tom sträng om användaren inte är inloggad på Tableau Server. | domän.johan\jjohansson |
TableauApp | Namnet på Tableau-programmet. | Tableau Desktop Professional Tableau Server |
TableauVersion | Version av Tableau-programmet. | 9,3 |
WorkbookName | Namn på Tableau-arbetsboken. Används endast i arbetsböcker med en inbäddad datakälla. | Ekonomisk-analys |
Varning: Tableau Desktop inkluderar inte en domän. Du kan inkludera en om du inte använder delegering och ställer in tsm configuration set -k DelegationUseFullDomainName=-v true--force-nycklar
Följande exempel visar olika sätt du kan använda parametrarna i en inledande SQL-sats på.
- Det här exemplet ställer in säkerhetskontexten på Microsoft SQL Server:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
Det här exemplet visar hur du i en DataStax-datakälla kan använda parametrar för att lägga till information för loggföringen eller för att konfigurera en sessionsvariabel för att hålla koll på dina data:
SET TABLEAUVERSION [TableauVersion];
Det här exemplet kan användas för att hjälpa till att konfigurera säkerhet på radnivå för Oracle VPD:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
Obs!Oracle PL/SQL-block kräver ett efterföljande semikolon för att avsluta blocket. Se Oracle-dokumentationen för korrekt syntax.
Skjuta upp exekvering till servern
Du kan skjuta upp en inledande SQL-sats, så att den endast exekveras på servern. En anledning till att skjuta upp exekveringen till servern är om du inte har behörighet att exekvera de kommandon som konfigurerar impersoneringen. Använd taggarna <ServerOnly></ServerOnly> för att bifoga kommandon som endast ska exekveras på servern.
Exempel:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
Säkerhet och impersonering
När du använder parametern TableauServerUser eller TableauServerUserFull i en inledande SQL-sats skapar du en dedikerad anslutning som inte kan delas med andra användare. Detta kommer också att begränsa delningen av cacheminnet, vilket kan förbättra säkerheten men även göra prestandan långsammare.
Felsöka ”skapa tabell” för MySQL- och Oracle-anslutningar
För MySQL-anslutningar listas inte tabellerna när inledande SQL har använts för att skapa tabellen
När du har anslutit till MySQL och kör en inledande SQL-sats kan det hända att tabellerna inte visas på grund av hur Tableau skapar sökningen.
CREATE TABLE TestV1.testtable77(testID int);
Om du vill lösa problemet lägger du till IF NOT EXISTS
i SQL-satsen:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
För Oracle-anslutningar leder användningen av inledande SQL för att skapa tabeller till att Tableau stannar
När du har anslutit till Oracle och kör en inledande SQL-sats stannar Tableau med ett snurrande hjul på grund av hur Tableau skapar sökningen.
CREATE TABLE TEST_TABLE (TESTid int)
Använd följande SQL-sats och se om det löser problemet:
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;