# Laboratório Pentaho para Ubuntu

{% hint style="info" %}

#### **Laboratório Pentaho**

O Pentaho Data Integration é uma ferramenta baseada em cliente comumente instalada e configurada para rodar no Windows 11.

Existem várias opções de licenciamento; para estes workshops vamos instalar a Edição Enterprise. Isso lhe dará a oportunidade de testar a construção de uma solução completa - pipelines de dados automatizados + análises ..
{% endhint %}

<figure><img src="/files/f3aadd7ac2a97354c852685ee9b0c763a1462735" alt=""><figcaption><p>Camadas do Pentaho</p></figcaption></figure>

{% hint style="danger" %}
Os passos a seguir destinam-se a configurar um ambiente de Laboratório Pentaho e precisam ser concluídos para finalizar os Workshops.

Certifique-se de que você baixou o Workshop--Installation:

```bash
cd
git clone https://github.com/jporeilly/Workshop--Installation
```

Para instalar o git:

```bash
sudo apt install git
```

{% endhint %}

{% hint style="info" %}
**Pré-requisitos**

* Sistema Ubuntu 24.04 LTS (máquina física ou virtual)
* Conta de usuário com privilégios sudo
* Conexão com a Internet
* Familiaridade básica com a linha de comando do Linux
  {% endhint %}

{% tabs %}
{% tab title="Docker" %}
{% hint style="info" %}

#### Docker

Docker é uma plataforma que permite aos desenvolvedores empacotar aplicações e suas dependências em containers leves e portáteis. Containers garantem que as aplicações sejam executadas de forma consistente em diferentes ambientes de computação, desde laptops de desenvolvimento até servidores de produção. Este workshop irá guiá-lo por todo o processo de instalação do Docker Engine no Ubuntu 24.04 LTS (Noble Numbat).
{% endhint %}

1. Antes de instalar o Docker, atualize sua lista de pacotes existente.

```bash
sudo apt update && sudo apt upgrade
```

2. Instale pacotes que permitem ao apt usar repositórios via HTTPS.

```bash
sudo apt install -y ca-certificates curl gnupg lsb-release
```

3. Crie um diretório para keyrings e adicione a chave GPG do Docker.

```bash
sudo install -m 0755 -d /etc/apt/keyrings
```

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

```bash
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

4. Adicione o repositório do Docker às suas fontes do apt.

```bash
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

5. Agora que o repositório do Docker foi adicionado, atualize o índice de pacotes.

```bash
sudo apt update && sudo apt upgrade
```

6. Instale o Docker Engine, containerd e o Docker Compose.

