Ejecutar SQL inicial
Nota: Tableau Prep Builder versión 2019.2.2 y posteriores admiten el uso de SQL inicial, pero aún no admiten todas las mismas opciones admitidas por Tableau Desktop. Para obtener información sobre el uso de SQL inicial con Tableau Prep Builder, consulte Utilizar SQL inicial para consultar sus conexiones(El enlace se abre en una ventana nueva) en la ayuda de Salesforce de Tableau Prep Builder.
Al conectarse a algunas bases de datos, puede especificar un comando SQL inicial que se ejecutará o usará un valor en caché cuando se establezca una conexión con la base de datos (por ejemplo, al abrir el libro de trabajo, actualizar una extracción, iniciar sesión en Tableau Server o efectuar una publicación en Tableau Server).
Nota: El SQL inicial es diferente de una conexión SQL personalizada. Una conexión SQL personalizada define una relación (o tabla) en la que se van a emitir consultas. Para obtener más información, consulte Conectarse a una consulta SQL personalizada.
Puede usar este comando para lo siguiente:
Configurar tablas temporales para usarlas durante la sesión.
Configurar un entorno de datos personalizado.
Puede añadir un comando SQL inicial tanto en el cuadro de diálogo Conexión de servidor como en la página Fuente de datos.
Nota: Si su fuente de datos puede ejecutar una declaración SQL inicial, aparecerá un vínculo SQL inicial en la esquina inferior izquierda del cuadro de diálogo Conexión al servidor. Para obtener información sobre su fuente de datos, consulte Conectores compatibles.
Para usar SQL inicial
En el cuadro de diálogo Conexión de servidor, haga clic en SQL inicial. Como alternativa, en la página Fuente de datos, seleccione Datos > SQL inicial o Datos > Unión de consultas y SQL inicial, según la base de datos a la que se conecte.
Escriba el comando SQL en el cuadro de diálogo SQL inicial. Puede utilizar el menú desplegable Insertar para pasar parámetros a la fuente de datos.
Nota: Tableau no examina si la declaración tiene errores. Esta declaración SQL se envía a la base de datos cuando se conecte.
Es posible que su licencia de software no le permita usar SQL inicial con su conexión. Si publica en Tableau Server, el servidor debe estar configurado para permitir declaraciones SQL iniciales. De manera predeterminada, el software de servidor se configura para permitir que estas declaraciones se ejecuten cuando el libro de trabajo se carga en un navegador web.
Los administradores pueden configurar el servidor de modo que omita las instrucciones SQL iniciales usando el comando tsm configuration set
:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
Si el servidor no admite instrucciones SQL iniciales, el libro de trabajo se abre, pero los comandos SQL iniciales no se envían.
Para obtener más información sobre el comando tsm configuration set
, consulte la ayuda de Tableau Server(El enlace se abre en una ventana nueva).
Parámetros en una declaración SQL inicial
Puede pasar parámetros a la fuente de datos mediante una declaración SQL inicial. La siguiente lista tiene varios beneficios de usar parámetros en una declaración SQL inicial.
Puede configurar una suplantación con los parámetros TableauServerUser o TableauServerUserFull.
Si la fuente de datos lo permite, puede configurar una seguridad de nivel de fila (para Oracle VPD o SAP Sybase ASE, por ejemplo) para procurar que los usuarios vean solamente los datos que estén autorizados a ver.
Puede indicar más detalles durante el registro, como la versión de Tableau o el nombre del libro.
Los siguientes parámetros se pueden usar en una declaración SQL inicial:
Parámetro | Descripción | Ejemplo de valor indicado |
TableauServerUser | El nombre de usuario del usuario del servidor actual. Se usa al configurar una suplantación en el servidor. Indica una cadena vacía si el usuario no ha iniciado sesión en Tableau Server. | jsmith |
TableauServerUserFull | Nombre de usuario y dominio del usuario de servidor actual. Se usa al configurar una suplantación en el servidor. Indica una cadena vacía si el usuario no ha iniciado sesión en Tableau Server. | domain.lan\jsmith |
TableauApp | Nombre de la aplicación de Tableau. | Tableau Desktop Professional Tableau Server |
TableauVersion | Versión de la aplicación de Tableau. | 9.3 |
WorkbookName | Nombre del libro de trabajo de Tableau. Úselo solo en libros de trabajo con una fuente de datos incrustada. | Análisis financiero |
Advertencia: Tableau Desktop no incluye el dominio. Puede incluirlo si no está usando delegación y establece tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys
Los siguientes ejemplos reflejan distintas formas de usar parámetros en una declaración SQL inicial.
- En este ejemplo se establece el contexto de seguridad de Microsoft SQL Server:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
En este ejemplo se muestra cómo se pueden usar parámetros en una fuente de datos DataStax para añadir detalles al registro o para configurar una variable de sesión que permita llevar un seguimiento de los datos:
SET TABLEAUVERSION [TableauVersion];
Este ejemplo se puede usar para ayudar a configurar la seguridad en el nivel de fila para Oracle VPD:
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
Nota: Los bloques PL/SQL de Oracle necesitan un punto y coma final para cerrar el bloque. Consulte la documentación de Oracle para ver la sintaxis adecuada.
Aplazar la ejecución en el servidor
Una declaración SQL inicial se puede aplazar de forma que solo se ejecute en el servidor. Un motivo para aplazar una ejecución en el servidor es que carezca de permiso para ejecutar los comandos que configuran la suplantación. Incluya entre las categorías <ServerOnly></ServerOnly> los comandos que se van a ejecutar solo en el servidor.
Ejemplo:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
Seguridad y suplantación
Si usa los parámetros TableauServerUser o TableauServerUserFull en una instrucción SQL inicial, creará una conexión exclusiva que no se podrá compartir con otros usuarios. Esto también puede restringir el uso compartido de la caché, lo que puede mejorar la seguridad, aunque también puede ralentizar el rendimiento.
Solución de problemas de "crear tabla" para conexiones MySQL y Oracle
Para conexiones MySQL, las tablas no aparecen después de usar un SQL inicial para crear una tabla
Después de conectarse a MySQL y ejecutar una declaración SQL inicial, es posible que las tablas no se muestren debido a la forma en que Tableau crea la consulta.
CREATE TABLE TestV1.testtable77(testID int);
Para resolver este problema, añada IF NOT EXISTS
a la declaración SQL:
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
Para las conexiones Oracle, el uso de un SQL inicial para crear una tabla hace que Tableau se detenga
Cuando se conecta a Oracle y ejecuta una declaración SQL inicial, Tableau se detiene (aparece una rueda giratoria) debido a la forma en que Tableau construye la consulta.
CREATE TABLE TEST_TABLE (TESTid int)
Para resolver este problema, utilice la siguiente declaración SQL:
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;