> For the complete documentation index, see [llms.txt](https://academy.pentaho.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.pentaho.com/pentaho-11-installation-en/pentaho-11-installation-pt-br/configuracao/ubuntu-pentaho-lab.md).

# Laboratório Pentaho do Ubuntu

{% hint style="info" %}

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

Pentaho Data Integration é uma ferramenta baseada em cliente, normalmente instalada e configurada para ser executada no Windows 11.

Há várias opções de licenciamento; para estas workshops, vamos instalar uma Edição Enterprise. Isso lhe dará a oportunidade de experimentar a criação de uma solução completa - pipelines de dados automatizados + analytics ..
{% endhint %}

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

{% hint style="danger" %}
As etapas a seguir destinam-se à configuração de um ambiente Pentaho Lab e precisam ser concluídas para finalizar os Workshops.

Certifique-se de ter baixado 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 de 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 aplicativos e suas dependências em contêineres leves e portáteis. Os contêineres garantem que os aplicativos sejam executados de forma consistente em diferentes ambientes de computação, de laptops de desenvolvimento a servidores de produção. Este workshop orientará você pelo processo completo 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 os 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 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 Docker foi adicionado, atualize o índice de pacotes.

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

6. Instale o Docker Engine, o 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 foi instalado corretamente conferindo a versão.

```bash
docker --version
```

Você deverá 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 contêiner hello-world.

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

{% hint style="info" %}
Este comando baixa uma imagem de teste e a executa em um contêiner. Se tiver sucesso, 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 de sudo. Para executar comandos 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 saia e entre novamente).

```bash
newgrp docker
```

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

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

4. Certifique-se de que o Docker inicie 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 as informações do sistema Docker:

```bash
docker info
```

Liste os contêineres em execução:

```bash
docker ps
```

Liste todos os contêineres (incluindo os parados):

```bash
docker ps -a
```

Liste as imagens baixadas:

```bash
docker images
```

***

{% hint style="info" %}

#### Comandos Comuns

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

* `docker pull <image>` - Baixe uma imagem do Docker Hub
* `docker images` - Liste todas as imagens locais
* `docker run <image>` - Crie e inicie um contêiner a partir de uma imagem
* `docker ps` - Liste os contêineres em execução
* `docker ps -a` - Liste todos os contêineres
* `docker stop <container>` - Pare um contêiner em execução
* `docker rm <container>` - Remova um contêiner parado
* `docker rmi <image>` - Remova uma imagem
* `docker logs <container>` - Veja os logs do contêiner
* `docker exec -it <container> bash` - Acesse o shell de um contêiner em execução
  {% endhint %}
  {% endtab %}

{% tab title="Contêiner MySQL" %}
{% hint style="info" %}

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

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

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

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

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

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

1. Execute o seguinte script 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 se os arquivos foram copiados.
3. Execute o script docker-compose para criar o contêiner.

