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

  1. 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.

  2. 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 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 l'impersonificazione 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 dell'impersonificazione 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 dell'impersonificazione 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

Esempi

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 di scansione> di <bpt i="1">{\b </bpt>><ept i="1">}</ept> per far sì che i comandi vengano eseguiti 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;

 

Grazie per il tuo feedback.