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

# Laboratorio de Pentaho en Windows

{% hint style="info" %}

#### **Laboratorio Pentaho**

Pentaho Data Integration es una herramienta basada en cliente que normalmente se instala y configura para ejecutarse en Windows 11.

Hay varias opciones de licencia; para estos talleres instalaremos una edición Enterprise. Esto te dará la oportunidad de probar la creación de una solución completa: canalizaciones de datos automatizadas + analítica ..
{% endhint %}

<figure><img src="/files/9d7bfa6cbeaa7cfa937096e5a9218742ed7cfd33" alt=""><figcaption><p>Niveles de Pentaho</p></figcaption></figure>

{% hint style="danger" %}
Los siguientes pasos están destinados a configurar un entorno de laboratorio Pentaho y deben completarse para terminar los talleres.

Asegúrate de haber descargado Workshop--Installation

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

{% endhint %}

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

#### Docker Desktop

Docker Desktop es una aplicación para Windows, macOS y Linux que proporciona una interfaz fácil de usar para desarrollar y ejecutar aplicaciones en contenedores. Incluye Docker Engine, Docker CLI, Docker Compose, Kubernetes y otras herramientas esenciales en un solo paquete con interfaz gráfica de usuario.

Docker Desktop simplifica la gestión de contenedores al encargarse automáticamente de la virtualización subyacente, lo que permite a los desarrolladores crear, probar e implementar aplicaciones en contenedores aislados y portátiles sin preocuparse por las diferencias de configuración del entorno. Es especialmente popular entre los desarrolladores que quieren asegurarse de que sus aplicaciones se ejecuten de forma coherente en distintos entornos, desde máquinas de desarrollo locales hasta servidores de producción.
{% endhint %}

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

1. Descarga el instalador de 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>" %}
Enlace para descargar Docker Desktop
{% endembed %}

2. Navega a: Descargas
3. Haz doble clic en: `Docker Desktop Installer.exe` para ejecutar el instalador.

De forma predeterminada, Docker Desktop se instala en `C:\Program Files\Docker\Docker`.

{% hint style="danger" %}
Cuando se te solicite, asegúrate de que la **Usar WSL 2 en lugar de Hyper-V** opción en la página de Configuración esté seleccionada.

En los sistemas que solo admiten un backend, Docker Desktop selecciona automáticamente la opción disponible.
{% endhint %}

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

3. Haz clic en Cerrar para completar el proceso de instalación.

***

{% hint style="info" %}

#### **Usuario de Docker**

Si tu cuenta de administrador es diferente de tu cuenta de usuario, debes agregar al usuario al grupo docker-users:
{% endhint %}

1. Ejecuta Administración de equipos como administrador.
2. Navega a **Usuarios y grupos locales** > **Grupos** > **docker-users**.
3. Haz clic derecho para agregar al usuario al grupo.

<figure><img src="/files/b887228e0196505cdb92527686dc8503d878032f" alt=""><figcaption><p>Agregar usuario al grupo docker</p></figcaption></figure>

4. Cierra sesión y vuelve a iniciarla para que los cambios surtan efecto.
   {% endtab %}

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

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

El usuario pentaho\_admin solo tiene permiso de LECTURA para la base de datos Steel Wheels - sampledata. La cuenta de administrador ha sido eliminada.

Como vas a ejecutar operaciones de base de datos CRUID, necesitamos desplegar un contenedor Docker de la base de datos sampledata, otorgando todos los privilegios a un usuario administrador.
{% endhint %}

{% file src="/files/23d77d179ab9b0fca27fc2c1d2f1526e1673ef57" %}

{% file src="/files/1593cf856c405bb1c687ca6d532edae0466f1ff7" %}

{% file src="/files/111905b17f4b6e1c1e29e3e8510094334af2643d" %}

1. Ejecuta el siguiente script para crear una carpeta MySQL y copiar los archivos necesarios.

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

2. Comprueba que se ha creado el directorio y que los archivos se han copiado.
3. Ejecuta el script docker-compose para crear el contenedor.

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

<figure><img src="/files/23e42000d3af6b7345308a315dd82e28a70f154f" alt=""><figcaption><p>Desplegar MySQL</p></figcaption></figure>

4. Comprueba que el contenedor está en ejecución en Docker Desktop.

<figure><img src="/files/4533a84be611d1ebcd524278ca66c91d0696af5d" alt=""><figcaption><p>contenedores Docker de mysql</p></figcaption></figure>
{% endtab %}

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

#### **Sampledata**