```bash
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

7. Verifique se o Docker está instalado corretamente checando a versão.

```bash
docker --version
```

Você deve ver uma saída semelhante a (Nov 2025):

```
Docker version 29.0.2, build 810xxxx
```

8. Verifique se o Docker Engine está em execução.

```bash
sudo systemctl status docker
```

O serviço deve aparecer como "active (running)".

9. Sair.

```bash
q
```

10. Teste sua instalação do Docker executando o container hello-world.

```bash
sudo docker run hello-world
```

{% hint style="info" %}
Este comando baixa uma imagem de teste e a executa em um container. Se for bem-sucedido, você verá uma mensagem confirmando que o Docker está funcionando corretamente.
{% endhint %}

***

{% hint style="info" %}

#### Sem Sudo

Por padrão, o Docker requer privilégios sudo. Para executar comandos do Docker sem sudo.
{% endhint %}

1. Adicione seu usuário ao grupo docker.

```bash
sudo usermod -aG docker $USER
```

2. Aplique a nova associação ao grupo (ou faça logout e login novamente).

```bash
newgrp docker
```

3. Verifique se você pode executar o Docker sem sudo.

```bash
docker run hello-world
```

4. Garanta que o Docker seja iniciado automaticamente quando o sistema for inicializado.

```bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```

***

{% hint style="info" %}

#### Verificação e Testes

Para confirmar que tudo está funcionando corretamente, execute os seguintes comandos:
{% endhint %}

Verifique a versão do Docker:

```bash
docker version
```

Veja informações do sistema Docker:

```bash
docker info
```

Liste os containers em execução:

```bash
docker ps
```

Liste todos os containers (incluindo os parados):

```bash
docker ps -a
```

Liste as imagens baixadas:

```bash
docker images
```

***

{% hint style="info" %}

#### Comandos Comuns

Aqui estão os comandos essenciais do Docker que você usará regularmente:

* `docker pull <image>` - Baixar uma imagem do Docker Hub
* `docker images` - Listar todas as imagens locais
* `docker run <image>` - Criar e iniciar um container a partir de uma imagem
* `docker ps` - Listar containers em execução
* `docker ps -a` - Listar todos os containers
* `docker stop <container>` - Parar um container em execução
* `docker rm <container>` - Remover um container parado
* `docker rmi <image>` - Remover uma imagem
* `docker logs <container>` - Ver logs do container
* `docker exec -it <container> bash` - Acessar o shell de um container em execução
  {% endhint %}
  {% endtab %}

{% tab title="Container MySQL" %}
{% hint style="info" %}

#### **Docker Compose - MySQL**

O usuário pentaho\_admin possui apenas permissão de LEITURA para o banco de dados Steel Wheels - sampledata. A conta de administrador foi removida.

Como você irá executar operações CRUD no banco de dados, precisamos implantar um banco de dados sampledata - container Docker, concedendo todos os privilégios a um usuário admin.
{% endhint %}

{% file src="/files/c4113c79a6d20a7efa6705b69a0ec79215024d3f" %}

{% file src="/files/a78ce39bda09682c52e622b4290204ebfb07e851" %}

{% file src="/files/03088057f245db88b26ec0d5f90454f1f8faad02" %}

1. Execute o script a seguir para criar uma pasta MySQL e copiar os arquivos necessários.

```bash
cd
cd ~/Workshop--Installation/MySQL
# Torne-o executável
chmod +x copy_mysql.sh
./copy_mysql.sh
```

2. Verifique se o diretório foi criado e os arquivos copiados.
3. Execute o script docker-compose para criar o container.

```bash
cd
cd ~/MySQL
# Torne-o executável
chmod +x run_mysql_compose.sh
./run_mysql_compose.sh
```

<figure><img src="/files/a8f916138f3643581abec443be510db4effb8a22" alt="" width="500"><figcaption><p>Implantar container MySQL no Docker</p></figcaption></figure>

4. Verifique se o container está ativo e em execução no Docker.

```
docker ps
```

<figure><img src="/files/bdbfee12f53bc674a85ae561de39af9bcd30453f" alt=""><figcaption><p>Containers MySQL do Docker</p></figcaption></figure>
{% endtab %}

{% tab title="sampledata" %}
{% hint style="info" %}

#### **Sampledata**

O próximo passo na lista é criar o banco de dados sampledata.
{% endhint %}

<figure><img src="/files/7c31bbfce48d582da9465c98641e5d0c94aabfcb" alt=""><figcaption><p>Diagrama de Relacionamento</p></figcaption></figure>

{% tabs %}
{% tab title="1. sampledata\_schema.sql" %}
{% hint style="info" %}

#### **sampledata\_schema.sql**

Este script cria uma estrutura de banco de dados relacional abrangente para uma aplicação de exemplo de negócios. Ele foi projetado para modelar um sistema de vendas e gerenciamento de pedidos para uma empresa que vende vários produtos.
{% endhint %}

{% hint style="info" %}

#### **Configuração do Banco de Dados**

* Cria um banco de dados chamado

  ```
  sampledata
  ```

  com conjunto de caracteres UTF-8
* Configura usuários com permissões apropriadas
* Configura o modo SQL para melhor integridade dos dados
  {% endhint %}

{% hint style="info" %}

#### **Tabelas**

**ESCRITÓRIOS**: Armazena locais de escritórios da empresa com detalhes de endereço

**FUNCIONÁRIOS**: Contém informações de funcionários com relacionamentos a escritórios e estrutura de report

**CLIENTES**: Armazena informações de clientes incluindo detalhes de contato e limites de crédito

**PRODUTOS**: Contém catálogo de produtos com informações de estoque e preços

**PEDIDOS**: Rastreia pedidos de clientes com status e datas

**DETALHES\_PEDIDO**: Contém itens por pedido com quantidade e preço

**PAGAMENTOS**: Registra pagamentos de clientes com valores e datas

**FATO\_PEDIDO**: Uma tabela fato para análises de pedidos

**CLIENTE\_COM\_TERR**: Informações estendidas do cliente com território

**DIM\_TEMPO**: Tabela dimensão de tempo para relatórios

**GERENTES\_DEPARTAMENTO**: Armazena informações de gerentes de departamento

**QUADRANT\_ACTUALS**: Contém dados financeiros orçamento vs. real com uma coluna VARIANCE gerada

**BALANÇO\_DE\_TESTE**: Dados contábeis financeiros
{% endhint %}

{% hint style="info" %}

#### **Visões**

**resumo\_pedidos\_cliente**: Resume pedidos e gastos por cliente

**desempenho\_produto**: Analisa métricas de vendas de produtos incluindo receita e lucro

**desempenho\_vendas\_funcionario**: Rastreia desempenho de vendas por funcionário

**tendencia\_vendas\_mensal**: Mostra tendências de vendas ao longo do tempo por mês

**status\_estoque\_produto**: Categoriza produtos por níveis de estoque

**historico\_pagamentos\_cliente**: Resume atividade de pagamentos e saldos de clientes
{% endhint %}

{% hint style="info" %}

#### **Procedures Armazenadas**

**ObterPedidosDoCliente**: Recupera pedidos de um cliente específico

**AtualizarEstoqueProduto**: Atualiza níveis de inventário do produto

**ObterVendasProdutoPorTrimestre**: Analisa vendas de produtos por trimestre

**ObterMelhoresClientesPorRegiao**: Identifica os melhores clientes por região

**ObterValorEstoquePorLinhaDeProduto**: Calcula métricas de inventário por linha de produto

**Triggers**

**antes\_insercao\_pedido**: Valida restrições de data em pedidos

**antes\_insercao\_pagamento**: Garante que os valores de pagamento sejam positivos
{% endhint %}

{% hint style="info" %}

#### **Eventos**

* **manutencao\_diaria**: Tarefa agendada para manutenção do banco de dados
  {% endhint %}

1. Execute o seguinte comando para criar o esquema.

```bash
cd 
cd ~/MySQL
cat sampledata_schema.sql | docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

