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, consulta Utilizzare SQL iniziale per eseguire query sulle connessioni(Il collegamento viene aperto in una nuova finestra) nella Guida di Tableau Prep Builder.

Durante la connessione ad alcuni database, puoi specificare un comando SQL iniziale da eseguire o utilizzare un valore memorizzato nella cache quando viene stabilita una connessione al database, ad esempio quando apri la cartella di lavoro, aggiorni un’estrazione, accedi o pubblichi su Tableau Server.

Nota: 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 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 SQL iniziali, 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. L’elenco seguente riepiloga i diversi vantaggi derivanti dall’utilizzo dei parametri in un’istruzione SQL iniziale.

  • 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:

ParametroDescrizioneEsempio di valore restituito
TableauServerUserNome utente dell’utente corrente del server. Da utilizzare durante l’impostazione della rappresentazione sul server. Restituisce una stringa vuota se l’utente non ha effettuato l’accesso a Tableau Server.mario.rossi
TableauServerUserFullNome 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\mario.rossi
TableauAppIl nome dell’applicazione Tableau.

Tableau Desktop Professional

Tableau Server

TableauVersionLa versione dell’applicazione Tableau.9.3
WorkbookNameIl 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

Quando 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 di una tabella

Dopo aver effettuato la connessione a MySQL ed eseguito un’istruzione SQL iniziale, è 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 una tabella causa il blocco di Tableau

Dopo aver effettuato la connessione a Oracle ed eseguito un’istruzione SQL iniziale, Tableau si blocca visualizzando una 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.Il tuo feedback è stato inviato. Grazie!