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

# Laboratorio de Pentaho en Ubuntu

{% 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 de Pentaho y deben completarse en orden para finalizar los talleres.

Asegúrese de haber descargado el Taller--Instalación:

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

Para instalar git:

```bash
sudo apt install git
```

{% endhint %}

{% hint style="info" %}
**Requisitos previos**

* Sistema Ubuntu 24.04 LTS (máquina física o virtual)
* Cuenta de usuario con privilegios sudo
* Conexión a Internet
* Familiaridad básica con la línea de comandos de Linux
  {% endhint %}

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

#### Docker

Docker es una plataforma que permite a los desarrolladores empaquetar aplicaciones y sus dependencias en contenedores ligeros y portátiles. Los contenedores garantizan que las aplicaciones se ejecuten de forma coherente en distintos entornos informáticos, desde portátiles de desarrollo hasta servidores de producción. Este taller le guiará a través del proceso completo de instalación de Docker Engine en Ubuntu 24.04 LTS (Noble Numbat).
{% endhint %}

1. Antes de instalar Docker, actualice su lista de paquetes existente.

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

2. Instale los paquetes que permiten a apt usar repositorios sobre HTTPS.

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

3. Cree un directorio para los keyrings y añada la clave GPG de 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. Añada el repositorio de Docker a sus fuentes 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. Ahora que se ha añadido el repositorio de Docker, actualice el índice de paquetes.

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

6. Instale Docker Engine, containerd y Docker Compose.

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

7. Compruebe que Docker está instalado correctamente verificando la versión.

```bash
docker --version
```

Debería ver una salida similar a (noviembre de 2025):

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

8. Verifique que Docker Engine se está ejecutando.

```bash
sudo systemctl status docker
```

El servicio debería mostrarse como "activo (en ejecución)".

9. Salir.

```bash
q
```

10. Pruebe su instalación de Docker ejecutando el contenedor hello-world.

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

{% hint style="info" %}
Este comando descarga una imagen de prueba y la ejecuta en un contenedor. Si tiene éxito, verá un mensaje que confirma que Docker funciona correctamente.
{% endhint %}

***

{% hint style="info" %}

#### Sin Sudo

De forma predeterminada, Docker requiere privilegios sudo. Para ejecutar comandos de Docker sin sudo.
{% endhint %}

1. Añada su usuario al grupo docker.

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

2. Aplique la nueva pertenencia al grupo (o cierre sesión y vuelva a iniciarla).

```bash
newgrp docker
```

3. Verifique que puede ejecutar Docker sin sudo.

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

4. Asegúrese de que Docker se inicie automáticamente cuando el sistema arranque.

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

***

{% hint style="info" %}

#### Verificación y pruebas

Para confirmar que todo funciona correctamente, ejecute los siguientes comandos:
{% endhint %}

Compruebe la versión de Docker:

```bash
docker version
```

Ver información del sistema Docker:

```bash
docker info
```

Listar contenedores en ejecución:

```bash
docker ps
```

Listar todos los contenedores (incluidos los detenidos):

```bash
docker ps -a
```

Listar las imágenes descargadas:

```bash
docker images
```

***

{% hint style="info" %}

#### Comandos comunes

Estos son comandos esenciales de Docker que usará con regularidad:

* `docker pull <image>` - Descargar una imagen de Docker Hub
* `docker images` - Listar todas las imágenes locales
* `docker run <image>` - Crear e iniciar un contenedor a partir de una imagen
* `docker ps` - Listar contenedores en ejecución
* `docker ps -a` - Listar todos los contenedores
* `docker stop <container>` - Detener un contenedor en ejecución
* `docker rm <container>` - Eliminar un contenedor detenido
* `docker rmi <image>` - Eliminar una imagen
* `docker logs <container>` - Ver los registros del contenedor
* `docker exec -it <container> bash` - Acceder a la shell de un contenedor en ejecución
  {% endhint %}
  {% 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/5bbbcddba1af8d1502770bbdaa869da8dc6e9960" %}

{% file src="/files/2322de136282a8f066b2290acf65ce0dae3d9b4b" %}

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

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

```bash
cd
cd ~/Workshop--Installation/MySQL
# Hacerlo ejecutable
chmod +x copy_mysql.sh
./copy_mysql.sh
```

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.

```bash
cd
cd ~/MySQL
# Hacerlo ejecutable
chmod +x run_mysql_compose.sh
./run_mysql_compose.sh
```

<figure><img src="/files/b625954524a808ff5443ccf3f6dc24cfbe89ebc0" alt="" width="500"><figcaption><p>Desplegar contenedor Docker de MySQL</p></figcaption></figure>

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

```
docker ps
```

<figure><img src="/files/46e33f0a7f44cd8b67e23ef9715a451ebefff0c9" 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.

```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 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
cat 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;"
```

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

```bash
cd 
cd ~/MySQL
cat 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/c680937e1f59eed68f951f2dddf9d815a0e0755d" alt=""><figcaption><p>Comprobar tablas</p></figcaption></figure>
{% endtab %}
{% endtabs %}
{% endtab %}

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

#### DBeaver

Va 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 en proyectos personales.
{% endhint %}

1. La opción más sencilla es descargarlo e instalarlo desde Snapstore.

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

O

Vaya a la [página de descargas de DBeaver](https://dbeaver.io/download/)

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

O

Para instalar ese archivo 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. Fije DBeaver en Dash - barra inferior.

***

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

<details>

<summary>Solución general de problemas (haz clic para expandir)</summary>

**Problema: errores de "permiso denegado"**

* Solución: Asegúrate de que tu usuario esté en el grupo docker y de que hayas cerrado sesión y vuelto a iniciarla, o ejecuta `newgrp docker`

**Problema: el servicio Docker no se inicia**

* Solución: Comprueba los registros con `sudo journalctl -u docker.service`

**Problema: no se puede conectar al demonio de Docker**

* Solución: Asegúrate de que el servicio Docker se esté ejecutando con `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-es/configuracion/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.
