Postado em 13 de janeiro de 2023

Instalando e Configurando o Apache Superset

Atalhos

1 - Visão Geral

Apache Superset é uma solução de BI moderna. Através de sua interface web é possível filtrar e agrupar dados de diferentes fontes, definir métricas e gráficos, e construir dashboards com elevado valor para o usuário.

Prós

  • Open Souce
  • Ótimas funcionalidades gerais

Contras

  • Idioma somente inglês

Uma tabela ou 1 view por chat, não é possível fazer relacionamentos.

2 - Instalação

Instalando o Python3 e dependências necessárias

root@ubuntu:/home/archimedes# apt update

root@ubuntu:/home/archimedes# apt install python3

root@ubuntu:/home/archimedes# apt install python3-pip

O pip é o “gerenciador de pacotes” do Python. Assim como o apt-get e o homebrew que são os gerenciadores de pacotes do Ubuntu/Mac OSX o pip é o instalador de bibliotecas de terceiros padrão do Python.

Com o pip você poderá instalar qualquer biblioteca disponível no famoso site de bibliotecas da Python Software Foundation o PyPi. Eu não tenho ideia de como verificar quantas bibliotecas Python existem hoje no PyPi, mas posso dizer que são centenas, ou milhares! São muitos MESMO, para os mais variados fins.

Instalando o Virtualenv

Uilizando o virtualenv você consegue isolar as bibliotecas do projeto A em relação ao projeto B.

Agora vamos instalar o virtualenv

root@ubuntu:/home/archimedes# pip install virtualenv

Criando um diretório no Virtualenv

Uma observação é que quando você tentar rodar o comando abaixo ele poderá pedir alguma instalação de dependência atualizada antes, no meu caso pediu que eu instalasse esta, apt install python3.8-venv, só depois consegui rodar o comando abaixo.

root@ubuntu:/home/archimedes# python3 -m venv supersetdata

Pronto criamos um diretório virtualenv onde nosso projeto ficará armazenado em uma pasta nomeado como supersetdata que corresponde a ferramenta que vamos instalar.

Eu dei um ls abaixo para mostrar que a pasta foi criada

root@ubuntu:/home/archimedes# ls
Desktop Documents Downloads Music Pictures Public Templates supersetdata Videos

Ativando o diretório Virtualenv

Para começar a usar esse virtualenv temos que ativá-lo para isso execute:

root@ubuntu:/home/archimedes# . supersetdata/bin/activate

Perceba que o seu prompt vai ser modificado e o prefixo (supersetdata) será acrescentado no começo dele como mostro abaixo:

(supersetdata) root@ubuntu:/home/archimedes#

Atualizar e instalar as dependências do pip

Para isso execute o comando abaixo

(supersetdata) root@ubuntu:/home/archimedes# pip install –upgrade setuptools pip

Instalando o superset

Após todos os passos acima serem seguidos, estamos prontos para instalar o superset

(supersetdata) root@ubuntu:/home/archimedes# pip install apache-superset

Atualizando a base de dados do Superset

Basta rodar o comando abaixo

(supersetdata) root@ubuntu:/home/archimedes# superset db upgrade

Criando usuário para acessar o superset

Preste atenção neste passo de criação de usuário Administrador, será solicitado que você defina primeiro um nome de usuário, depois nome e sobrenome e só depois a sua senha, não pense que a segunda opção pede a sua senha, porém antes de rodar o comando de criar o usuário precisamos antes rodar outro comando que irei explicar abaixo para que serve.

Precisamos antes um comando de descoberta de aplicativo, que vai informar como o superset deve ser carregado, o FLASK_APP é o comando que faz isso

O comando FLASK é instalado pelo Flask, não pelo seu aplicativo; deve ser informado onde encontrar seu aplicativo para usá-lo. A variável de ambiente FLASK_APP é usada para especificar como carregar o aplicativo, o comando é este que está abaixo:

(supersetdata) root@ubuntu:/home/archimedes# export FLASK_APP=superset

Após o coamndo acima agora sim vamos rodar o comando de criar o usuário, pois o sistema já sabe aonde o superset está para ser executado.

(supersetdata) root@ubuntu:/home/archimedes# superset fab create-admin

Username [admin]: archimedes
User first name [admin]: Archimedes
User last name [user]: Rocha
Email [admin@fab.org]: hello@archimedesrocha.com.br
Password: ****
Repeat for confirmation: ****

Pronto usuário será criado com sucesso, agora vamos para o próximo passo.

Carregando dados ficticios somente para mostrar nas dashboards

(supersetdata) root@ubuntu:/home/archimedes# superset load_examples

Criando funções e padrões de permissão

(supersetdata) root@ubuntu:/home/archimedes# superset init

Rodando o superset em um servidor local na porta 8088

(supersetdata) root@ubuntu:/home/archimedes# superset run -p 8088 –with-threads –reload –debugger

Após rodar este comando você terá a url de acesso veja a minha abaixo:

Agora digite a URL ou cole ela no seu navegador e acesse o superset, veja o acesso:

