Python
Essa tarefa te permite rodar scripts em linguagem python, a versão utilizada pode ser escolhida de acordo com as versões disponibilizadas pelo seu administrador Gaio.

Python
Essa tarefa te permite rodar scripts em linguagem python, a versão utilizada pode ser escolhida de acordo com as versões disponibilizadas pelo seu administrador Gaio.
As bibliotecas podem ser instaladas e administradas por desenvolvedores Gaio. Além disso fornecemos uma classe chamada bucket que te permite extrair e exportar dados que estão no banco de dados clickhouse que sua aplicação possui permissão.
Limite de Memória
A tarefa de Python no Gaio está limitada por padrão com no máximo 80% da memória da máquina, caso exceda esse limite te retornará um erro de limite de memória.
Faremos uma simples navegação pela interface da tarefa, e após isso desenvolveremos um script simples para servir como exemplo.
A primeira página é a principal da tarefa. Nela, à esquerda, temos o espaço em tema azul para escrever o script, enquanto à direita, em tema escuro, está localizado o console, onde podemos visualizar o output do script. Para executar o seu script, basta clicar no botão "executar" e o resultado será exibido no console.

Página de Code da Tarefa Python
A segunda página é o seu diretório padrão para salvar os arquivos gerados no script, como por exemplo arquivos jpeg, png, mp4, pkl, entre outros. O nome dessa pasta é assets.

Página de Arquivos da Tarefa Python
Existem outras três pastas que você pode utilizar através da tarefa python, que são as pastas conteúdo, inputs e output da sua aplicação.
O caminho está guardado nas seguintes variaveis: app_inputs, app_outputs e app_assets.
Segue um exemplo de como construir seu caminho para a pasta de outputs para você pode realizar o download da imagem gerada.
path = app_outputs + "/imagem_name.png"
Na caixa de texto, você deve escrever em cada linha o nome correto da biblioteca que deseja instalar (apenas o nome, sem mais nenhum caractere, 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.

Página de Environment da Tarefa Python
Como dito anteriormente possuímos uma classe chamada bucket, que realiza a conexão com o clickhouse de forma encapsulada e possuem os metodos query_df, command, insert_df e create_df.
Função que transforma um select no clickhouse em um dataframe pandas no python.
df = bucket.query_df('select colunaA, colunaB from tabela where colunaB = 'ativo')
Função que faz uma copia de uma tabela clickhouse indicada para um dataframe pandas.
df = bucket.select_df('nova_tabela')
Na primeira linha temos a função que cria uma tabela no clickhouse que seja similar ao seu dataframe pandas, na segunda linha inserimos os dados do seu dataframe pandas na tabela clickhouse.
bucket.create_df('nova_tabela', df)
bucket.insert_df('nova_tabela', df)
Note que para realizar a função insert_df precisamos que seu dataframe pandas seja similar a sua tabela clickhouse.
Nesse exemplo prático vamos passar pela parte de trazer os dados para o python, realizar um agrupamento, salvar uma imagem em formato png, salvar o arquivo do modelo, e criar e salvar a tabela final no clickhouse.
Primeiramente vamos importar as bibliotecas que serão utilizadas
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import joblib
Para esse exemplo utilizaremos a famosa tabela iris disponibilizado por varias bibliotecas como a scikit-learn. Essa tabela está no banco de dados clickhouse dentro do Gaio.
Vamos utilizar a função select_df para trazer para o python, e após isso aplicar o algoritmo kmeans disponibilizado pela biblioteca scikit-learn.
# Trazer dados para o python
data = bucket.select_df('tabela_iris')
# Aplicar o algoritmo de K-Means com 3 clusters (número escolhido arbitrariamente)
kmeans = KMeans(n_clusters=3)
data['cluster'] = kmeans.fit_predict(data)
# Avaliar o resultado - por exemplo, visualizando as médias de cada cluster
cluster_means = data.groupby('cluster').mean()
Nesse próximo passo vamos fazer uma visualização dos grupos encontrados pelo modelo e salvar a figura na pasta assets.
# Plotar os clusters em um gráfico (considerando apenas as duas primeiras colunas)
plt.scatter(data['sepal_length_cm_'], data['sepal_width_cm_'], c=data['cluster'], cmap='viridis')
plt.xlabel('sepal_length_cm_')
plt.ylabel('sepal_width_cm_')
# Salvar o gráfico em formato png
plt.savefig('assets/cluster_iris.png')
Agora vamos salvar esse modelo para poder ser reaproveitado em outros momentos, para isso vamos utilizar a biblioteca joblib.
# Salvar o modelo
joblib.dump(kmeans, 'assets/modelo_kmeans_iris.joblib')
Agora nos resta enviar o dataframe com a nova coluna gerada pelo modelo para o clickhouse para poder ser utilizadas por outras tarefas Gaio. Para isso vamos utilizar create_df e insert_df.
# Criar uma tabela no clickhouse similar ao seu dataframe
bucket.create_df('tmp_iris_clusterizada', data)
# Inserir os dados do seu dataframe em uma tabela clickhouse
bucket.insert_df('tmp_iris_clusterizada', data)
Last modified 1mo ago