> 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/windows-pentaho-lab.md).

# Laboratório Pentaho do Windows

{% 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 têm como objetivo configurar um ambiente Pentaho Lab e precisam ser concluídas para finalizar as Workshops.

Certifique-se de ter baixado a instalação do Workshop--Installation

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

{% endhint %}

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

#### Docker Desktop

Docker Desktop é um aplicativo para Windows, macOS e Linux que fornece uma interface fácil de usar para desenvolver e executar aplicativos em contêineres. Ele inclui o Docker Engine, o Docker CLI, o Docker Compose, o Kubernetes e outras ferramentas essenciais em um único pacote com interface gráfica.

O Docker Desktop simplifica o gerenciamento de contêineres ao lidar automaticamente com a virtualização subjacente, permitindo que os desenvolvedores criem, testem e implantem aplicativos em contêineres isolados e portáteis sem se preocupar com diferenças na configuração do ambiente. Ele é particularmente popular entre desenvolvedores que desejam garantir que seus aplicativos sejam executados de forma consistente em diferentes ambientes, de máquinas de desenvolvimento locais a servidores de produção.
{% endhint %}

{% embed url="<https://www.docker.com/products/docker-desktop/>" %}

1. Baixe o instalador do Docker Desktop.

{% embed url="<https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_campaign=dd-smartbutton&utm_location=module&utm_medium=webreferral&utm_source=docker>" %}
Link para baixar o Docker Desktop
{% endembed %}

2. Navegue até: Downloads
3. Clique duas vezes em: `Docker Desktop Installer.exe` para executar o instalador.

Por padrão, o Docker Desktop é instalado em `C:\Program Files\Docker\Docker`.

{% hint style="danger" %}
Quando solicitado, certifique-se de que a **Usar WSL 2 em vez de Hyper-V** opção na página de Configuração esteja selecionada.

Em sistemas que suportam apenas um backend, o Docker Desktop seleciona automaticamente a opção disponível.
{% endhint %}

<figure><img src="/files/327612b8c1e5fa1063b60eff856bd2696c0763d2" alt=""><figcaption><p>Usar WSL 2</p></figcaption></figure>

3. Feche para concluir o processo de instalação.

***

{% hint style="info" %}

#### **Usuário do Docker**

Se sua conta de administrador for diferente da sua conta de usuário, você deve adicionar o usuário ao grupo docker-users:
{% endhint %}

1. Execute o Gerenciamento do Computador como administrador.
2. Navegue até **Usuários e Grupos Locais** > **Grupos** > **docker-users**.
3. Clique com o botão direito para adicionar o usuário ao grupo.

<figure><img src="/files/fbadaa8e49616624628f010802953b1da4cca513" alt=""><figcaption><p>Adicionar usuário ao grupo docker</p></figcaption></figure>

4. Saia e entre novamente para que as alterações tenham efeito.
   {% 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/5d3aaf34703a4aa560f9bb30ec95e86d2097bd14" %}

{% file src="/files/7ebd67bc463509e41b9b2f5eea5f92abd947183f" %}

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

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

```ps1
cd \\
cd C:\Workshop--Installation\MySQL
.\copy-mysql.ps1
```

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.

```powershell
cd \\
cd C:\MySQL
.\run-docker-mysql.ps1
```

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

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

<figure><img src="/files/26825ec8275d492be47028b3d04c11ee65332300" alt=""><figcaption><p>contêineres Docker mysql</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.

```powershell
cd \\
cd MySQL
Get-Content 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
Get-Content 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;"
```

<figure><img src="/files/8b0a0ae94a282e9ccda9f29c542ff289664278af" alt=""><figcaption><p>Verificar banco de dados e tabelas</p></figcaption></figure>
{% 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.

```powershell
cd \\
cd MySQL
Get-Content 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/11edece30cd4f417b5d0737e54987872af6db599" alt=""><figcaption><p>Informações da tabela sampledata</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 para projetos pessoais.
{% endhint %}

1. Acesse a [página oficial de download do DBeaver](https://dbeaver.io/download/)

{% embed url="<https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.exe>" %}

2. Navegue até Downloads e clique duas vezes em: `dbeaver-ce-25.2.5-x86_64-setup.exe`
3. Siga as instruções de instalação.
4. Siga as instruções na tela, clicando em "Next" e concordando com o contrato de licença para prosseguir.
5. Escolha as opções de instalação desejadas (por exemplo, para todos os usuários ou para o usuário atual).

<figure><img src="/files/4f1a6a1a097407a3d3de2570867301e7d0592023" alt=""><figcaption></figcaption></figure>

6. Conclua o processo de instalação.

***

{% 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 %}


---

# 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/windows-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.
