Conectar a uma consulta de SQL personalizado

Observação: o uso de SQL personalizado pode afetar o desempenho de uma pasta de trabalho. Trabalhar com seu DBA garantirá a melhor consulta SQL personalizada possível. Para executar as operações necessárias para criar exibições no Tableau Desktop, o Tableau deve ser capaz de controlar WHERE, GROUP BY e outras cláusulas SQL. Como uma consulta SQL personalizada pode conter esses elementos e o Tableau não pode injetá-los no SQL existente, o Tableau deve agrupar a instrução SQL personalizada em uma instrução select. Quando uma conexão SQL personalizada tem desempenho lento ou produz um erro, isso geralmente é o resultado do encapsulamento SQL personalizado executado pelo Tableau Desktop.

Na maioria dos bancos de dados, você pode se conectar a uma consulta específica em vez de se conectar ao conjunto inteiro de dados. Como os bancos de dados têm sintaxes SQL diferentes, o SQL personalizado que for usado para se conectar a um banco de dados pode ser diferente do SQL personalizado para se conectar a outro banco de dados. No entanto, o uso do SQL personalizado pode ser útil quando você sabe exatamente as informações de que precisa e compreende como escrever consultas SQL.

Embora haja diversas razões para se usar o SQL personalizado, é possível usá-lo para unir dados em tabelas, reformular campos para realizar uniões cruzadas entre bancos de dados, reestruturar ou reduzir o tamanho dos dados para análise, etc.

Para fonte de dados do Excel e de arquivo de texto, esta opção só está disponível em pastas de trabalho que tenham sido criadas em versões anteriores ao Tableau Desktop 8.2 ou ao usar o Tableau Desktop no Windows com a conexão herdada. Para se conectar ao Excel ou aos arquivos de texto usando a conexão herdada, conecte-se ao arquivo e, na caixa de diálogo Abrir, clique no menu suspenso Abrir e, em seguida, selecione Abrir com conexão herdada.

OBSERVAÇÃO: a partir do Tableau 2020.2, as conexões de Excel e Texto antigas não serão mais compatíveis. Consulte o documento Alternativas de conexão herdada na Comunidade do Tableau para obter alternativas para usar a conexão herdada.

Conectar a uma consulta de SQL personalizado

  1. Depois de estabelecer conexão com os dados, clique duas vezes na opção Novo SQL personalizado na página Fonte de dados.

  2. Digite ou cole a consulta na caixa de texto. A consulta deve ser uma única instrução SELECT*.

  3. Ao terminar, clique em OK.

Ao clicar em OK, a consulta é executada e a tabela de consulta de SQL personalizado aparece na camada lógica da tela. Somente os campos relevantes da consulta ao SQL personalizado são exibidos na grade de dados da página Fonte de dados.

Para obter mais informações sobre as camadas lógicas e físicas da tela, consulte O modelo de dados do Tableau.

Exemplos de consultas SQL personalizadas

Combinar as tabelas verticalmente (união)

Se você precisar anexar dados, poderá usar a opção de união de linhas diretamente na camada física da tela no Tableau. Em alguns casos, os bancos de dados não são compatíveis com essa opção. Então, você pode usar o SQL personalizado.

Por exemplo, suponha que você tenha estas duas tabelas: November (Novembro) e December (Dezembro).

NovembroDezembro

Use a seguinte consulta SQL personalizada para anexar a segunda tabela, Dezembro, à primeira tabela, Novembro:

SELECT * FROM November UNION ALL SELECT * FROM December

O resultado da consulta tem esta aparência na grade de dados:

Para obter mais informações sobre a união de linhas, consulte Unir linhas de dados.

Alterar o tipo de dados de um campo para fazer uma união cruzada entre bancos de dados

Quando você realiza uma união de colunas entre duas tabelas na camada física da tela, o tipo de dados dos campos deve ser o mesmo. Quando o tipo de dados dos campos não é o mesmo, você pode usar o SQL personalizado para alterar o tipo de dados (cast) do campo antes de fazer a união.

