Eseguire le istruzioni SQL iniziali
Nota: Tableau Prep Builder versione 2019.2.2 e successive supporta l’utilizzo di SQL iniziale, ma non supporta ancora tutte le stesse opzioni supportate da Tableau Desktop. Per informazioni sull’utilizzo di SQL iniziale con Tableau Prep Builder, vedi Usare SQL iniziale per eseguire query sulle connessioni(Il collegamento viene aperto in una nuova finestra) nella guida online di Tableau Prep Builder.
Quando esegui la connessione ad alcuni database, puoi specificare un comando SQL iniziale che verrà eseguito quando viene stabilita una connessione al database, ad esempio quando apri la cartella di lavoro, aggiorni un’estrazione, accedi o pubblichi su Tableau Server. Il SQL iniziale non viene eseguito all’aggiornamento della vista. Nota che questo SQL iniziale è diverso da una connessione SQL personalizzata. Una connessione SQL personalizzata definisce una relazione (o una tabella) per il rilascio delle query. Per maggiori informazioni, consulta Connettersi a una query SQL personalizzata.
Puoi utilizzare questo comando per:
Impostare le tabelle temporanee da utilizzare durante la sessione.
Configurare un ambiente dati personalizzato.
Puoi aggiungere un comando SQL iniziale nella finestra di dialogo Connessione server o nella pagina Origine dati.
Nota: se l’origine dati supporta l’esecuzione di un’istruzione SQL iniziale, nell’angolo in basso a destra della finestra di dialogo Connessione server verrà visualizzato un collegamento SQL iniziale . Per informazioni sull’origine dati, consulta Connettori supportati.
Per utilizzare il SQL iniziale
Nella finestra di dialogo Connessione server, fai clic su SQL iniziale. In alternativa, sulla pagina Origine Dati, seleziona Dati > SQL iniziale o Dati > Query Banding e SQL iniziale a seconda del database a cui ti colleghi.
Inserisci il comando SQL nella finestra di dialogo SQL iniziale. Puoi utilizzare il menu a discesa Inserisci per passare i parametri all’origine dati.
Nota: Tableau non esamina gli errori dell’istruzione. Questa istruzione SQL viene semplicemente inviata al database quando effettui la connessione.
La licenza del software potrebbe impedirti l’utilizzo del SQL iniziale con la tua connessione. Se pubblichi su Tableau Server, il server deve essere configurato per consentire istruzioni SQL iniziali. Per impostazione predefinita, il software server è configurato per consentire l’esecuzione di queste istruzioni quando la cartella di lavoro viene caricata in un Web browser.
Gli amministratori possono configurare il server per ignorare le istruzioni SQL iniziali utilizzando il comando tsm configuration set
:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
Se il server non consente le istruzioni iniziali SQL, la cartella di lavoro si apre, ma i comandi SQL iniziali non vengono inviati.
Per maggiori informazioni sul comando tsm configuration set
, consulta la Guida di Tableau Server(Il collegamento viene aperto in una nuova finestra).
Parametri in un’istruzione SQL iniziale
Puoi passare i parametri all’origine dati in un’istruzione SQL iniziale. Ci sono diversi motivi per cui questo è utile:
Puoi configurare la rappresentazione utilizzando i parametri TableauServerUser o TableauServerUserFull .
Se l’origine dati supporta la funzionalità, puoi configurare la sicurezza a livello di riga (ad esempio, per Oracle VPD o SAP Sybase ASE) per verificare che gli utenti visualizzino solo i dati che sono autorizzati a vedere.
Puoi fornire maggiori dettagli all’accesso, ad esempio la versione Tableau o il nome della cartella di lavoro.
In un’istruzione SQL iniziale sono supportati i parametri seguenti:
Parametro | Descrizione | Esempio di valore restituito |
TableauServerUser | Il nome utente dell’utente server corrente. Da utilizzare durante l’impostazione della rappresentazione sul server. Restituisce una stringa vuota se l’utente non ha effettuato l’accesso a Tableau Server. | rbianchi |
TableauServerUserFull | Nome utente e dominio dell’utente del server corrente. Da utilizzare durante l’impostazione della rappresentazione sul server. Restituisce una stringa vuota se l’utente non ha effettuato l’accesso a Tableau Server. | domain.lan\rbianchi |
TableauApp | Il nome dell’applicazione Tableau. | Tableau Desktop Professional Tableau Server |
TableauVersion | La versione dell’applicazione Tableau. | 9.3 |
WorkbookName | Il nome della cartella di lavoro Tableau. Utilizzare solo nelle cartelle di lavoro con un’origine dati incorporata. | Analisi finanziaria |
Avviso: Tableau Desktop non include il dominio. Puoi includerlo se non stai utilizzando la delega e hai impostato tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys
Negli esempi seguenti vengono illustrati diversi modi per utilizzare i parametri in un’istruzione SQL iniziale.
- In questo esempio viene impostato il contesto di sicurezza in Microsoft SQL Server:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
In questo esempio viene illustrato come, in un’origine dati DataStax, puoi utilizzare i parametri per aggiungere dettagli per la registrazione o per impostare una variabile di sessione per tenere traccia dei dati:
SET TABLEAUVERSION [TableauVersion];
Questo esempio può essere utilizzato per impostare la sicurezza a livello di riga per Oracle VPD:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
Nota: i blocchi Oracle PL/SQL richiedono un punto e virgola finale per terminare il blocco. Consultare la documentazione di Oracle per la sintassi appropriata.
Rinviare l’esecuzione al server
È possibile rinviare un’istruzione SQL iniziale in modo che venga eseguita solo nel server. Un motivo per rinviare l’esecuzione al server è la mancata disponibilità dell’autorizzazione ad eseguire i comandi che configurano la rappresentazione. Utilizza i tag <ServerOnly></ServerOnly> per racchiudere i comandi da eseguire solo sul server.
Esempio:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
Sicurezza e rappresentazione
Se utilizzi il parametro TableauServerUser o TableauServerUserFull in un’istruzione SQL iniziale, verrà creata una connessione dedicata che non può essere condivisa con altri utenti. In questo modo potrai limitare la condivisione della cache, che può migliorare la sicurezza, ma anche rallentare le prestazioni.
Risoluzione dei problemi relativi alla creazione di una tabella per le connessioni MySQL e Oracle
Per le connessioni MySQL, le tabelle non vengono elencate dopo l’utilizzo dell’istruzione SQL iniziale per la creazione della tabella
Quando effettui la connessione a MySQL, se esegui un’istruzione SQL iniziale come quella riportata di seguito, è possibile che le tabelle non vengano visualizzate a causa del modo in cui Tableau costruisce la query:
CREATE TABLE TestV1.testtable77(testID int);
Per risolvere il problema, aggiungi IF NOT EXISTS
all’istruzione SQL:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
Per le connessioni Oracle, l’utilizzo dell’istruzione SQL iniziale per creare la tabella causa il blocco di Tableau
Quando effettui la connessione a Oracle ed esegui un’istruzione SQL iniziale come quella riportata di seguito, Tableau si blocca visualizzando la rotella che gira a causa del modo in cui Tableau costruisce la query:
CREATE TABLE TEST_TABLE (TESTid int)
Per risolvere il problema, usa la seguente istruzione SQL:
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;