Lo siguiente en la lista es crear la base de datos sampledata.
{% endhint %}

<figure><img src="/files/9d2443f17289d32c643ea6714cb38fb2f71aa02f" alt=""><figcaption><p>Diagrama de relaciones</p></figcaption></figure>

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

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

Este script crea una estructura de base de datos relacional completa para una aplicación empresarial de ejemplo. Está diseñado para modelar un sistema de ventas y gestión de pedidos para una empresa que vende varios productos.
{% endhint %}

{% hint style="info" %}

#### **Configuración de la base de datos**

* Crea una base de datos llamada

  ```
  sampledata
  ```

  con conjunto de caracteres UTF-8
* Configura usuarios con permisos adecuados
* Configura el modo SQL para una mejor integridad de los datos
  {% endhint %}

{% hint style="info" %}

#### **Tablas**

**OFFICES**: Almacena las ubicaciones de las oficinas de la empresa con detalles de dirección

**EMPLOYEES**: Contiene información de los empleados con relaciones con las oficinas y la estructura de रिपोर्टes

**CUSTOMERS**: Almacena información de clientes, incluidos datos de contacto y límites de crédito

**PRODUCTS**: Contiene el catálogo de productos con información de inventario y precios

**ORDERS**: Registra los pedidos de clientes con estado y fechas

**ORDERDETAILS**: Contiene las líneas de detalle de cada pedido con cantidad y precio

**PAYMENTS**: Registra los pagos de clientes con importes y fechas

**ORDERFACT**: Una tabla de hechos para el análisis de pedidos

**CUSTOMER\_W\_TER**: Información ampliada de clientes con territorio

**DIM\_TIME**: Tabla de dimensión temporal para informes

**DEPARTMENT\_MANAGERS**: Almacena información de los gerentes de departamento

**QUADRANT\_ACTUALS**: Contiene datos financieros presupuestados frente a reales con una columna VARIANCE generada

**TRIAL\_BALANCE**: Datos contables de balance de comprobación
{% endhint %}

{% hint style="info" %}

#### **Vistas**

**customer\_order\_summary**: Resume los pedidos y el gasto por cliente

**product\_performance**: Analiza métricas de ventas de productos, incluidos ingresos y beneficios

**employee\_sales\_performance**: Sigue el rendimiento de ventas por empleado

**monthly\_sales\_trend**: Muestra las tendencias de ventas a lo largo del tiempo por mes

**product\_inventory\_status**: Clasifica los productos según los niveles de inventario

**customer\_payment\_history**: Resume la actividad de pagos y los saldos de los clientes
{% endhint %}

{% hint style="info" %}

#### **Procedimientos almacenados**

**GetCustomerOrders**: Recupera los pedidos de un cliente específico

**UpdateProductStock**: Actualiza los niveles de inventario del producto

**GetProductSalesByQuarter**: Analiza las ventas trimestrales de productos

**GetTopCustomersByRegion**: Identifica a los clientes principales por región

**GetInventoryValueByProductLine**: Calcula las métricas de inventario por línea de producto

**Disparadores**

**before\_order\_insert**: Valida las restricciones de fecha en los pedidos

**before\_payment\_insert**: Garantiza que los importes de pago sean positivos
{% endhint %}

{% hint style="info" %}

#### **Eventos**

* **daily\_maintenance**: Tarea programada para el mantenimiento de la base de datos
  {% endhint %}

1. Ejecuta el siguiente comando para crear el esquema.