Por exemplo, você quer unir duas tabelas, Main e Sub, usando os campos Root e ID, respectivamente. O campo Root é um tipo de número e o campo ID é um tipo de cadeia de caracteres. É possível usar a seguinte consulta do SQL personalizado para alterar o tipo de dados de Root de um número para uma cadeia de caracteres para assim ser possível unir as tabelas Main e Sub pelo uso dos campos Root e ID.

SELECT [Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]
FROM [Main]

O resultado dessa consulta mostra o campo Root original e o cast do campo Root como uma cadeia de caracteres.

Para obter mais informações sobre uniões cruzadas de banco de dados, consulte Unir colunas de dados.

Reduzir o tamanho dos dados

Você pode reduzir o tamanho de dados muitos grandes para economizar tempo.

Por exemplo, suponha que você tenha uma tabela grande denominada FischerIris. Use a seguinte consulta SQL personalizada para recuperar as colunas e os registros especificados ao reduzir o tamanho do conjunto de dados conectado no Tableau.

SELECT
[FischerIris].[Species] AS [Species],
[FischerIris].[Width] AS [Petal Width],
COUNT([FischerIris].[ID]) AS [Num of Species]
FROM [FischerIris]
WHERE [FischerIris].[Organ] = 'Petal'
AND [FischerIris].[Width] > 15.0000
GROUP BY [FischerIris].[Species], [FischerIris].[Width]

Reestruturar os dados (dinâmico)

Em alguns casos, você pode trabalhar com uma tabela que precisa ser reestruturada antes da análise. Embora esse tipo de tarefa possa ser feito diretamente na camada física da tela no Tableau com opções como dinamizar, talvez o banco de dados não seja compatível. Nesse caso, você pode usar o SQL personalizado.

Por exemplo, suponha que você tenha a seguinte tabela:

Para alterar a estrutura e otimizar os dados para análise no Tableau, você pode usar a seguinte consulta SQL personalizada:

SELECT Table1.Season ID AS [Season ID],
Table1.Items - Don't like AS [Quantity],
"Don't Like" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table.Items - Defective AS [Quantity],
"Defective" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Too big AS [Quantity],
"Too Big" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS Season ID,
Table1.Items - Too small AS [Quantity]
"Too Small" AS [Reason]
FROM Table1

O resultado da consulta tem esta aparência na grade de dados:

Para obter mais informações sobre a opção para dinamizar, consulte Dinamizar dados de colunas para linhas.

Combinar (unir) e agregar os dados

Se você precisar combinar tabelas e agregar dados, poderá usar opções de tipo de agregação padrão e união de colunas diretamente na camada física da tela no Tableau. Em alguns casos, talvez seja necessário usar o SQL personalizado.

Por exemplo, suponha que você tenha estas duas tabelas: Orders (Pedidos) e Vendors (Fornecedores).

PedidosFornecedores

Você pode usar a consulta SQL personalizada abaixo para localizar uma contagem de pedidos e fazer uma união à esquerda nas tabelas Pedidos e Fornecedores:

SELECT Vendors.Name,COUNT(Orders.Order) AS Number Of Orders
FROM Orders
LEFT JOIN Vendors
ON Orders.VendorID=Vendors.VendorID
GROUP BY Name;

O resultado da consulta tem a seguinte aparência:

Para obter mais informações sobre uniões, consulte Unir colunas de dados.

Erros quando colunas duplicadas são especificadas

Se a consulta SQL personalizada especificar colunas duplicadas, você poderá obter erros ao tentar usar uma das colunas na análise no Tableau. Isso ocorrerá mesmo que a consulta seja válida. Por exemplo, considere a seguinte consulta:

SELECT * FROM authors, titleauthor WHERE authors.au_id = titleauthor.au_id

A consulta é válida, mas o campo au_id é ambíguo porque ele existe nas tabelas “authors” e “titleauthor”. O Tableau se conectará à consulta, mas você obterá um erro a qualquer momento ao tentar usar o campo au_id . Isso ocorre porque o Tableau não sabe à qual tabela você se refere.

Observação: é uma prática recomendada definir aliases de coluna com uma cláusula AS sempre que possível em uma consulta SQL personalizada. Isso ocorre porque cada banco de dados tem suas próprias regras quando gera automaticamente um nome de coluna sempre que um alias não é usado.

