# Laboratorio Pentaho en Windows

{% hint style="info" %}

#### **Laboratorio Pentaho**

Pentaho Data Integration es una herramienta basada en cliente comúnmente instalada y configurada para ejecutarse en Windows 11.

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

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FaO9M8NuR6rzHnWiAvgEi%2Fimage.png?alt=media&#x26;token=135c03ed-25dd-465c-9b25-6c2abe6ed093" 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 finalizar los talleres.

Asegúrate de haber descargado Workshop--Installation&#x20;

```
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. Agrupa el Docker Engine, Docker CLI, Docker Compose, Kubernetes y otras herramientas esenciales en un solo paquete con una interfaz gráfica de usuario.&#x20;

Docker Desktop simplifica la gestión de contenedores al manejar automáticamente la virtualización subyacente, permitiendo a los desarrolladores construir, probar y desplegar aplicaciones en contenedores aislados y portátiles sin preocuparse por las diferencias de configuración del entorno. Es particularmente popular entre desarrolladores que quieren garantizar 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: `Docker Desktop Installer.exe` para ejecutar el instalador.

Por defecto, 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 sistemas que solo admiten un backend, Docker Desktop selecciona automáticamente la opción disponible.
{% endhint %}

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FKBG27SUuTlAYI8OCLtDk%2Fimage.png?alt=media&#x26;token=552b06bd-5966-4a9b-95ee-4b826a89781b" alt=""><figcaption><p>Usar WSL 2</p></figcaption></figure>

3. Cerrar para completar el proceso de instalación.

***

{% hint style="info" %}

#### **Usuario de Docker**

Si tu cuenta de administrador es diferente a tu cuenta de usuario, debes agregar el 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 el usuario al grupo.

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FGdGKjQIayhbbRzAmRBP8%2Fimage.png?alt=media&#x26;token=0e3f6123-f8d4-41be-b432-3621b0a19ca7" alt=""><figcaption><p>Agregar usuario al grupo docker</p></figcaption></figure>

4. Cierra la 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 realizar operaciones CRUD en la base de datos, necesitamos desplegar una base de datos sampledata en un contenedor Docker, otorgando todos los privilegios a un usuario administrador.
{% endhint %}

{% file src="<https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2F6hPSoZkwDCVQoPvmTu20%2Fcopy-mysql.ps1?alt=media&token=992633e7-24c1-4b23-84f0-c14770c1164a>" %}

{% file src="<https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FXnkS8JtDisS2P2nqJLvC%2Frun-docker-mysql.ps1?alt=media&token=f12b269e-427e-48bf-8b36-c55253cc81f7>" %}

{% file src="<https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FlbsqipaAdqdhpvHj7FTv%2Fdocker-compose.yml?alt=media&token=fde4bc13-9715-4257-8feb-b5f70639dae4>" %}

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. Verifica que el directorio se haya creado y que los archivos se hayan copiado.
3. Ejecuta el script docker-compose para crear el contenedor.

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

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FHnql132ameJUQL5OGA74%2Fimage.png?alt=media&#x26;token=a242c86f-d75e-47c4-a592-bf9767243bc6" alt=""><figcaption><p>Desplegar MySQL</p></figcaption></figure>

4. Comprueba que el contenedor esté activo y en funcionamiento en Docker Desktop.

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FbzmptT3CVaRADQKBkjMl%2Fimage.png?alt=media&#x26;token=31182fee-8ad9-40c2-9e3e-fa1c5d9324d9" alt=""><figcaption><p>contenedores docker mysql</p></figcaption></figure>
{% endtab %}

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

#### **Sampledata**

A continuación en la lista está crear la base de datos sampledata.
{% endhint %}

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FfHrm1HbmPxxV8bPSDUK9%2Fimage%20(62).png?alt=media&#x26;token=4d4eb534-9ee4-49eb-80d1-17c363ada1f1" 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 de negocio 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 apropiados
* Configura el modo SQL para una mejor integridad de los datos
  {% endhint %}

{% hint style="info" %}

#### **Tablas**

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

**EMPLEADOS**: Contiene información de empleados con relaciones a oficinas y estructura de reportes

**CLIENTES**: Almacena información de clientes incluyendo detalles de contacto y límites de crédito

**PRODUCTOS**: Contiene el catálogo de productos con inventario e información de precios

**PEDIDOS**: Rastrea pedidos de clientes con estado y fechas

**DETALLES\_PEDIDO**: Contiene las líneas de cada pedido con cantidad y precio

**PAGOS**: Registra pagos de clientes con montos y fechas

**FACT\_PEDIDO**: Una tabla de hechos para analítica de pedidos

**CLIENTE\_CON\_TER**: Información extendida del cliente con territorio

**DIM\_TIEMPO**: Tabla dimensión tiempo para informes

**GERENTES\_DEPARTAMENTO**: Almacena información de gerentes de departamento

**CUADRANTE\_REALES**: Contiene datos financieros de presupuesto vs. reales con una columna VARIANCE generada

**BALANCE\_DE\_COMPROBACIÓN**: Datos contables financieros
{% endhint %}

{% hint style="info" %}

#### **Vistas**

**resumen\_pedidos\_cliente**: Resume pedidos y gastos por cliente

**rendimiento\_producto**: Analiza métricas de ventas de productos incluyendo ingresos y beneficio

**rendimiento\_ventas\_empleado**: Rastrea el rendimiento de ventas por empleado

**tendencia\_ventas\_mensual**: Muestra tendencias de ventas a lo largo del tiempo por mes

**estado\_inventario\_producto**: Categoriza productos por niveles de inventario

**historial\_pagos\_cliente**: Resume la actividad de pagos y saldos de clientes
{% endhint %}

{% hint style="info" %}

#### **Procedimientos almacenados**

**ObtenerPedidosCliente**: Recupera pedidos para un cliente específico

**ActualizarStockProducto**: Actualiza los niveles de inventario de productos

**ObtenerVentasProductoPorTrimestre**: Analiza las ventas de productos por trimestre

**ObtenerMejoresClientesPorRegión**: Identifica los mejores clientes por región

**ObtenerValorInventarioPorLíneaProducto**: Calcula métricas de inventario por línea de producto

**Disparadores**

**antes\_insertar\_pedido**: Valida restricciones de fecha en pedidos

**antes\_insertar\_pago**: Asegura que los montos de pago sean positivos
{% endhint %}

{% hint style="info" %}

#### **Eventos**

* **mantenimiento\_diario**: Tarea programada para 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 del esquema SQL a una base de datos MySQL que se ejecuta en un contenedor Docker. Aquí hay un desglose:

Este comando lee el archivo SQL:

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

Envía (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 sampledata y las tablas 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="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FRdQGb6Vr3qtw2ot3KsM5%2Fimage.png?alt=media&#x26;token=2909bf5d-c81f-4b4f-a447-93fc903dd48b" 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 pobla 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 de presupuesto vs. reales en CUADRANTE\_REALES
* Datos contables de balance de comprobación
  {% endhint %}

{% hint style="info" %}

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

* Escenarios comerciales realistas con estados de pedidos variados
* 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 análisis de tendencias
* Datos financieros adecuados para presupuestos y análisis de variaciones
  {% endhint %}

{% hint style="info" %}

#### **Características notables**

* Los datos siguen restricciones de integridad referencial
* Manejo adecuado de valores NULL cuando corresponde
* Precios y cantidades realistas
* Las columnas generadas (como VARIANCE) están excluidas de inserciones directas
* Los pedidos están secuenciados para satisfacer las restricciones de claves foráneas
  {% 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 conteos 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="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2Fe0qSyplq4BSWdMja0KmU%2Fimage.png?alt=media&#x26;token=6e535223-9a4d-4916-b8f5-a3b41128907b" alt=""><figcaption><p>información de tablas 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 para proyectos personales.
{% endhint %}

1. Ve al 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. Navega 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 deseadas (por ejemplo, para todos los usuarios o el usuario actual).

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FyqemtZhN9dE6mAXXMHOT%2Fimage.png?alt=media&#x26;token=3d12607c-5d6c-46b8-8f8e-7f5642756b20" alt=""><figcaption></figcaption></figure>

6. Completa el proceso de instalación.&#x20;

***

{% hint style="info" %}

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

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

1. Inicia DBeaver y selecciona: MySQL.

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FdO4Wo4hKJzPuJW6OCI7C%2Fimage.png?alt=media&#x26;token=72d92d39-22dd-4603-a480-94495aa6a808" alt=""><figcaption><p>MySQL</p></figcaption></figure>

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

Nombre de usuario: root o pentaho\_user

Contraseña: password

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2Fx4hj27wSVxKqareREN8p%2Fimage.png?alt=media&#x26;token=1268171f-8274-4cdb-87af-f0f44c3a5392" alt=""><figcaption><p>Configurar y probar la conexión MySQL - sampledata</p></figcaption></figure>

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

También habilita: allowPublicKeyRetrieval
{% endhint %}

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FMcdTFaqU0LsctCgZfC7S%2Fimage%20(56).png?alt=media&#x26;token=2a981c76-44d2-416d-a6f1-f08152c14740" alt=""><figcaption><p>Habilitar: allowPublicKeyRetrieval</p></figcaption></figure>

3. Prueba la conexión.

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FMMdsCwDdInxb5tkHhfjS%2Fimage.png?alt=media&#x26;token=420b31e7-86a7-46f6-807f-255c607e3526" alt=""><figcaption><p>Probar conexión</p></figcaption></figure>

4. Expande: databases > sampledata > Tables

<figure><img src="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FE7sRaOXCFgJLUlfRmbyv%2Fimage.png?alt=media&#x26;token=ecf46ab4-f4f5-4f8c-bc48-15b85389da2a" 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="https://784287830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FEiNfAWHg3ZxaJX6INeIC%2Fimage.png?alt=media&#x26;token=bec6eaec-6e08-488e-ab04-85001312c550" alt=""><figcaption><p>Consulta SQL - Clientes de NYC</p></figcaption></figure>
{% endtab %}
{% endtabs %}