```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 datos de esquema SQL en una base de datos MySQL que se ejecuta en un contenedor Docker. Aquí tienes un desglose:

Este comando lee el archivo SQL:

```powershell
Get-Content sampledata_schema.sql
```

Pasa (redirige) el contenido del archivo al siguiente comando:

```
|
```

Esto ejecuta un comando en un contenedor Docker en ejecución:

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

{% endhint %}

2. Puedes comprobar la base de datos y las tablas sampledata con los siguientes comandos.

Mostrar bases de datos:

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

Mostrar tablas:

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

Mostrar columnas de la tabla:

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

<figure><img src="/files/8ad5d3ef42a6db7f0cddea0dc33943a61369c16d" alt=""><figcaption><p>Comprobar base de datos y tablas</p></figcaption></figure>
{% endtab %}

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

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

Este script rellena la base de datos con datos de ejemplo para demostrar la funcionalidad del esquema.
{% endhint %}

{% hint style="info" %}

#### **Datos de referencia**

* Ubicaciones de oficinas en diferentes regiones
* Jerarquía de empleados con cargos
* Catálogo de productos organizado por líneas de producto
  {% endhint %}

{% hint style="info" %}

#### **Datos transaccionales**

* Registros de clientes con información de contacto
* Historial de pedidos con fechas y estado
* Detalles de pedidos con cantidades y precios
* Registros de pagos
  {% endhint %}

{% hint style="info" %}

#### **Datos financieros**

* Cifras presupuestadas frente a reales en QUADRANT\_ACTUALS
* Datos contables del balance de comprobación
  {% endhint %}

{% hint style="info" %}

#### **Características de los datos**

* Escenarios empresariales realistas con distintos estados de pedido
* Catálogo de productos completo con descripciones y precios
* Estructura jerárquica de empleados con relaciones de reporte
* Datos basados en el tiempo que abarcan varios años para el análisis de tendencias
* Datos financieros adecuados para presupuestación y análisis de variaciones
  {% endhint %}

{% hint style="info" %}

#### **Características destacadas**

* Los datos siguen restricciones de integridad referencial
* Manejo adecuado de valores NULL cuando corresponde
* Valores de precios y cantidades realistas
* Las columnas generadas (como VARIANCE) se excluyen de las inserciones directas
* Los pedidos se secuencian para cumplir las restricciones de clave externa
  {% endhint %}

1. Ejecuta el siguiente comando para cargar los datos en las tablas sampledata.

```powershell
cd \
cd MySQL
Get-Content sampledata_data.sql | docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

2. Puedes usar los siguientes comandos para comprobar que los datos se han cargado.

Para contar el número de filas en una tabla específica:

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

Para ver las primeras filas de una tabla:

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

Para comprobar los recuentos de todas las tablas:

```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 obtener un resumen de las tablas y sus estados:

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

<figure><img src="/files/fa6a516bf23dadd6efc0de52221f495559ce7856" alt=""><figcaption><p>Información de la tabla sampledata</p></figcaption></figure>
{% endtab %}
{% endtabs %}
{% endtab %}

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

#### DBeaver

Vas a necesitar una herramienta de gestión de bases de datos. DBeaver Community es una herramienta gratuita y de código abierto para la gestión de bases de datos, ideal para proyectos personales.
{% endhint %}

1. Ve a la página oficial [página de descarga de DBeaver](https://dbeaver.io/download/)

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

2. Ve a Descargas y haz doble clic en: `dbeaver-ce-25.2.5-x86_64-setup.exe`
3. Sigue las instrucciones de instalación.
4. Sigue las instrucciones en pantalla, haciendo clic en "Siguiente" y aceptando el acuerdo de licencia para continuar.
5. Elige las opciones de instalación que desees (por ejemplo, para todos los usuarios o solo para el usuario actual).

<figure><img src="/files/832781a294bdc39d86b1fd064178dfaa65eda604" alt=""><figcaption></figcaption></figure>

6. Completa el proceso de instalación.

***

{% hint style="info" %}

#### **Base de datos MySQL**

Si has completado los 3 requisitos anteriores, entonces deberías tener un contenedor Docker de MySQL expuesto en el puerto:3306 con la base de datos sampledata.
{% endhint %}

1. Inicia DBeaver y selecciona: MySQL.

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

2. Configura la conexión con las siguientes propiedades:

Usuario: root o pentaho\_user

Contraseña: password

<figure><img src="/files/a367c53bc6165fd62682cf7d3d2e2aac7fd0e460" alt=""><figcaption><p>Configurar y probar la conexión MySQL - sampledata</p></figcaption></figure>

{% hint style="warning" %}
Es posible que necesites descargar la versión compatible del controlador de la base de datos.

Activa también: allowPublicKeyRetrieval
{% endhint %}

<figure><img src="/files/c17895b999390c0fef89c7d778c4a9a7790a1bd2" alt=""><figcaption><p>Activar: allowPublicKeyRetrieval</p></figcaption></figure>

3. Prueba la conexión.

<figure><img src="/files/c29b67e4a129396586e17e4f0c83a701942188af" alt=""><figcaption><p>Probar conexión</p></figcaption></figure>

4. Despliega: databases > sampledata > Tables

<figure><img src="/files/2be2688f1b34c169f03bba4d28761070de954110" alt=""><figcaption><p>Datos de clientes</p></figcaption></figure>

5. Abre una ventana SQL y ejecuta una consulta de prueba.

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

<figure><img src="/files/fe3933fa01397b438aaa3f87fa1b6589cbae42be" 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-es/configuracion/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.