Editar uma consulta SQL personalizada

Para editar uma consulta SQL personalizada

  1. Na página Fonte de dados, na tela, clique duas vezes na consulta do SQL personalizado na camada lógica.
  2. Passe o cursor do mouse sobre a tabela de SQL personalizado na camada física até que a seta seja exibida.
  3. Clique na seta selecione Editar consulta de SQL personalizado.
  4. Na caixa de diálogo, edite a consulta SQL personalizada.

Para alterar um nome de uma consulta de SQL personalizado

Ao arrastar uma consulta de SQL personalizado para a camada lógica da tela, o Tableau fornece a ela um nome padrão: consulta de SQL personalizado, consulta1 de SQL personalizado e assim por diante. Você pode alterar o nome padrão para algo mais significativo.

  1. Na página Fonte de dados, na camada lógica da tela, selecione a seta suspensa na tabela de consulta de SQL personalizado e selecione Renomear.

  2. Insira o nome que deseja usar para a consulta de SQL personalizado.

Usar parâmetros em uma consulta SQL personalizada

Você pode usar parâmetros em uma instrução de consulta SQL para substituir um valor constante por um valor dinâmico. Em seguida, você poderá atualizar o parâmetro na pasta de trabalho para modificar a conexão. Por exemplo, é possível conectar-se a uma consulta SQL personalizada que fornece dados de tráfego da Web para uma página em particular que é especificada por uma pageID. Em vez de usar um valor constante para o valor de pageID na consulta SQL, você pode inserir um parâmetro. Ao concluir a conexão, você poderá mostrar um controle de parâmetro na pasta de trabalho. Use o controle de parâmetro para desativar a pageID e extrair dados para cada página de interesse sem precisar editar ou duplicar a conexão.

No Tableau Desktop, é possível criar um parâmetro diretamente na caixa de diálogo SQL personalizado ou usar parâmetros que façam parte da pasta de trabalho. Se você criar um novo parâmetro, ele se tornará disponível para uso na pasta de trabalho como qualquer outro parâmetro. Consulte Criar parâmetros para saber mais.

Para a criação na Web (no Tableau Cloud ou no Tableau Server), use um parâmetro existente publicado a partir do Tableau Desktop. Não é possível criar um novo parâmetro na criação na Web.

Para adicionar um parâmetro a uma consulta SQL personalizada

  1. Na página de fonte de dados, na tela, focalize na tabela até que o ícone de edição seja exibido e depois clique no botão de edição.
  2. Na parte inferior da caixa de diálogo, clique em Inserir parâmetro.
  3. Selecione um valor constante na instrução SQL e, no menu suspenso Inserir parâmetro, selecione o parâmetro que deseja usar. Se você ainda não tiver criado um parâmetro, selecione Criar um novo parâmetro. Siga as instruções em Criar parâmetros para criar um novo parâmetro.

Observação: os parâmetros podem substituir apenas valores literais. Eles não substituem expressões ou identificadores, como nomes de tabelas.

No exemplo abaixo, a consulta SQL personalizada retorna todos os pedidos marcados como prioridade Urgente. Na instrução SQL personalizada, a prioridade do pedido é o valor constante. Se você desejar alterar a conexão para ver as ordens de Prioridade do pedido, deverá editar a fonte de dados.

Em vez de criar e manter muitas variações da mesma consulta, você pode substituir o valor de prioridade do pedido constante por um parâmetro. O parâmetro deve conter todos os valores possíveis de Prioridade do pedido.

Depois de criar um parâmetro, você poderá inseri-lo em uma instrução SQL para substituir o valor constante.

Depois que você termina de editar a conexão, o novo parâmetro é listado na área Parâmetros, na parte inferior do painel Dados, e o controle de parâmetro é exibido no lado direito da exibição. À medida que você seleciona valores diferentes, a conexão é atualizada.

Observação: se você estiver usando uma extração, deverá atualizar a extração para refletir as alterações no parâmetro. A publicação de uma fonte de dados que usa parâmetros Personalizar SQL inclui os parâmetros. Os parâmetros são transferidos para qualquer pasta de trabalho que se conecta à fonte de dados.

