Executar o SQL inicial

Observação: a versão 2019.2.2 do Tableau Prep Builder e posterior suporta o uso do SQL inicial, mas ainda não oferece suporte a todas as mesmas opções compatíveis com o Tableau Desktop . Para obter informações sobre como usar o SQL inicial com o Tableau Prep Builder, consulte Usar SQL inicial para consultar suas conexões(Link opens in a new window) na ajuda on-line do Tableau Prep Builder.

Ao se conectar a alguns bancos de dados, você pode especificar um comando SQL inicial que será executado quando uma conexão for feita no banco de dados, por exemplo, ao abrir a pasta de trabalho, atualizar uma extração, fazer logon ou publicar no Tableau Server. O SQL inicial não é executado quando você atualiza a exibição. Observe que o SQL inicial é diferente de uma conexão de SQL personalizado. Uma conexão de SQL personalizado define uma relação (ou tabela) para emitir consultas. Para obter mais informações, consulte Conectar a uma consulta de SQL personalizado.

Você pode usar este comando para:

  • Configurar tabelas temporárias para serem usadas durante a sessão.

  • Configurar um ambiente de dados personalizado.

Você tem a opção de adicionar um comando de SQL inicial na caixa de diálogo Conexão do servidor ou na página Fonte de dados.

Observação: Se a sua fonte de dados aceita a execução em uma instrução SQL, SQL inicial aparece no canto inferior esquerdo da caixa de diálogo Conexão com o servidor no Tableau Desktop. Para obter informações sobre a sua fonte de dados, consulte Conectores compatíveis.

Para usar o SQL inicial

  1. Na caixa de diálogo Conexão com o servidor, clique em SQL inicial. Ou, na página Fonte de dados, selecione Dados > SQL inicial, ou Dados > Faixa de consulta e SQL inicial, dependendo do banco de dados ao qual você vai se conectar.

  2. Insira o comando SQL na caixa de texto SQL inicial. É possível usar o menu suspenso Inserir para passar parâmetros para sua fonte de dados.

Observação: O Tableau não examina se há erros na instrução. Essa instrução Sde QL é enviada simplesmente ao banco de dados na conexão.

Sua licença de software pode impedi-lo de usar o SQL inicial com sua conexão. Se você publicar no Tableau Server, o servidor deverá ser configurado para permitir as instruções de SQL inicial. Por padrão, o software do servidor é configurado para permitir que essas instruções sejam executadas quando a pasta de trabalho é carregada em um navegador da Web.

Os administradores podem configurar o servidor para ignorar instruções de SQL inicial usando o comando tsm configuration set:

tsm configuration set -k vizqlserver.initialsql.disabled -v true

Se o servidor não permitir as instruções de SQL inicial, a pasta de trabalho será aberta, mas os comandos de SQL inicial não serão enviados.

Para obter mais informações sobre o comando tsm configuration set, consulte a Ajuda do Tableau Server(Link opens in a new window).

Parâmetros em uma instrução de SQL inicial

Você pode passar parâmetros para a sua fonte de dados em uma instrução de SQL inicial. Isso é útil por várias razões:

  • É possível configurar a representação usando os parâmetros TableauServerUser ou TableauServerUserFull.

  • Se a fonte de dados for compatível, é possível configurar a segurança em nível de linha (por exemplo, para Oracle VPD ou SAP Sybase ASE), para garantir que os usuários visualizarão os dados que estão autorizados.

  • É possível fornecer mais detalhes no logon, por exemplo, a versão do Tableau ou o nome da pasta de trabalho.

Os parâmetros a seguir são compatíveis com uma instrução de SQL inicial:

Parâmetro Descrição Exemplo de valor retornado
TableauServerUser O nome de usuário do usuário do servidor atual. Use ao configurar a representação na servidor. Retorna uma cadeia de caracteres vazia se o usuário não estiver conectado ao Tableau Server. jsmith
TableauServerUserFull O nome de usuário e o domínio do usuário do servidor atual. Use ao configurar a representação na servidor. Retorna uma cadeia de caracteres vazia se o usuário não estiver conectado ao Tableau Server. domain.lan\jsmith
TableauApp O nome do aplicativo do Tableau.

Tableau Desktop Professional

Tableau Server

TableauVersion A versão do aplicativo do Tableau. 9.3
WorkbookName O nome da pasta de trabalho do Tableau. Use apenas em pastas de trabalho com uma fonte de dados incluída. Análise financeira

Exemplos

Os exemplos a seguir mostram maneiras diferentes de usar os parâmetros em uma instrução de SQL inicial.

  • Esse exemplo define o contexto de segurança no Microsoft SQL Server:

    EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;

  • Esse exemplo mostra como, em uma fonte de dados DataStax, você pode usar os parâmetros para adicionar detalhes ao registro ou para configurar uma variável de sessão para manter o controle dos dados:

    SET TABLEAUVERSION [TableauVersion];

  • Este exemplo pode ser usado para ajustar a segurança no nível de linha para Oracle VPD:

    begin

     DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);

    end;

    Observação: os blocos de Oracle PL/SQL precisam de um ponto e vírgula à direita para finalizar o bloco. Consulte a documentação da Oracle para obter a sintaxe apropriada.

Adiar a execução para o servidor

Você pode adiar uma instrução de SQL inicial, para que ela seja executada apenas no servidor. Uma razão de adiamento da execução para o servidor é se não houver permissão para executar os comandos que configuram a representação. Use as marcas <ServerOnly></ServerOnly> para colocar os comandos que serão executados somente no servidor.

Exemplo:

CREATE TEMP TABLE TempTable(x varchar(25));
INSERT INTO TempTable VALUES (1);
<ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>

Segurança e representação

Se você usar o parâmetro TableauServerUser, TableauServerUserFull em uma instrução SQL inicial, uma conexão dedicada que não pode ser compartilhada com outros usuários será criada. Isso também restringirá o compartilhamento de cache, o que pode melhorar a segurança, mas também pode prejudicar o desempenho.

Solucionar problemas de 'criar tabela' para conexões MySQL e Oracle

Em conexões MySQL, as tabelas não são listadas depois de usar o SQL inicial para criar a tabela

Quando você se conecta ao MySQL, se executar uma instrução de SQL inicial, como as abaixo, as tabelas podem não aparecer devido à maneira como o Tableau constrói a consulta:

CREATE TABLE TestV1.testtable77(testID int);

Para solucionar esse problema, adicione IF NOT EXISTS à instrução SQL:

CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);

Em conexões Oracle, usar o SQL inicial para criar a tabela faz com que o Tableau pare

Quando você se conecta ao Oracle e executa uma instrução de SQL inicial, como abaixo, o Tableau para com uma roda giratória devido à maneira como o Tableau constrói a consulta:

CREATE TABLE TEST_TABLE (TESTid int)

Para solucionar esse problema, use a seguinte instrução SQL:

BEGIN
EXECUTE IMMEDIATE 'create table test_table(testID int)';
EXCEPTION
WHEN OTHERS THEN NULL;
END;

 

Agradecemos seu feedback!