Initiële SQL uitvoeren
Opmerking: Tableau Prep Builder versie 2019.2.2 en hoger ondersteunt het gebruik van initiële SQL, maar ondersteunt nog niet alle opties die worden ondersteund door Tableau Desktop. Zie Initiële SQL gebruiken om query’s uit te voeren op uw verbindingen(Link wordt in een nieuw venster geopend) in de Help van Salesforce voor Tableau Prep Builder voor informatie over het gebruik van initiële SQL met Tableau Prep Builder.
Wanneer u verbinding maakt met bepaalde databases, kunt u een initiële SQL-opdracht opgeven die wordt uitgevoerd of een waarde uit de cache gebruikt wanneer er verbinding wordt gemaakt met de database, bijvoorbeeld wanneer u de werkmap opent, een extract vernieuwt, zich aanmeldt bij Tableau Server of naar Tableau Server publiceert.
Opmerking: initiële SQL is anders dan een aangepaste SQL-verbinding. Een aangepaste SQL-verbinding definieert een relatie (of tabel) waarvoor query's kunnen worden uitgevoerd. Zie Verbinding maken met een aangepaste SQL-query voor meer informatie.
U kunt met deze opdracht:
Tijdelijke tabellen instellen die u tijdens de sessie kunt gebruiken.
Een aangepaste dataomgeving opzetten.
U hebt de mogelijkheid om een initiële SQL-opdracht toe te voegen in het dialoogvenster Serververbinding of op de pagina Databron.
Opmerking: als uw databron het uitvoeren van een initiële SQL-instructie ondersteunt, wordt er een link Initiële SQL weergegeven in de linkerbenedenhoek van het dialoogvenster Serververbinding. Zie Ondersteunde connectors voor informatie over uw databron.
Initiële SQL gebruiken
Klik in het dialoogvenster Serververbinding op Initiële SQL. Of selecteer op de pagina Databron Data > Initiële SQL of Data > Query-banding en initiële SQL, afhankelijk van de database waarmee u verbinding maakt.
Voer de SQL-opdracht in het dialoogvenster Initiële SQL in. U kunt het vervolgkeuzemenu van Invoegen gebruiken om parameters door te geven aan uw databron.
Opmerking: Tableau onderzoekt de instructie niet op fouten. Deze SQL-instructie wordt naar de database verzonden wanneer u verbinding maakt.
Uw softwarelicentie kan verhinderen dat u initiële SQL gebruikt met uw verbinding. Als u naar Tableau Server publiceert, moet de server worden geconfigureerd om initiële SQL-instructies toe te staan. Standaard is de serversoftware zo geconfigureerd dat deze instructies kunnen worden uitgevoerd wanneer de werkmap in een webbrowser wordt geladen.
Beheerders kunnen de server zo configureren dat initiële SQL-instructies worden genegeerd door middel van de opdracht tsm configuration set
:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
Als de server geen initiële SQL-instructies toestaat, wordt de werkmap geopend, maar worden de initiële SQL-opdrachten niet verzonden.
Zie de Help voor Tableau Server(Link wordt in een nieuw venster geopend) voor meer informatie over de opdracht tsm configuration set
.
Parameters in een initiële SQL-instructie
U kunt parameters doorgeven aan uw databron in een initiële SQL-instructie. De volgende lijst biedt verschillende voordelen van het gebruik van parameters in een initiële SQL-instructie.
U kunt imitatie configureren met behulp van de parameters TableauServerUser of TableauServerUserFull .
Als uw databron dit ondersteunt, kunt u beveiliging op rijniveau instellen (bijvoorbeeld voor Oracle VPD of SAP Sybase ASE). Op die manier worden voor gebruikers alleen de data weergegeven waarvoor zij geautoriseerd zijn.
U kunt meer details opgeven bij het loggen, bijvoorbeeld de Tableau-versie of de naam van de werkmap.
De volgende parameters worden ondersteund in een initiële SQL-instructie:
Parameter | Beschrijving | Voorbeeld van een geretourneerde waarde |
TableauServerUser | De gebruikersnaam van de huidige servergebruiker. Gebruik deze bij het instellen van imitatie op de server. Retourneert een lege tekenreeks als de gebruiker niet is aangemeld bij Tableau Server. | jsmid |
TableauServerUserFull | De gebruikersnaam en het domein van de huidige servergebruiker. Gebruik deze bij het instellen van imitatie op de server. Retourneert een lege tekenreeks als de gebruiker niet is aangemeld bij Tableau Server. | domein.lan\jsmid |
TableauApp | De naam van de Tableau-toepassing. | Tableau Desktop Professional Tableau Server |
TableauVersion | De versie van de Tableau-toepassing. | 9.3 |
WorkbookName | De naam van de Tableau-werkmap. Gebruik deze alleen in werkmappen met een ingesloten databron. | Financieel-analyse |
Waarschuwing: Tableau Desktop bevat geen domein. U kunt het opnemen als u geen delegatie gebruikt en u tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys instelt
In de volgende voorbeelden ziet u verschillende manieren waarop u parameters in een initiële SQL-instructie kunt gebruiken.
- In dit voorbeeld wordt de beveiligingscontext in Microsoft SQL Server ingesteld:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
Dit voorbeeld laat zien hoe u in een DataStax-databron parameters kunt gebruiken om details aan de logboekregistratie toe te voegen of om een sessievariabele in te stellen om de data bij te houden:
SET TABLEAUVERSION [TableauVersion];
Dit voorbeeld kan worden gebruikt om beveiliging op rijniveau in te stellen voor Oracle VPD:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
Opmerking: bij Oracle PL/SQL-blokken moet aan het einde een puntkomma worden geplaatst om het blok te beëindigen. Raadpleeg de Oracle-documentatie voor de juiste syntaxis.
De uitvoering naar de server uitstellen
U kunt een initiële SQL-instructie uitstellen, zodat deze alleen op de server wordt uitgevoerd. Eén reden om de uitvoering naar de server uit te stellen, is als u niet gemachtigd bent om de opdrachten uit te voeren die imitatie instellen. Gebruik de tags <ServerOnly></ServerOnly> om de opdrachten in te sluiten die alleen op de server moeten worden uitgevoerd.
Voorbeeld:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
Beveiliging en imitatie
Wanneer u de parameter TableauServerUser of TableauServerUserFull gebruikt in een initiële SQL-instructie, maakt u een speciale verbinding die niet met andere gebruikers kan worden gedeeld. Dit kan ook het delen van de cache beperken, wat de beveiliging kan verbeteren, maar ook de prestaties kan vertragen.
Problemen met de instructie 'create table' voor MySQL- en Oracle-verbindingen oplossen
Voor MySQL-verbindingen worden tabellen pas weergegeven nadat initiële SQL is gebruikt om een tabel te maken
Nadat u verbinding hebt gemaakt met MySQL en een initiële SQL-instructie hebt uitgevoerd, worden de tabellen mogelijk niet weergegeven vanwege de manier waarop Tableau de query samenstelt.
CREATE TABLE TestV1.testtable77(testID int);
U kunt dit probleem oplossen door IF NOT EXISTS
toe te voegen aan de SQL-instructie:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
Wanneer voor Oracle-verbindingen initiële SQL wordt gebruikt om een tabel te maken, loopt Tableau vast
Nadat u verbinding hebt gemaakt met Oracle en een initiële SQL-instructie hebt uitgevoerd, loopt Tableau vast met een ronddraaiend rondje vanwege de manier waarop Tableau de query samenstelt.
CREATE TABLE TEST_TABLE (TESTid int)
Als u dit probleem wilt oplossen, gebruikt u de volgende SQL-instructie:
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;