Suporte ao Tableau Catalog para SQL personalizado

O suporte para SQL personalizado no Tableau Catalog depende da consulta SQL personalizada.

O Tableau Catalog está disponível como parte da oferta do Data Management para Tableau Server e Tableau Cloud. Para obter mais informações sobre o Tableau Catalog, consulte "Sobre o Tableau Catalog”, na Ajuda do Tableau Server ou do Tableau Cloud.

Consultas compatíveis

O Catalog é compatível com consultas de SQL personalizado que atendem ao padrão ANSI SQL-2003, com três exceções conhecidas:

  • Expressões de fuso horário
  • Expressões de multiconjunto
  • Parâmetros do Tableau

A partir de 2021.4, o Tableau Catalog também é compatível com o uso do dialeto Transact-SQL (T-SQL) no SQL personalizado, com as seguintes exceções:

  • Dicas
  • Cláusulas FOR
  • Funções OPENROWSET, OPENXML e OPENJSON
  • Funções escalares ODBC
  • PARA SYSTEM_TIME
  • TABLESAMPLE
  • Expressões MATCH
  • Expressão CONTAINS
  • Expressão FREETEXT

A partir do Tableau Cloud de outubro de 2023 e do Tableau Server 2023.3, o Tableau Catalog também oferece suporte para consultas SQL personalizadas que usam PostgreSQL, com as seguintes exceções:

  • Função XML
  • Funções e operadores JSON

Recursos e funções compatíveis

O Catalog é compatível com a seguinte funcionalidade adicional para fontes de dados, pastas de trabalho e fluxos com conexões que usam os drivers MySQL ou PostgreSQL, por exemplo, Amazon Aurora para MySQL, Amazon RedShift, Pivotal Greenplum Database, MemSQL, Denodo entre outros.

  • Função GROUP_CONCAT do MySQL
  • Matrizes do PostgreSQL
  • Função EXTRACT() do PostgreSQL

Outros cenários e funcionalidades do SQL personalizado podem funcionar, mas o Tableau não é especificamente testado nem compatível.

Linhagem compatível

Quando um ativo usa SQL customizado, uma mensagem com um botão Mostrar consulta de SQL personalizado aparece na guia Linhagem da página do ativo. Clique no botão para ver o SQL personalizado usado na conexão. Em seguida, se desejar copiar o SQL personalizado para a área de transferência, clique em Copiar.

Botão para mostrar uma consulta de SQL personalizado

Alguns tipos de SQL customizado podem fazer com que a linhagem anterior fique incompleta. Quando isso acontece, é exibida uma mensagem com essa informação. Os cartões de detalhes de campo podem não conter links para colunas conectadas ou podem não mostrar nenhuma coluna conectada. Os cartões de detalhes da coluna podem não conter links para campos que usam a coluna ou podem não mostrar nenhum campo.

Se você estiver analisando uma linhagem de tabela, observe que o Catalog não é compatível com exibir informações de coluna na linhagem para metadados da tabela reunidos utilizando SQL personalizado. No entanto, se outros ativos usarem a mesma tabela e não usarem SQL personalizado, o Tableau Catalog poderá exibir informações sobre as colunas descobertas por meio desses outros ativos.

Na captura de tela a seguir, a tabela factAccountOpportunityByQuarter foi indexada porque ela é usada por uma fonte de dados. No entanto, como é referenciada por uma consulta de SQL personalizado, as informações da coluna não estão disponíveis.

Em um caso que há mais de uma fonte de dados, pasta de trabalho ou fluxo, usa uma tabela, todos os ativos downstream dessa tabela que usam uma consulta de SQL personalizado são excluídos quando os filtros de nível de coluna são aplicados. Como resultado, menos ativos downstream aparecem na linhagem do que os realmente utilizados.

Para obter mais informações sobre o uso da linhagem, consulte "Usar linhagem para análise de impacto" na Ajuda do Tableau Server(O link abre em nova janela) ou do Tableau Cloud(O link abre em nova janela).

Consulte também

Usar SQL personalizado e RAWSQL para executar a análise espacial avançada(O link abre em nova janela)

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!