Agora logado na Dash de apresentação

 

3 - FAQ

Como carregar o superset após fechado, inciar ou startar o projeto novamente?

Ative o Virtualenv com o comando
root@ubuntu:/home/archimedes# . supersetdata/bin/activate

Depois rode a aplicação
(supersetdata)root@ubuntu:/home/archimedes# superset run -p 8088 –with-threads –reload –debugger

 

Como criar novos usuários?

Ative o Virtualenv com o comando
root@ubuntu:/home/archimedes# . supersetdata/bin/activate

Depois crie um novo usuário com o comando
(supersetdata)root@ubuntu:/home/archimedes# superset fab create-admin

 

Como startar a aplicação ao ser fechada

Para startar basta você rodar o comando
sudo /opt/pentaho/client-tools/data-integration/spoon.sh

4 - Instalando o MySQL APT Repository

Esta parte é responsável pela configuração das query que irão consultar o banco de dados ela ficam em SQL Lab, eu diria ser a parte mais importante é essa pois aqui iremos instalar o MySQL, sua dependencias e conectar o MySQL no Apache Superset.

Primeiro faça o download do MySql Community apartir deste link https://dev.mysql.com/downloads/file/?id=509020

Após acessar basta clicar no link No thanks, just start mu download assim você não precisará se cadastrar

Depois de efetuar o download, acesse o diretório, verifique se o arquivo esta na pasta de download e depois abra o seu terminal e execute o comando dpkg -i no arquivo, veja o passo a passo executado abaixo, lembre-se de está como root.

root@ubuntu:/home/archimedes# cd Downloads/
root@ubuntu:/home/archimedes/Downloads# ls
mysql-apt-config_0.8.22-1_all.deb
root@ubuntu:/home/archimedes/Downloads# dpkg -i mysql-apt-config_0.8.22-1_all.deb

Após isto se abrira uma tela de instalação abaixo siga de acordo com os prints:

Após isto o setup estará finalizado, então execute o comando:
root@ubuntu:/home/archimedes/Downloads# sudo apt-get update

Depois execute este comando para instalar o mysql-server
root@ubuntu:/home/archimedes/Downloads# apt-get install mysql-server

Então abrirá um segundo setup, siga as instruções, segue as fotos abaixo, é autoexplicativo

Pronto, agora o mysql foi configurado.

5 - Instalando o MySQL Workbench

Instalação

Primeiro faça o download do MySql Community apartir deste link https://dev.mysql.com/downloads/file/?id=509431

Após acessar basta clicar no link No thanks, just start mu download assim você não precisará se cadastrar

Depois de efetuar o download, acesse o diretório, verifique se o arquivo esta na pasta de download e depois abra o seu terminal e execute o comando dpkg -i no arquivo, veja o passo a passo executado abaixo, lembre-se de está como root.

root@ubuntu:/home/archimedes# cd Downloads/
root@ubuntu:/home/archimedes/Downloads# ls
mysql-apt-config_0.8.22-1_all.deb
root@ubuntu:/home/archimedes/Downloads# dpkg -i mysql-workbench-community_8.0.28-1ubuntu20.04_amd64.deb

Corrigindo problemas

Se tiver algum problema de dependencia neste procedimento execute o comando
apt –fix-broken install

Depois tente novamente rodar
root@ubuntu:/home/archimedes/Downloads# dpkg -i mysql-workbench-community_8.0.28-1ubuntu20.04_amd64.deb

Após isto o Mysql Workbench estará instalado, apenas abra pelo atalho, após aberto click em conectar local conforme print abaixo e digite sua senha e pronto:

6 - Instalando dependências MySQL

Apenas execute os comandos destinados a sua distribuição segue link https://pypi.org/project/mysqlclient/

Como a nossa é ubuntu, segue o comando

root@ubuntu:/home/archimedes/Downloads# sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

root@ubuntu:/home/archimedes/Downloads# pip install mysqlclient

7 - Bancos externos

Carregando dados reais no superset

Este tópico vai te ajudar a resolver esta situação, primeiro vou apresentar a aba Dashboard que é a responsável por apresentar todos os banco de dados em nossa aplicação como subimos agora só temos uma de exemplo, segue abaixo:

Para adicionar um novo banco de dados bas clicar em adicionar database, veja a imagem abaixo:

Uma observação é que por padrão o superset não dá suporte a drive de conexão de todos os bancos, caso isso ocorra com você terá que instalar na mão, veja a lista de compatibilidade aqui https://superset.apache.org/docs/databases/installing-database-drivers

Após efetuar alguma adição de banco você poderá ir na aba Datasets e ver todas as Datasets que estão funcionando e consequentemente estas Datasets são utilizadas para atribuirem valores aos gráficos, este processo vai ficar mais claro logo adiante, veja a aba de Datasets primeiro:

8 - Configurando Dashboard e Chart

Agora que vimos a Aba de Datasets vou mostrar como você atribui um Dataset há uma Char que nada mais que um modelo de gráfico para adicionar clique no sinal de + e selecione Chart veja a imagem:

