Ejecutar SQL inicial

Nota: Tableau Prep Builder 2019.2.2 o posterior soporta el uso de SQL inicial, pero aún no admite todas las opciones que sí admite Tableau Desktop. Para obtener información sobre cómo utilizar SQL inicial con Tableau Prep Builder, consulte Use SQL inicial para consultar sus conexiones(El enlace se abre en una ventana nueva) en la ayuda en línea de Tableau Prep Builder.

Al conectarse a algunas bases de datos, puede especificar un comando SQL inicial que se ejecutará 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). El SQL inicial no se ejecuta al actualizar la vista. Tenga en cuenta que este 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

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

  2. 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 simplemente 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. Son varios los motivos por los que esto resulta útil:

  • 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ámetroDescripciónEjemplo de valor indicado
TableauServerUserNombre 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
TableauServerUserFullNombre 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
TableauAppNombre de la aplicación de Tableau.

Tableau Desktop Professional

Tableau Server

TableauVersionVersión de la aplicación de Tableau.9.3
WorkbookNameNombre 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 restringirá además 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 la tabla

Cuando se conecta a MySQL, si ejecuta una declaración SQL inicial como la siguiente, 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 como la siguiente, 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;

 

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!