```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>Implante o contêiner Docker do MySQL</p></figcaption></figure>

4. Verifique se o contêiner está ativo e em execução no Docker.

```
docker ps
```

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

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

#### **Sampledata**

O próximo item da 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 abrangente de banco de dados relacional para uma aplicação empresarial de exemplo. 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**

**OFFICES**: Armazena os locais dos escritórios da empresa com detalhes de endereço

**EMPLOYEES**: Contém informações dos funcionários com relacionamentos com os escritórios e a estrutura de reporte

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

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

**ORDERS**: Acompanha os pedidos dos clientes com status e datas

**ORDERDETAILS**: Contém os itens de cada pedido com quantidade e preço

**PAYMENTS**: Registra os pagamentos dos clientes com valores e datas

**ORDERFACT**: Uma tabela fato para análise de pedidos

**CUSTOMER\_W\_TER**: Informações estendidas do cliente com território

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

**DEPARTMENT\_MANAGERS**: Armazena informações dos gerentes de departamento

**QUADRANT\_ACTUALS**: Contém dados financeiros de orçamento versus realizado com uma coluna VARIANCE gerada

**TRIAL\_BALANCE**: Dados contábeis financeiros
{% endhint %}

{% hint style="info" %}

#### **Visões**

**customer\_order\_summary**: Resume pedidos e gastos por cliente

**product\_performance**: Analisa métricas de vendas de produtos, incluindo receita e lucro

**employee\_sales\_performance**: Acompanha o desempenho de vendas por funcionário

**monthly\_sales\_trend**: Mostra tendências de vendas ao longo do tempo por mês

**product\_inventory\_status**: Categoriza os produtos por níveis de estoque

**customer\_payment\_history**: Resume a atividade de pagamento e os saldos dos clientes
{% endhint %}

{% hint style="info" %}

#### **Procedimentos Armazenados**

**GetCustomerOrders**: Recupera os pedidos de um cliente específico

**UpdateProductStock**: Atualiza os níveis de estoque do produto

**GetProductSalesByQuarter**: Analisa as vendas trimestrais de produtos

**GetTopCustomersByRegion**: Identifica os principais clientes por região

**GetInventoryValueByProductLine**: Calcula métricas de estoque por linha de produtos

**Triggers**

**before\_order\_insert**: Valida as restrições de data nos pedidos

**before\_payment\_insert**: Garante que os valores de pagamento sejam positivos
{% endhint %}

{% hint style="info" %}

#### **Eventos**

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

1. Execute o seguinte comando para criar o schema.

```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 dados de schema SQL para um banco de dados MySQL em execução em um contêiner Docker. Veja o detalhamento:

Este comando lê o arquivo SQL:

```powershell
cat sampledata_schema.sql
```

Direciona (encaminha) o conteúdo do arquivo para o próximo comando:

```
|
```

Isso executa um comando em um contêiner 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 e as tabelas sampledata com os comandos a seguir.

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 preenche o banco de dados com dados de exemplo para demonstrar a funcionalidade do schema.
{% endhint %}

{% hint style="info" %}

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

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

{% hint style="info" %}

#### **Dados Transacionais**

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

{% hint style="info" %}

#### **Dados Financeiros**

* Valores de orçamento versus realizado em QUADRANT\_ACTUALS
* Dados contábeis do balancete
  {% endhint %}

{% hint style="info" %}

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

* Cenários empresariais realistas com status de pedido variados
* Catálogo de produtos abrangente com descrições e preços
* Estrutura hierárquica de funcionários com relacionamentos 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 variação
  {% 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ços e quantidades
* Colunas geradas (como VARIANCE) são excluídas de inserções diretas
* Os pedidos são sequenciados para atender às 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 a contagem 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, ideal para projetos pessoais.
{% endhint %}

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

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

Ou

Acesse a página 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. Fixe o DBeaver no Dash - barra inferior.

***

{% hint style="info" %}

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

Se você concluiu os 3 requisitos anteriores, então você deve ter um contêiner Docker MySQL, exposto na porta 3306 com o banco de dados sampledata.
{% endhint %}

1. Abra 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 a conexão MySQL - sampledata</p></figcaption></figure>

{% hint style="warning" %}
Talvez você precise baixar a versão compatível do driver do banco de dados.

Além disso, habilite: allowPublicKeyRetrieval
{% endhint %}

<figure><img src="/files/62717886db52a044f9f6365b6260f6cc95367bf8" alt=""><figcaption><p>Habilite: 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 do Cliente</p></figcaption></figure>

5. Abra uma janela SQL e execute uma consulta 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 de problemas gerais (clique para expandir)</summary>

**Problema: erros de "permission denied"**

* Solução: Verifique se seu usuário está no grupo docker e se você saiu/entrou novamente ou execute `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 ao daemon do Docker**

* Solução: Verifique se o serviço Docker está em execução com `sudo systemctl start docker`

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
