# Informes de MongoDB

{% hint style="info" %}
Steel Wheels Inc tiene información de pedidos de clientes almacenada en un MongoDB. &#x20;
{% endhint %}

{% hint style="info" %}
**Pentaho Data Integration**

Para hacer el caso de uso más interesante, vamos a crear algunas canalizaciones en Pentaho Data Integration, que cargarán archivos, migrarán tablas, etc., a un MongoDB que se ejecuta en Docker.

**Pentaho Interactive Reporting**

El proceso comienza de manera similar estableciendo la conexión con MongoDB. En Interactive Reporting, puedes crear informes arrastrando y soltando campos de tus colecciones de MongoDB directamente en el lienzo del informe. Primero necesitarás crear una capa de metadatos que traduzca la estructura de documentos de MongoDB a un formato estilo relacional con el que Pentaho pueda trabajar. Esto implica definir cómo deben representarse en tus informes los documentos y arreglos anidados.

**Pentaho Analyzer**

Deberás configurar la conexión de datos de MongoDB en el servidor Pentaho configurando el conector de MongoDB. Una vez conectado, tendrás que crear un esquema Mondrian que mapee tus colecciones y campos de MongoDB a un modelo multidimensional que Analyzer pueda entender. El esquema define dimensiones, medidas y jerarquías basadas en la estructura de datos de MongoDB.

Para ambas herramientas de informes, es importante tener en cuenta que la optimización del rendimiento es crucial cuando se trabaja con MongoDB. Esto incluye crear índices apropiados en MongoDB para soportar tus consultas de informe y estructurar cuidadosamente tus pipelines de agregación para asegurar una recuperación de datos eficiente. También puede que quieras considerar el uso del framework de agregación de MongoDB para preagregar datos para informes complejos.
{% endhint %}

{% tabs %}
{% tab title="Data Integration" %}
{% hint style="info" %}

{% endhint %}

x

x

{% tabs %}
{% tab title="Archivo" %}
{% hint style="info" %}
Para esta opción, te guiaremos a través de la creación de una transformación que carga datos desde diferentes archivos en tu sistema de archivos, y luego los carga en una colección de MongoDB. Cada uno de estos archivos contiene una clave que podemos usar para unir datos en PDI antes de enviarlos al paso MongoDB Output.
{% endhint %}

#### Linux

1. Asegúrate de que el servidor Pentaho esté en funcionamiento.&#x20;

```bash
cd
cd /opt/pentaho/server/pentaho-server/
sudo ./start-pentaho.sh
```

2. Asegúrate de que Pentaho Data Integration esté en funcionamiento.

```bash
cd
cd ~/Pentaho/design-tools/data-integration
./spoon.sh
```

***

#### Crear una nueva transformación

<figure><img src="/files/b4be677d9ef43309ede09beba9f4e384e353d0b4" alt="" width="563"><figcaption><p>Archivos</p></figcaption></figure>

{% hint style="info" %}

{% endhint %}

1. Selecciona la pestaña Design en la vista del lado izquierdo.&#x20;

x

x

x

x
{% endtab %}

{% tab title="RDBMS" %}
{% hint style="info" %}
En esta transformación transferirás datos de un RDBMS de ejemplo a una base de datos MongoDB.&#x20;

Los datos de ejemplo se llaman SteelWheels y están disponibles en el servidor Pentaho, ejecutándose en el Hypersonic Database Server.
{% endhint %}

#### Linux

1. Asegúrate de que el servidor Pentaho esté en funcionamiento. El Hypersonic Database Server - SteelWheels - es un servicio embebido.

```bash
cd
cd /opt/pentaho/server/pentaho-server/
sudo ./start-pentaho.sh
```

2. Asegúrate de que Pentaho Data Integration esté en funcionamiento.

```bash
cd
cd ~/Pentaho/design-tools/data-integration
./spoon.sh
```

***

#### Crear una nueva transformación

<figure><img src="/files/ef0e9a15ce4e89d98914d16235e90029f1c2667d" alt="" width="375"><figcaption><p>Transformación - Migrar HSQLDB a MongoDB</p></figcaption></figure>

{% hint style="info" %}
El paso Table Input lee información desde una base de datos conectada usando sentencias SQL. Sentencias SQL básicas pueden generarse automáticamente haciendo clic en el botón Get SQL select statement.
{% endhint %}

