From 9945699aa36199e88c51d3387f7f12e19740089d Mon Sep 17 00:00:00 2001
From: j-armenio <joaoarmeniosilveira@gmail.com>
Date: Wed, 4 Sep 2024 09:38:25 -0300
Subject: [PATCH] =?UTF-8?q?add:=20Conex=C3=A3o=20com=20o=20Clickhouse?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Apache Superset/Conexao_com_Clickhouse.md     | 84 +++++++++++++++++++
 Apache Superset/Criacao_de_plugins.md         |  2 +-
 .../Criacao_teste_producao_do_frontend.md     |  2 +-
 Apache Superset/Dev_Front_Remoto.md           |  5 ++
 4 files changed, 91 insertions(+), 2 deletions(-)
 create mode 100644 Apache Superset/Conexao_com_Clickhouse.md
 create mode 100644 Apache Superset/Dev_Front_Remoto.md

diff --git a/Apache Superset/Conexao_com_Clickhouse.md b/Apache Superset/Conexao_com_Clickhouse.md
new file mode 100644
index 0000000..d47b257
--- /dev/null
+++ b/Apache Superset/Conexao_com_Clickhouse.md	
@@ -0,0 +1,84 @@
+# Conexão com o Clickhouse
+---
+
+O superset não tem por padrão o driver de conexão com o `clickhouse` instalado, então devemos instalar manualmente, seguindo o tutorial em https://superset.apache.org/docs/configuration/databases#clickhouse.
+
+## Instalando o conector clickhouse
+
+Para que o conector seja instalado toda vez que for feita uma nova imagem do superset (utilizando o dockerfile disponível por padrão) deve ser criado o arquivo `./docker/requirements-local.txt` e colocado dentro dele:
+
+```txt
+clickhouse-connect>=0.6.8
+```
+
+Em seguida é necessário comentar as seguintes linhas do arquivo `.gitignore`:
+
+```gitignore
+# docker/requirements-local.txt
+# docker/*local*
+```
+
+### O arquivo `./docker/requirements-local.txt`
+
+É um arquivo de configuração de pacotes do python, como um `requirements.txt` do pip.Ele serve para assegurar que os pacotes Python sejam instalados ao executar algum `docker compose`.
+
+## Conectando ao clickhouse
+
+Para conectar ao clickhouse basta acessar o Superset no navegador, ir nas configurações clicar em adicionar novo Database e inserir os seguintes dados:
+
+- Host: host do banco de dados clickhouse
+- Port: porta que o banco está servindo
+- Database: qual banco de dados acessar
+- User: Qual usuário vai conectar no banco
+- Password: Qual a senha que deve ser utilizada par o User conectar no banco
+- Database Name: Como deve ser chamado o database dentro do Superset
+
+### Conectando ao clickhouse (programaticamente)
+
+É possível criar essa conexão automaticamente ao subir o Superset, para evitar ter de criar sempre que uma nova imagem for construida ou apagar o banco de metadados do superset.
+
+Para isso vamos utilizar o arquivo `./docker/docker-init.sh`. Esse script é executado para iniciar o superset, nele temos acesso a executar o comando:
+
+```bash
+superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI"
+```
+
+Para mater um padrão de código, o trecho adicionado deve ser parecido com
+
+```bash
+# =================== C3SL-docs Conectando o clickhouse ===================
+if [ "$SUPERSET_CONNECT_CLICKHOUSE" = "yes" ]; then
+    echo_step "5" "Starting" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)"
+
+    SUPERSET_CLICKHOUSE_URI="clickhousedb://$SUPERSET_CLICKHOUSE_USERNAME:$SUPERSET_CLICKHOUSE_PASSWORD@$SUPERSET_CLICKHOUSE_HOST:$SUPERSET_CLICKHOUSE_PORT/$SUPERSET_CLICKHOUSE_DATABSE"
+    superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI"
+
+    echo_step "5" "Complete" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)"
+fi
+# =================== C3SL-docs Conectando o clickhouse ===================
+```
+
+Ele cria uma nova conexão com o database já cofigurado anteriormente.
+
+##### :mega: NÃO TENTA CRIAR NOVA CONEXÃO SE ELA JÁ EXISTE.
+
+### Configurando as variáveis de conexão
+
+São necessárias algumas variáveis de credenciais para que seja criado o database, elas devem se criadas e adicionadas em `./docker/.env`. São elas:
+
+```bash
+# =================== C3SL-docs Conectando o clickhouse ===================
+SUPERSET_CONNECT_CLICKHOUSE=yes
+SUPERSET_CLICKHOUSE_USERNAME=depp
+SUPERSET_CLICKHOUSE_PASSWORD='<password>'
+SUPERSET_CLICKHOUSE_HOST=clickhouse.c3sl.ufpr.br
+SUPERSET_CLICKHOUSE_PORT=8123
+SUPERSET_CLICKHOUSE_DATABSE=dados_educacionais
+SUPERSET_CLICKHOUSE_DATABASE_NAME='ClickHouse - DEPP'
+# =================== C3SL-docs Conectando o clickhouse ===================
+```
+
+##### :mega: Ver com equipe de BD as credenciais para preencher as variáveis.
+
+##### :warning: Descobrir forma de não deixar essas variáveis "hardcoded" no repositório, criar script de prod.
+
diff --git a/Apache Superset/Criacao_de_plugins.md b/Apache Superset/Criacao_de_plugins.md
index 912e9a5..4451e0e 100644
--- a/Apache Superset/Criacao_de_plugins.md	
+++ b/Apache Superset/Criacao_de_plugins.md	
@@ -15,7 +15,7 @@ Para não colocar o plugin em `/tmp` crie um diretório que fica fora da raiz do
 
 Siga o tutorial até a parte que ele pede para executar `npm run dev-server`. Sim, vamos rodar local o superset-frontend (mas apenas ele, o backend e banco ainda vão estar no docker). Para que o superset não crie o serviço webpack no docker precisamos marcar a flag `BUILD_SUPERSET_FRONTEND_IN_DOCKER=false` e depois executar o `docker compose up` na raiz do projeto. Após subir o docker podemos rodar `npm run dev-server`.
 
-Baseado no que já vimos de [como rodar o frontend local]() você pode escolher como quer rodar
+Baseado no que já vimos de [como rodar o frontend local](/Criacao_teste_producao_do_frontend.md) você pode escolher como quer rodar
 
 - `npm run dev`: Sem servidor webpack
 - `npm run dev-server`: Com servidor webpack
diff --git a/Apache Superset/Criacao_teste_producao_do_frontend.md b/Apache Superset/Criacao_teste_producao_do_frontend.md
index c1500ec..25ae8f5 100644
--- a/Apache Superset/Criacao_teste_producao_do_frontend.md	
+++ b/Apache Superset/Criacao_teste_producao_do_frontend.md	
@@ -1,7 +1,7 @@
 # Criação, teste e produção do frontend Superset
 ---
 
-O superset atual é formado por vários processos:1
+O superset atual é formado por vários processos:
 
 * backend
 * banco
diff --git a/Apache Superset/Dev_Front_Remoto.md b/Apache Superset/Dev_Front_Remoto.md
new file mode 100644
index 0000000..d1d120d
--- /dev/null
+++ b/Apache Superset/Dev_Front_Remoto.md	
@@ -0,0 +1,5 @@
+# Dev Front Remoto
+---
+
+No momento a melhor solução que encontramos para o desenvolvimento usando Superset é: rodar o frontend local nas máquinas de cada dev, conectados ao backend de uma VM de desenvolvimento.
+
-- 
GitLab