Os três passos seguintes abaixo estarão em uma unica imagem nuerados

  • Selecione a sua Dataset
  • Selecione o tipo do gráfico
  • Clique em create new chart

Veja que eu selecionei um gráfico do tipo Barra, após você clicar em Create New Chart você será direcionado para a página de configuração, qual e a forma que esse gráfico vai coletar os dados para exibi-los? Você vai ver agora, vou listar abaixo o que será feito numerado e em seguida acompanhe na foto:

  • Você deve selecionar o tempo, qual o tempo de comparação, isso em Time Column selecionamos que a comparação será em anos.
  • Seleção de Query’s de exibição, isso é buscado no banco de dados, aí você vai ter que saber exatamente o que você quer buscar no banco para apresentar no gráfico

Começaremos selecionando qual e a métrica de medição na opção Metrics ela é responsável pelo o que será exibido o que será medido no gráfico? Total da população do planeta por exemplo, foi a que selecionamos.

Depois logo abaixo tem Filters aqui você aplica alguma lógica para a exibição dos seus dados ou selecionar para exibir apenas a população norte de São Paulo ou uma lógica que só exiba pessoas acima de 50 anos, eu não setei nada.

Tambem você precisará definir Series que será a categoria do que será exibido, eu selecione para exibir a população do planeta todinho por nome de país, então casa pais terá quantos habitantes possui.

Em breakdowns você pode ainda sleecionar mais especificamente para saber quanto tempo a china levou em anos para ter a sua capacidade populacional que tem hoje? Bas apenas selecionar year nessa aba, mais não vou selecionar.

Em Row limits é q quantidade de linhas de exibição

E Sort By é mais uma métrica de filtragem, tipo quanto é a população rural desses paises, quantos casos de aids tiveram e assim sucessivamente.

Veja agora a Das com tudo que expliquei, e após isto definido clique em salvar, segue foto:

9 - Pentahoo Spool - Consumindo dados externos em banco local

Instalação

Primeiro faça o download do MySql Community apartir deste link https://dev.mysql.com/downloads/file/?id=509431

Devemos primeiro ter uma forma de consumir dados, consumir dados através de PDI e ETL é a forma de consumir dados externos e inserilos dentro de um banco de dados local

Vamos primeiramente instalar uma ferramente chamada Pentaho from Hitachi Vantara faça o download neste link https://sourceforge.net/projects/pentaho/

Após isto precisaremos efetuar algumas configurações no linux, mais primeiro extraia o conteudo do download em uma pasta, o meu ficou na home, lembre-se desse caminho você vai precisar mais tarde.

Agora vamos instalar o Java 8 caso você não tenha instalado rode o comando
root@ubuntu:/home/archimedes# sudo apt install openjdk-8-jdk

Agora vamos criar um diretório que será especifico para o Spool
root@ubuntu:/home/archimedes# sudo mkdir -p /opt/pentaho/client-tools/

Em seguida vamos mover a pasta que foi extraida para o diretório que criamos acima, dependendo de onde você extraiu ajuste o caminho abaixo, como a minha estava na home vai ficar assim como abiaxo:
root@ubuntu:/home/archimedes# sudo cp -r data-integration/ /opt/pentaho/client-tools/

Agora vamos adicionar as permissões a pasta
root@ubuntu:/home/archimedes# sudo chmod 775 /opt/pentaho/client-tools/data-integration/*.sh

Pronto agora vamos abrir o Pentaho, rode o comando
root@ubuntu:/home/archimedes# sudo /opt/pentaho/client-tools/data-integration/spoon.sh

10 - Correção de possíveis erros

1 – Failed to load module “canberra-gtk-module”

Para resolver, instale o pacote libcanberra-gtk-module com o seguinte comando:
sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

2 – Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper

Abra o arquivo a seguir com o seu editor da sua preferencia
sudo vi /etc/java-8-openjdk/accessibility.properties

E comente a seguinte linha:
#assistive_technologies=org.GNOME.Accessibility.AtkWrapper

3 – O meu deu um erro informando que estava faltando instalar o pacote libwebkitgtk-1.0-0 mais quando eu ia instalar era informado que o pacote era obsoleto, então tive que seguir os seguintes passos:

  • sudo nano /etc/apt/sources.list
  • Add this entry to the file and save: deb <http://cz.archive.ubuntu.com/ubuntu> bionic main universe
  • sudo apt-get update
  • sudo apt-get install libwebkitgtk-1.0-0 -> if you are using Vega and jdk of 64 bitssudo apt-get install libwebkitgtk-1.0-0:i386 -> if you are using Vega and jdk of 32 bits

4 – Tive outro problema que foi com a instalação do java, na verdade esta rodando uma versão do java na minha máquina que não era a versão pretendida pela aplicação e tive vários problemas, tive que rodar este comando sudo apt-get purge openjdk* para eliminar tudo e depois de remover instalei o java sudo apt install openjdk-8-jdk