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(O link abre em nova janela) 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
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.
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 SQL é 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(O link abre em nova janela).
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 |
Aviso: o Tableau Desktop não inclui o domínio. Você pode incluí-lo se não estiver usando delegação e definir tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys
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;