Usar scripts de Python no seu fluxo
Isenção de responsabilidade: este tópico contém informações sobre um produto de terceiros. Observe que, enquanto nos esforçamos para manter as referências precisas ao conteúdo de terceiros, as informações que fornecemos aqui podem mudar sem aviso prévio, à medida que phyton muda. Para obter as informações mais atualizadas, consulte a documentação e o suporte do python.
Python é uma linguagem de programação de alto nível amplamente utilizada para programação geral. Ao enviar comandos Python para um serviço externo por meio do Tableau Prep Builder, você pode facilmente estender suas opções de preparação de dados realizando ações, como adicionar números de linha, campos de classificação, preencher campos e executar outras operações de limpeza que, de outra forma, usaria os campos calculados.
Para incluir scripts de Python no fluxo, você precisa configurar uma conexão entre Tableau e um servidor TabPy. Em seguida, você pode usar scripts de Python para aplicar funções com suporte aos dados do fluxo usando dataframe de pandas. Quando você adiciona uma etapa de script ao fluxo e especifica os detalhes da configuração, do arquivo e da função que deseja usar, os dados são transmitidos com segurança ao servidor TabPy, as expressões no script são aplicadas e os resultados são retornados como uma tabela que você pode limpar ou colocar como saída, conforme necessário.
Você pode executar fluxos que incluem etapas de script no Tableau Server, desde que tenha configurado uma conexão com o servidor TabPy. Não é possível executar fluxos com etapas de script no Tableau Cloud. Para configurar o Tableau Server, consulte Configurar o servidor Tableau Python (TabPy) para Tableau Server.
Para obter informações sobre como configurar sites no Tableau Server com extensões de análise para pastas de trabalho, consulte Configurar conexões com extensões de análise.
Pré-requisitos
Para incluir scripts de Python no seu fluxo, conclua a configuração a seguir. Não é possível criar ou executar fluxos com etapas de script no Tableau Cloud.
Faça o download e instale o Python(O link abre em nova janela). Baixe e instale a versão mais atual do Python para Linux, Mac ou Windows.
Baixe e instale o servidor Tableau Python (TabPy(O link abre em nova janela)). Siga as instruções de instalação e configuração para instalar o TabPy. O Tableau Prep Builder usa o TabPy para transmitir dados do fluxo por meio de TabPy como a entrada, aplica seu script e retorna os resultados de volta ao fluxo.
- Instale o Pandas. Execute
pip3 install pandas
. Você deve usar um dataframe de pandas em seus scripts para integrar-se ao Tableau Prep Builder.
Configurar o servidor Tableau Python (TabPy) para Tableau Server
Se você planeja publicar, criar, editar e executar fluxos que incluem etapas de script no Tableau Server, precisará configurar uma conexão entre o seu servidor TabPy e o Tableau Server.
- Versão 2019.3 e posterior: é possível executar fluxos publicados que incluem etapas de script no Tableau Server.
- Versão 2020.4.1 e posterior: é possível criar, editar e executar fluxos que incluem etapas de script no Tableau Server.
- Tableau Cloud: no momento, não é possível criar ou executar fluxos com etapas de script.
- Abra a linha de comando do TSM/shell.
Insira os seguintes comandos para definir o endereço do host, os valores da porta e o tempo limite da conexão:
tsm security maestro-tabpy-ssl enable --connection-type {maestro-tabpy-secure/maestro-tabpy} --tabpy-host <TabPy IP address or host name> --tabpy-port <TabPy port> --tabpy-username <TabPy username> --tabpy-password <TabPy password> --tabpy-connect-timeout-ms <TabPy connect timeout>
- Selecione
{maestro-tabpy-secure}
para habilitar uma conexão segura ou{maestro-tabpy}
para habilitar uma conexão não segura. - Se você selecionar
{maestro-tabpy-secure}
, especifique o arquivo de certificado-cf<certificate file path>
na linha de comando. - Especifique o
--tabpy-connect-timeout-ms <TabPy connect timeout>
em milissegundos. Por exemplo,--tabpy-connect-timeout-ms 900000
.
- Selecione
Para desabilitar a conexão TabPy, insira o seguinte comando
tsm security maestro-tabpy-ssl disable
Criar seu script de Python
Ao criar o script, inclua uma função que especifique um pandas (pd.DataFrame) como um argumento da função. Isto chamará seus dados do Tableau Prep Builder. Você também precisará retornar os resultados em um pandas (pd.DataFrame) usando tipos de dados compatíveis.
Por exemplo, para adicionar codificação a um conjunto de campos em um fluxo, você pode escrever o seguinte script:
def encode(input): le = preprocessing.LabelEncoder() Return pd.DataFrame({ 'Opportunity Number' : input['Opportunity Number'], 'Supplies Subgroup Encoded' : le.fit_transform(input['Supplies Subgroup']), 'Region Encoded' : le.fit_transform(input['Region']), 'Route To Market Encoded' : le.fit_transform(input['Route To Market']), 'Opportunity Result Encoded' : le.fit_transform(input['Opportunity Result']), 'Competitor Type Encoded' : le.fit_transform(input['Competitor Type']), 'Supplies Group Encoded' : le.fit_transform(input['Supplies Group']), })
Os seguintes tipos de dados são compatíveis:
Tipo de dados no Tableau Prep Builder | Tipo de dados no Python |
---|---|
Cadeia de caracteres | Cadeia de caracteres UTF-8 padrão |
Decimal | Duplo |
Int | Inteiro |
Bool | Booleano |
Data | Cadeia de caracteres no formato ISO_DATE “AAAA-MM-DD” com compensação de zona opcional. Por exemplo, “2011-12-03” é uma data válida. |
DateTime | Cadeia de caracteres no formato ISO_DATE_TIME “AAAA-MM-DDT:HH:mm:ss” com compensação de zona opcional. Por exemplo, “2011-12-03T10:15:30+01:00” é uma data vslid. |
Observação: Date e DateTime sempre devem ser retornados como uma cadeia de caracteres válida.
Se quiser retornar campos diferentes do que você inserir, será necessário incluir uma função get_output_schema no script que define a saída e os tipos de dados. Caso contrário, a saída usará os campos dos dados de entrada, que são obtidos na etapa anterior à etapa do script no fluxo.
Use a seguinte sintaxe ao especificar os tipos de dados para seus campos no get_output_schema:
Função no Python | Tipos de dados resultantes |
---|---|
prep_string() | Cadeia de caracteres |
prep_decimal() | Decimal |
prep_int() | Inteiro |
prep_bool() | Booleano |
prep_date() | Data |
prep_datetime() | DateTime |
Colchetes podem ser usados para acessar linhas de um DataFrame. Colchetes simples geram uma série Pandas, enquanto colchetes duplos geram um DataFrame Pandas.
def create_key(df): return pd.DataFrame({ "Key": ['12345'] })
O exemplo seguinte mostra a função get_output_schema adicionada ao script de python de codificação de campo:
def get_output_schema(): return pd.DataFrame({ 'Opportunity Number' : prep_int(), 'Supplies Subgroup Encoded' : prep_int(), 'Region Encoded' : prep_int(), 'Route To Market Encoded' : prep_int(), 'Opportunity Result Encoded' : prep_int(), 'Competitor Type Encoded' : prep_int(), 'Supplies Group Encoded' : prep_int() })
Conecte-se ao servidor Tableau Python (TabPy)
Importante: a partir da versão 2020.3.3 do Tableau Prep Builder, configure a conexão de servidor uma vez no menu superior Ajuda, em vez de configurar a conexão por fluxo na etapa de Script, clicando em Conectar-se ao servidor Tableau Python (TabPy) e inserindo os detalhes da conexão. Você precisará reconfigurar a conexão usando este novo menu para os fluxos criados em uma versão mais antiga do Tableau Prep Builder que você abre na versão 2020.3.3.
- Selecione Ajuda > Configurações e desempenho > Gerenciar conexão de extensões do Analytics.
Na lista suspensa Selecionar uma extensão do Analytics, selecione Servidor Tableau Python (TabPy).
- Insira as credenciais:
- A porta 9004 é a padrão para TabPy.
- Se o servidor exigir credenciais, insira um Nome de usuário e uma Senha.
Se o servidor usar a criptografia SSL, marque a caixa de seleção Exigir SSL e clique no link Sem arquivo de configuração personalizado especificado para selecionar um certificado para a conexão. Esse é o arquivo de certificado do servidor SSL.
Observação: o Tableau Prep Builder não fornece uma maneira de testar a conexão. Se houver um problema com a conexão, uma mensagem de erro será exibida.
Adicionar um script ao fluxo
Inicie o servidor TabPy e conclua as seguintes etapas:
Observação: TabPy requer a versão 5.1.1 do pacote tornado para execução. Se você recebe o erro, 'tornado.web' não tem nenhum atributo 'assíncrono' ao tentar iniciar o TabPy, na linha de comando, execute pip list
para verificar a versão do tornado instalada. Se você tiver uma versão diferente instalada, faça o download do pacote do tornado versão 5.1.1(O link abre em nova janela). Em seguida, execute pip uninstall tornado
para desinstalar sua versão atual e, em seguida, pip install tornado==5.1.1
para instalar a versão necessária.
Abra o Tableau Prep Builder e clique no botão Adicionar conexão .
Em criação na Web, na página Início, clique em Criar > Fluxo ou na página Explorar, clique em Novo > Fluxo. Em seguida, clique em Conectar a dados.
Na lista de conectores, selecione o tipo de arquivo ou servidor que hospeda seus dados. Se solicitado, insira as informações necessárias para acessar seus dados.
Clique no ícone de adição e selecione Adicionar script no menu de contexto.
No painel Script, na seção Tipo de conexão, selecione Tableau Python (TabPy) Server.
- Na seção Nome do arquivo, clique em Procurar para selecionar o arquivo de script.
Digite o Nome da função e pressione Enter para executar seu script.