{% hint style="info" %}
Este comando está importando o esquema SQL para um banco de dados MySQL em execução em um container Docker. Aqui está uma descrição:

Este comando lê o arquivo SQL:

```powershell
cat sampledata_schema.sql
```

Encaminha (pipe) o conteúdo do arquivo para o próximo comando:

```
|
```

Isto executa um comando em um container Docker em execução:

```
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

{% endhint %}

2. Você pode verificar o banco de dados sampledata e as tabelas com os seguintes comandos.

Mostrar bancos de dados:

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" -e "SHOW DATABASES;"
```

Mostrar tabelas:

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SHOW TABLES;"
```

Mostrar colunas da tabela:

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "DESCRIBE table_name;"
```

{% endtab %}

{% tab title="2. sampledata\_data.sql" %}
{% hint style="info" %}

#### **sampledata\_data.sql**

Este script popula o banco de dados com dados de exemplo para demonstrar a funcionalidade do esquema.
{% endhint %}

{% hint style="info" %}

#### **Dados de Referência**

* Locais de escritórios em diferentes regiões
* Hierarquia de funcionários com cargos
* Catálogo de produtos organizado por linhas de produto
  {% endhint %}

{% hint style="info" %}

#### **Dados Transacionais**

* Registros de clientes com informações de contato
* Histórico de pedidos com datas e status
* Detalhes do pedido com quantidades e preços
* Registros de pagamentos
  {% endhint %}

{% hint style="info" %}

#### **Dados Financeiros**

* Valores orçados vs. reais em QUADRANT\_ACTUALS
* Dados contábeis de balancete
  {% endhint %}

{% hint style="info" %}

#### **Características dos Dados**

* Cenários de negócios realistas com status de pedidos variados
* Catálogo de produtos abrangente com descrições e preços
* Estrutura hierárquica de funcionários com relações de reporte
* Dados baseados em tempo abrangendo vários anos para análise de tendências
* Dados financeiros adequados para orçamento e análise de variância
  {% endhint %}

{% hint style="info" %}

#### **Recursos Notáveis**

* Os dados seguem restrições de integridade referencial
* Tratamento adequado de valores NULL quando apropriado
* Valores realistas de preço e quantidade
* Colunas geradas (como VARIANCE) são excluídas de inserções diretas
* Os pedidos são sequenciados para satisfazer restrições de chave estrangeira
  {% endhint %}

1. Execute o seguinte comando para carregar os dados nas tabelas sampledata.