1. Selecciona la pestaña Design en la vista del lado izquierdo.&#x20;
2. Desde la carpeta de la categoría Input, encuentra el paso Table Input y arrástralo y suéltalo en el área de trabajo en la vista del lado derecho.&#x20;
3. Haz doble clic en el paso Table Input para abrir el cuadro de configuración.&#x20;
4. Establece la propiedad Step Name en Select Customers.&#x20;

{% hint style="info" %}
Antes de que podamos obtener cualquier dato de la base de datos Hypersonic de SteelWheels, tendremos que crear una conexión JDBC hacia ella. &#x20;
{% endhint %}

1. Haz clic en el botón New junto al pulldown Database Connection. Esto abrirá el cuadro de diálogo Database Connection.
2. Introduce los siguientes detalles:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

3. Puedes probar la conexión haciendo clic en el botón Test en la parte inferior del cuadro de diálogo. Deberías obtener un mensaje similar a Connection Successful. Si no, entonces debes verificar detenidamente los detalles de la conexión.&#x20;
4. Haz clic en OK para volver al paso Table Input.&#x20;
5. Ahora que tenemos una conexión válida configurada, podemos obtener una lista de clientes de la base de datos SteelWheels. Copia y pega el siguiente SQL en el área de texto de la consulta:&#x20;

```sql
SELECT * FROM CUSTOMERS 
```

6. Haz clic en el botón Preview y verás una tabla con los detalles de los clientes.

x

***

{% hint style="info" %}
Este paso escribe datos a un MongoDB colección.
{% endhint %}

1. Bajo la pestaña Design, desde la carpeta de la categoría Big Data, encuentra el paso MongoDB Output y arrástralo y suéltalo en el área de trabajo en la vista del lado derecho.&#x20;
2. Crea un Hop desde el paso Table Input hasta el paso MongoDB Output.
3. Haz doble clic en el paso MongoDB Output.&#x20;
4. Introduce los siguientes detalles:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

5. Ahora, definamos la estructura de los documentos de MongoDB. Selecciona la pestaña Mongo document fields.&#x20;
6. Haz clic en el botón Get fields, y la lista de campos se poblará con los campos de la base de datos SteelWheels en el flujo ETL.
7. Por defecto, los nombres de columna en la base de datos SteelWheels están en mayúsculas. En MongoDB, estos nombres de campo deberían estar en camel case. También puedes editar manualmente los nombres de las rutas de los documentos de MongoDB en esta sección. Asegúrate de que la opción Use Field Name esté establecida en No para cada campo, así:

x

8. Al hacer clic en Preview document structure, verás un ejemplo de cómo se verá el documento cuando se inserte en la colección Customers de MongoDB.&#x20;
9. Haz clic en el botón OK para terminar la configuración de MongoDB Output.

***

#### EJECUTAR

x

x
{% endtab %}

{% tab title="Agregación de MongoDB" %}
{% hint style="info" %}
Solo por interés, exploremos el uso del framework de agregación de MongoDB en el paso MongoDB Input. Crearemos un ejemplo simple para obtener datos de una colección y mostrarte cómo puedes aprovechar el framework de agregación de MongoDB para preparar datos para el flujo de PDI.
{% endhint %}

#### Linux

1. Asegúrate de que el servidor Pentaho esté en funcionamiento. El Hypersonic Database Server - SteelWheels - es un servicio embebido.

```bash
cd
cd /opt/pentaho/server/pentaho-server/
sudo ./start-pentaho.sh
```

2. Asegúrate de que Pentaho Data Integration esté en funcionamiento.

```bash
cd
cd ~/Pentaho/design-tools/data-integration
./spoon.sh
```

***

#### Crear una nueva transformación

{% hint style="info" %}

{% endhint %}

1. Selecciona la pestaña Design en la vista del lado izquierdo.&#x20;
2. Desde la carpeta de la categoría Big Data, encuentra el paso MongoDB Input y arrástralo y suéltalo en el área de trabajo en la vista del lado derecho.&#x20;
3. Haz doble clic en el paso para abrir el diálogo MongoDB Input.&#x20;
4. Establece el nombre del paso en Select 'Baane Mini Imports' Orders.&#x20;
5. Selecciona la pestaña Input options. Haz clic en el botón Get DBs y selecciona la opción SteelWheels para el campo Database. A continuación, haz clic en Get collections y selecciona la opción Orders para el campo Collection.&#x20;
6. Selecciona la pestaña Query y luego marca la opción Query is aggregation pipeline. En el área de texto, escribe la siguiente consulta de agregación:

