Curso
O Tableau é uma ferramenta de visualização de dados muito popular entre os profissionais de dados e uma ferramenta comumente solicitada durante a contratação. Python é uma linguagem de programação versátil amplamente usada na ciência de dados. A integração do Python no Tableau permite que os usuários criem modelos sofisticados, executem cálculos complexos e ampliem os recursos nativos do Tableau.
Isso é especialmente útil para analistas de dados, cientistas de dados e profissionais de business intelligence que desejam aproveitar a modelagem estatística, o machine learning e as técnicas de processamento de dados diretamente em seus painéis.
Este artigo serve como um tutorial prático para você integrar o Python ao Tableau. Você aprenderá a configurar seu ambiente, executar scripts Python, explorar casos de uso de análise avançada e solucionar problemas comuns. Se você quiser conhecer o Tableau, siga este curso de introdução ao Tableau.
Entendendo a integração
A integração do Python com o Tableau é possível por meio de um serviço externo, a extensão de análise chamada TabPy (Tableau Python Server). Essa extensão permite que os usuários do Tableau executem scripts Python em seu ambiente do Tableau.
Embora você possa ter experiência no uso do Python para criar arquivos e depois visualizá-los no Tableau, como neste tutorial Visualizando dados com o Python e o Tableau, essa conexão com o TabPy permite uma integração mais perfeita entre os dados no Tableau e seus scripts do Python.
A função do TabPy
O TabPy funciona como uma ponte entre o Tableau e o Python. Ele opera em um modelo cliente-servidor, em que o Tableau (cliente) envia scripts para o TabPy (servidor), que os executa em um ambiente Python e retorna os resultados.
Como funciona
- O Tableau Desktop ou o Tableau Server envia um script usando campos calculados.
- TabPy executa o código Python.
- Os resultados são enviados de volta ao Tableau para serem renderizados em visualizações.
Diagrama mostrando a conexão entre o Tableau, o TabPy e o ambiente Python gerado usando o eraser.io
Benefícios de usar o Python com o Tableau
Embora o Tableau seja extraordinariamente poderoso, às vezes seus campos calculados podem parecer desajeitados ou ineficientes quando se trata de tarefas analíticas complexas. A integração com o Python oferece várias vantagens em relação aos recursos nativos do Tableau e dá aos usuários mais liberdade para processar seus dados.
Por exemplo, você pode incluir os seguintes casos de uso com Python:
- Modelagem avançada: Use bibliotecas como
scikit-learn
,statsmodels
exgboost
para regressão, agrupamento e classificação. - Integração de API: Obtenha dados em tempo real usando APIs como Twitter, Reddit ou serviços empresariais personalizados.
- Processamento dinâmico: Execute cálculos que se adaptam com base na entrada do usuário ou na alteração de dados. Você pode usar pacotes como
pandas
ounumpy
para realmente aumentar o poder analítico do seu painel do Tableau.
Configurando o TabPy
Para começar a usar o Python no Tableau, você precisará instalar e configurar o TabPy. Esta etapa é bastante simples! O processo principal é garantir que você tenha o Python e o Tableau instalados em seu computador.
Requisitos do sistema e instalação
Pré-requisitos:
- Python 3.7+ (certifique-se de que você tenha o pip)
- Tableau Desktop ou Tableau Server (recomenda-se a versão 2020.1 ou posterior)
Instalação passo a passo:
1. Instale o Python. Siga as instruções do seu sistema operacional para instalar o Python.
2. Crie um ambiente virtual:
python3 -m venv tableau-env
3. Instale o TabPy (certifique-se de ativar seu ambiente). Você também pode instalar outros pacotes, como pandas
, numpy
, sklearn
, entre outros, neste momento.
pip install tabpy
4. Inicie o TabPy:
tabpy
Configuração do TabPy
Para personalizar o TabPy, edite seu arquivo de configuração. Essas personalizações permitem que você altere coisas como a porta que o TabPy escuta para obter informações e o protocolo de transferência que utiliza. Para obter mais informações sobre as definições de configuração, siga o o guia de configuração do TabPy.
Exemplo de arquivo de configuração (tabpy.conf)
Aqui está a aparência de um arquivo de configuração para o tabpy.
[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http
Dicas de rede e segurança
Como o TabPy depende do uso de uma conexão de servidor semelhante à Internet para seus recursos locais, é melhor você seguir algumas dicas de rede e segurança:
- Certifique-se de que você escolha uma porta que esteja aberta no firewall, mas que não ouça conexões externas.
- Configure um proxy reverso, como o NGINX, com SSL para que você tenha uma comunicação segura.
- Se você estiver executando no Tableau Server, certifique-se de que o TabPy esteja acessível na mesma rede
Para obter mais detalhes sobre como começar a usar o TabPy, siga este tutorial de introdução ao TabPy.
Executando o Python no Tableau
Depois de configurar o TabPy, agora você pode integrar o Python diretamente aos painéis do Tableau. Você deve primeiro habilitar as conexões de extensão no Tableau. Abra o Tableau Desktop, vá para Configurações e desempenho, Gerenciar conexão de extensão de análise e selecione TabPy. Em seguida, configure-o com base nas definições do arquivo de configuração do TabPy.
Tela Gerenciar conexão de extensões do Analytics no Tableau (help.tableau.com)
Métodos de integração de scripts
Existem três maneiras principais de executar scripts Python no Tableau: cálculos de script em linha dentro de um campo calculado, pré-processamento com extensões do Tableau e pontos de extremidade de modelo.
1. Cálculos de script em linha
Use as funções SCRIPT_REAL
, SCRIPT_INT
, SCRIPT_STR
ou SCRIPT_BOOL
do Tableau. Cada uma dessas funções passa dados para o servidor TabPy diretamente, sem executar um script externo. Você pode escrever Python diretamente nesses scripts.
Exemplo: Normalização de escore Z
SCRIPT_REAL(
"import scipy.stats as stats
return stats.zscore(_arg1)",
SUM([Sales])
)
O exemplo acima permite que você importe o pacote stats
de scipy
e retorne a pontuação Z da coluna SUM([Sales])
no Tableau.
2. Pré-processamento com extensões de tabelas
Use as extensões do Tableau para realizar o pré-processamento com o Python fora do Tableau e, em seguida, importe os resultados.
- Pré-processar dados com o Pandas/Numpy.
- Salve os resultados como um CSV ou ponto de extremidade de API.
- Carregar dados processados no Tableau.
Essas extensões são ativadas na página Planilhas da pasta de trabalho do Tableau. Com essas extensões, você insere todo o seu script usando a extensão TabPy. Isso executa o script em todo o conjunto de dados, o que permite que você pré-processe todos os dados de uma só vez, em vez de no nível da linha. Isso geralmente gera uma tabela separada como saída.
Se você quiser, pode usar o recurso de extensão de tabelas disponível na parte inferior da página Folhas. (Da documentação do Tableau)
3. Pontos de extremidade do modelo implantado
O último método é um dos mais eficientes. Hospedamos um modelo usando o servidor TabPy para executar um script. Em seguida, invocamos esse script no Tableau quando estamos interessados em executar esse modelo em um determinado conjunto de dados.
Exemplo: Implantar o modelo no TabPy
A primeira etapa é criar um arquivo que será implantado pelo TabPy. Depois de executar seu servidor TabPy (seguindo as etapas acima), você pode usá-lo para executar seu script Python. Quando esse script Python for implantado, você o chamará no Tableau usando SCRIPT_REAL
.
from tabpy.tabpy_tools.client import Client
import pickle
def predict_sales(input_features):
model = pickle.load(open(model.pkl, ‘rb’)) # This assumes you have a saved model
return model.predict(input_features)
client = Client(‘http://localhost:9004’)
client.deploy('predict_sales', predict_sales, 'Predict sales using linear model', override=True)
Chamada de script do Tableau:
SCRIPT_REAL("return tabpy.query(‘predict_sales’, _arg1)[‘response’]", SUM[Feature1])
Técnicas de otimização de desempenho
Assim como na execução de scripts Python fora do Tableau, você deve ter cuidado com o desempenho. Há algumas considerações especiais que você deve fazer ao executar dados no Tableau.
- Processamento em lote: Minimize o número de chamadas processando os dados em partes. Geralmente, é útil processar todo o conjunto de dados de uma só vez, em vez de quando ele é chamado pelo Tableau.
- Armazenamento em cache dos resultados: Armazene em cache os resultados estáticos usando as configurações de cache do Tableau.
- Vetorização: Use operações NumPy/Pandas em vez de loops para uma execução mais rápida. Esses recursos geralmente vetorizam os cálculos matemáticos, tornando-os muito mais eficientes.
Se estiver usando o Tableau Server, você pode otimizar ainda mais usando o pooling de conexões. Em geral, o pooling de conexões é a ideia de manter conexões persistentes com fontes de dados para minimizar a sobrecarga.
Você pode fazer o mesmo com as fontes de dados e o TabPy para evitar que o Tableau "reabra" a conexão com o TabPy sempre que você executar um script ou um novo cálculo.
Casos de uso analítico avançado
Agora que os conceitos básicos foram abordados, você pode implementar análises altamente personalizadas. Esses métodos envolvem a criação de scripts mais avançados que interagem com seu painel de maneiras interessantes.
Análise preditiva em tempo real
Um modelo excelente é a implantação de modelos de séries temporais (por exemplo, ARIMA, Prophet) que são atualizados com a entrada do usuário, assim como este guia sobre a implantação de funções e o Prophet com o TabPy.
Depois de criar seu modelo, você pode empacotá-lo em um script que pode ser implantado pelo TabPy. Em seguida, conectamos esse modelo ao Tableau usando a mesma função SCRIPT_REAL
para chamar nosso modelo implantado.
Caso de uso: Previsão de vendas
- Crie e treine um modelo Prophet em Python.
- Implantar o modelo no TabPy usando o histórico de vendas como recurso
- Atualize as previsões sobre o número de vendas à medida que o filtro do painel for alterado.
Agora, se você alterar os filtros, como local, horário ou produto, o Tableau gerará novas previsões em tempo real com esses novos filtros.
Segurança e governança
Uma vez que abrimos nossas conexões com o TabPy, é fundamental seguirmos os protocolos de segurança e governança adequados.
Protocolos de autenticação
O TabPy oferece uma variedade de protocolos de autenticação para ajudar os usuários a se manterem seguros. Os itens a seguir são compatíveis e podem ser configurados:
- Autenticação básica (nome de usuário/senha)
- Autenticação baseada em certificado
- OAuth2 com manuseio seguro de tokens (para uso empresarial avançado)
A prática recomendada é sempre usar HTTPS e tokens seguros para implementações de produção.
Medidas de proteção de dados
Ao conectar o Tableau e o TabPy, devemos nos certificar de que estamos seguindo a governança de proteção de dados adequada. Isso inclui garantir que os dados fluam pelos canais de conexão corretos e não possam usar outras portas, e que os dados sejam criptografados o tempo todo durante a movimentação. Estas são algumas práticas recomendadas que você deve seguir:
- Criptografar a comunicação entre o Tableau e o TabPy.
- Use regras de firewall e controles de acesso.
- Ative o registro de auditoria no TabPy para fins de conformidade. Atualize regularmente os pacotes Python para corrigir as vulnerabilidades.
Por fim, se a sua organização tiver que seguir determinadas conformidades regulamentares, certifique-se de que você continue a seguir as práticas recomendadas. Garanta que o GDPR e o CCPR sejam seguidos por meio da anonimização e tokenização de PII antes de serem enviados à TabPy. Além disso, use armazenamento seguro para resultados intermediários do Python para minimizar o vazamento.
Solução de problemas e depuração
Os problemas são inevitáveis, mas a maioria pode ser resolvida rapidamente.
Problemas e resoluções comuns
Problema |
Resolução |
O Tableau não consegue se conectar ao TabPy |
Verifique o firewall, confirme a porta (9004) e verifique se o TabPy está em execução |
O script retorna valores NULL |
Valide os tipos de entrada e verifique os registros de erros do Python |
Desempenho lento |
Otimize os dados enviados ao Python, reduza a frequência de chamadas, use o cache |
Se você tiver problemas com seu código, siga algumas dessas etapas de depuração (que funcionam para qualquer script):
- Use print() ou registro em scripts (os registros do TabPy mostram isso).
- Teste scripts Python fora do Tableau usando o Jupyter.
- Verifique os registros do Tableau em Meu repositório do Tableau/Logs.
Conclusão
Com a integração do Python ao Tableau, você terá acesso a um poder analítico avançado diretamente em seus painéis visuais. Com o TabPy, você pode:
- Executar cálculos complexos
- Implantar e interagir com modelos de ML
- Amplie significativamente os recursos nativos do Tableau
Não importa se você está executando modelos estatísticos, processando dados de texto ou visualizando previsões, o Python traz uma nova dimensão de inteligência aos painéis do Tableau.
Seguindo as etapas descritas neste guia, você poderá aproveitar o Python para obter análises mais perspicazes, flexíveis e interativas. Para obter mais informações sobre o Tableau e seus recursos, consulte os guias a seguir:
Executar o Python nas perguntas frequentes do Tableau
Você pode usar o Python com o Tableau Public?
Não. O Tableau Public não oferece suporte a serviços externos como o TabPy. A integração com o Python está disponível no Tableau Desktop (Professional Edition) e no Tableau Server.
O TabPy é seguro para ambientes de produção?
O TabPy pode ser protegido para produção usando HTTPS, restrições de firewall, protocolos de autenticação (básico, baseado em certificados, OAuth2) e proxies reversos como o NGINX. No entanto, são necessárias configurações adicionais além da configuração padrão.
Como o Tableau lida com o desempenho do script Python nos painéis?
O Tableau envia dados para o TabPy e aguarda a resposta, o que pode causar atrasos se os scripts não forem otimizados. Para melhorar o desempenho, use técnicas como vetorização, armazenamento em cache, agrupamento e minimização dos dados enviados.
Posso usar ambientes virtuais com o TabPy?
Sim. Você pode executar o TabPy dentro de um ambiente virtual Python, o que ajuda a isolar dependências e evitar conflitos. Ative o ambiente antes de iniciar o TabPy.
O TabPy pode retornar estruturas de dados complexas, como JSON ou dicionários?
Não. O TabPy deve retornar uma lista simples ou uma matriz NumPy que o Tableau possa interpretar. Estruturas de dados complexas, como dicionários ou JSON, devem ser pré-processadas em uma lista antes de serem retornadas.
Sou um cientista de dados com experiência em análise espacial, machine learning e pipelines de dados. Trabalhei com GCP, Hadoop, Hive, Snowflake, Airflow e outros processos de engenharia/ciência de dados.