Python

Esta tarefa permite executar scripts na linguagem Python, e a versão utilizada pode ser escolhida de acordo com as versões disponibilizadas pelo administrador do Gaio. As bibliotecas podem ser instaladas e gerenciadas por desenvolvedores do Gaio. Além disso, disponibilizamos uma classe chamada bucket que permite extrair e exportar dados que estão no banco ClickHouse que sua aplicação tem permissão para usar.
Limite de Memória A tarefa Python no Gaio é limitada por padrão a um máximo de 80% da memória da máquina; se exceder esse limite, retornará um erro de limite de memória.
Como Configurar a tarefa Python
Vamos simplesmente navegar pela interface da tarefa e, após isso, desenvolveremos um script simples como exemplo.
1. Abrir a Tarefa Python
No Studio, vá até o painel de Tasks.
Na seção Analytics, selecione Python.
2. Preencher os campos obrigatórios
A primeira página é a principal da tarefa. Nela, à esquerda, temos o espaço em um tema azul para escrever o script, enquanto à direita, em um tema escuro, fica o console, onde podemos visualizar a saída do script. Para executar seu script, basta clicar no botão "run" e o resultado será exibido no console.

É possível salvar os arquivos gerados no script, como jpeg, png, mp4, pkl, entre outros. O nome dessa pasta é assets.
Existem três pastas que você pode usar através da tarefa Python, que são as pastas content, inputs e output da sua aplicação. Abaixo está um exemplo de como criar seu caminho para a pasta outputs para que você possa baixar a imagem gerada.
Na caixa de texto, você deve escrever em cada linha o nome correto da biblioteca que deseja instalar (apenas o nome, sem quaisquer outros caracteres, conforme mostrado na imagem abaixo). Após escolher a versão do Python e as bibliotecas, basta clicar no botão "Instalar" para que suas configurações sejam executadas.

Como mencionado anteriormente, temos uma classe chamada bucket, que se conecta ao ClickHouse de forma encapsulada e possui os métodos query_df, command, insert_df e create_df.
Exemplos
Função que transforma um select do ClickHouse em um dataframe pandas no Python.
Função que faz uma cópia de uma tabela do ClickHouse indicada para um dataframe pandas.
Na primeira linha temos a função que cria uma tabela no ClickHouse que é semelhante ao seu dataframe pandas, na segunda linha inserimos os dados do seu dataframe pandas na tabela do ClickHouse.
Note que para executar a função insert_df precisamos que seu dataframe pandas seja semelhante à sua tabela no ClickHouse.
Exemplo prático
Neste exemplo prático passaremos pela etapa de trazer os dados para o Python, realizar agrupamento, salvar uma imagem em formato png, salvar o arquivo do modelo, e criar e salvar a tabela final no ClickHouse.
Primeiro, vamos importar as bibliotecas que serão utilizadas
Para este exemplo usaremos a famosa tabela iris fornecida por várias bibliotecas como scikit-learn. Esta tabela está no banco ClickHouse dentro do Gaio.
Usaremos a função select_df para trazê-la para o Python e então aplicar o algoritmo kmeans fornecido pela biblioteca scikit-learn.
Neste próximo passo, vamos visualizar os grupos encontrados pelo modelo e salvar a figura na pasta assets.
Agora vamos salvar este modelo para que ele possa ser reutilizado em outros momentos; para isso usaremos a biblioteca joblib.
Agora podemos enviar o dataframe com a nova coluna gerada pelo modelo ao ClickHouse para que possa ser usado por outras tarefas do Gaio. Para isso usaremos create_df e insert_df.
Uso de Parâmetros em Tarefas Python
As Python Tasks suportam parâmetros dinâmicos, permitindo que o mesmo script seja reutilizado com diferentes entradas entre execuções, ambientes ou fluxos.
Os parâmetros são resolvidos em tempo de execução e injetados automaticamente no script.
1. Como os Parâmetros Funcionam
Parâmetros definidos na configuração da tarefa podem ser referenciados diretamente dentro do código Python utilizando a seguinte sintaxe:
Durante a execução da tarefa, o valor do parâmetro será automaticamente substituído pelo valor configurado.
2. Casos de Uso Comuns
Os parâmetros podem ser utilizados em diversos cenários, como:
Caminhos dinâmicos para ingestão de arquivos
Seleção de tabelas ou schemas
Lógicas condicionais de execução
Configurações específicas por ambiente
Processamentos baseados em datas
3. Observações Importantes
Os nomes dos parâmetros são sensíveis a maiúsculas e minúsculas (case-sensitive).
Sempre valide os valores dos parâmetros antes de utilizá-los em lógicas críticas.
Evite hardcoding de valores quando parâmetros puderem ser utilizados para tornar o script mais flexível e reutilizável.
Uso de Tabelas Temporárias em Tarefas Python
Em tarefas Python do Gaio DataOS, é comum criar tabelas temporárias para armazenar resultados intermediários durante o processamento de dados.
Para evitar conflitos de nomes entre execuções simultâneas ou entre diferentes usuários, o Gaio fornece a função:
bucket.tmp_context_table_name(table_name)
Essa função gera automaticamente um nome de tabela temporária com escopo de sessão, garantindo isolamento entre execuções.
Função
Retorna o nome de uma tabela temporária ajustado ao contexto de execução.
Comportamento
O nome da tabela pode variar dependendo do tipo de contexto em que o script está sendo executado.
Contextos com sessão
Exemplos: file-import, source, entre outros.
Nesses casos, o nome da tabela recebe automaticamente um prefixo com o identificador da sessão, garantindo isolamento entre usuários.
Contextos sem sessão
Exemplos: studio, cron, rest, api.
Nesses casos, o nome da tabela permanece inalterado.
Quando utilizar
A função bucket.tmp_context_table_name() deve ser utilizada sempre que for necessário criar ou referenciar tabelas temporárias (tmp_) dentro de scripts Python.
Isso evita:
colisão de nomes entre execuções simultâneas
interferência entre usuários
conflitos entre pipelines concorrentes
Exemplo de uso
Neste exemplo:
Um DataFrame é criado em memória.
O nome da tabela temporária é gerado com escopo de sessão.
O DataFrame é persistido na tabela.
Os dados são consultados novamente a partir da tabela criada.
Atualizado