```sql
[
 { $match: {"customer.name" : "Baane Mini Imports"} },
 { $group: {"_id" : {"orderNumber": "$orderNumber",
 "orderDate" : "$orderDate"}, "totalSpend": { $sum: "$totalPrice"} } }
]
```

7. Desmarca la opción Output single JSON field.&#x20;
8. Selecciona la pestaña Fields.&#x20;
9. Haz clic en el botón Get Fields y obtendrás una lista de campos devueltos por la consulta.&#x20;
10. Puedes previsualizar tus datos haciendo clic en el botón Preview.&#x20;
11. Haz clic en el botón OK para terminar la configuración de este paso.

x

Queremos añadir un paso Dummy al flujo. Este paso no hace nada, pero nos permitirá seleccionar un paso para previsualizar nuestros datos. Añade el paso Dummy desde la categoría Flow al espacio de trabajo y nómbralo OUTPUT. 4. Crea un hop entre el paso Select 'Baane Mini Imports' Orders y el paso OUTPUT. 5. Selecciona el paso dummy OUTPUT y previsualiza los datos. 19

x
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="Informes interactivos" %}

{% endtab %}

{% tab title="Informes Analyzer" %}
{% hint style="info" %}
Para 'cortar y trocear' el conjunto de datos necesitaremos crear esquemas OLAP (abreviatura de Online Analytical Processing) para Pentaho basados en MongoDB.&#x20;

Pentaho utiliza el motor ROLAP (abreviatura de Relational Online Analytical Processing), llamado por Mondrian para convertir consultas MDX (abreviatura de Multidimensional Expressions) en consultas SQL.

Comencemos con un esquema Mondrian 3.x usando Schema Workbench. Primero crearemos una dimensión compartida, date. Una dimensión compartida puede ser referenciada en diferentes cubos. Sin embargo, en este caso particular, no es necesario tener una dimensión compartida porque solo tendremos un cubo..!
{% endhint %}

x

x

x

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

{% endhint %}

x

#### Linux

1. Abre la aplicación Schema Workbench. Con Schema Workbench abierto, vamos a configurar la conexión a la base de datos MongoDB.&#x20;
2. En el menú principal, selecciona Options -> Connection, e ingresa los siguientes detalles:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

3. Haz clic en el botón Test y deberías obtener un cuadro de mensaje de éxito. Luego haz clic en el botón OK.

***

#### Dimensión Fecha

{% hint style="info" %}

{% endhint %}

1. En el menú principal, ve a File -> New -> Schema.&#x20;

x

2. Selecciona el objeto Schema y establece Orders como el nombre del campo.&#x20;
3. Haz clic derecho en el objeto Schema y selecciona Add Dimension.
4. Agrega una tabla a la jerarquía haciendo clic derecho y seleccionando Add Table.
5. Después de seleccionar el objeto table agregado, selecciona la opción -> date para el campo name.
6. En la jerarquía por defecto (New Hierarchy 0), haz clic derecho y selecciona Add Level.
7. Definamos el año para este nuevo nivel, ingresa los siguientes detalles:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

8. Agrega un nuevo nivel y define el mes; ingresa los siguientes detalles:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

9. A continuación, agrega un nuevo nivel y define el día:

|   |   |
| - | - |
|   |   |
|   |   |
|   |   |

10. Selecciona el objeto hierarchy, elimina el nombre por defecto (New Hierarchy 0), y selecciona date para el campo primaryKey.&#x20;
11. A continuación, selecciona el objeto dimension, y para el campo name, establece: date.&#x20;
12. En el campo type, selecciona TimeDimension.&#x20;
13. Finalmente, en el campo caption, establece Date.

x

x

x
{% endtab %}

{% tab title="Segunda pestaña" %}
x
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

x

{% tabs %}
{% tab title="Primera pestaña" %}
x
{% endtab %}

{% tab title="Segunda pestaña" %}
x
{% endtab %}
{% endtabs %}

x


---

# Agent Instructions: 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:

```
GET https://academy.pentaho.com/schema-workbench/schema-workbench-es/casos-de-uso/informes-de-mongodb.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