```bash
cd 
cd ~/MySQL
cat sampledata_data.sql | docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

2. Você pode usar os seguintes comandos para verificar se os dados foram carregados.

Para contar o número de linhas em uma tabela específica:

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT COUNT(*) FROM table_name;"
```

Para ver as primeiras linhas de uma tabela:

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT * FROM table_name LIMIT 10;"
```

Para verificar contagens de todas as tabelas:

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'sampledata';"
```

Para obter um resumo das tabelas e seus status:

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SHOW TABLE STATUS;"
```

<figure><img src="/files/fb8d8e488daebefc749283bd2fbcdddf1677523f" alt=""><figcaption><p>Verificar Tabelas</p></figcaption></figure>
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="DBeaver" %}
{% hint style="info" %}

#### DBeaver

Você vai precisar de uma ferramenta de gerenciamento de banco de dados. O DBeaver Community é uma ferramenta gratuita e de código aberto para gerenciamento de bancos de dados em projetos pessoais.
{% endhint %}

1. A opção mais simples é baixar e instalar pela Snapstore.

```bash
cd
sudo apt update && sudo apt upgrade
sudo apt install snapd
sudo snap install dbeaver-ce
```

Ou

Vá para o oficial [página de download do DBeaver](https://dbeaver.io/download/)

{% embed url="<https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb>" %}

Ou

Para instalar esse arquivo DEB.

```bash
wget https://dbeaver.io/debs/dbeaver.gpg.key -O /tmp/dbeaver.gpg.key
sudo gpg --dearmor -o /usr/share/keyrings/dbeaver.gpg /tmp/dbeaver.gpg.key
echo "deb [signed-by=/usr/share/keyrings/dbeaver.gpg] https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt install dbeaver-ce
```

4. Fixar o DBeaver no Dash - barra de ferramentas inferior.

***

{% hint style="info" %}

#### **Banco de Dados MySQL**

Se você completou os 3 requisitos anteriores, então deverá ter um container MySQL Docker, exposto na porta:3306 com o banco de dados sampledata.
{% endhint %}

1. Inicie o DBeaver e selecione: MySQL.

<figure><img src="/files/c93f91ed14ef88b6f4dcffe43c47743766802727" alt=""><figcaption><p>MySQL</p></figcaption></figure>

2. Configure a conexão com as seguintes propriedades:

Nome de usuário: root ou pentaho\_user

Senha: password

<figure><img src="/files/2f83a8115582116e38e1a6a50497c2a3286cefc9" alt=""><figcaption><p>Configurar e testar conexão MySQL - sampledata</p></figcaption></figure>

{% hint style="warning" %}
Pode ser necessário baixar a versão suportada do driver do banco de dados.

Também habilite: allowPublicKeyRetrieval
{% endhint %}

<figure><img src="/files/62717886db52a044f9f6365b6260f6cc95367bf8" alt=""><figcaption><p>Habilitar: allowPublicKeyRetrieval</p></figcaption></figure>

3. Teste a conexão.

<figure><img src="/files/ed2d6af4e34435b2930592e70c3d3809eef6b963" alt=""><figcaption><p>Testar conexão</p></figcaption></figure>

4. Expanda: databases > sampledata > Tables

<figure><img src="/files/dc1db9e178e240432fcf0d00582f48db3fc2b325" alt=""><figcaption><p>Dados de Clientes</p></figcaption></figure>

5. Abra uma janela SQL e execute uma query de teste.

```sql
select * from CUSTOMERS
where COUNTRY = 'USA' and CITY = 'NYC';
```

<figure><img src="/files/a75f1b601f33a54c233964a3f4545bfa0a2a222a" alt=""><figcaption><p>Consulta SQL - Clientes de NYC</p></figcaption></figure>
{% endtab %}
{% endtabs %}

<details>

<summary>Solução Geral de Problemas (clique para expandir)</summary>

**Problema: erros "permission denied"**

* Solução: Certifique-se de que seu usuário está no grupo docker e que você saiu/entrou novamente ou executou `newgrp docker`

**Problema: o serviço Docker não inicia**

* Solução: Verifique os logs com `sudo journalctl -u docker.service`

**Problema: Não é possível conectar-se ao daemon do Docker**

* Solução: Certifique-se de que o serviço Docker está em execução com `sudo systemctl start docker`

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.pentaho.com/pentaho-11-installation-en/pentaho-11-installation-pt-br/configuracao/ubuntu-pentaho-lab.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
