# Informes de MongoDB

{% hint style="info" %}
Steel Wheels Inc tiene información de pedidos de clientes almacenada en 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 los informes los documentos anidados y las matrices.

**Pentaho Analyzer**

Deberás configurar la conexión de datos 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 al trabajar con MongoDB. Esto incluye crear índices apropiados en MongoDB para respaldar tus consultas de informes y estructurar cuidadosamente tus pipelines de agregación para asegurar una recuperación eficiente de datos. También podrías considerar usar el framework de agregación de MongoDB para preagregar datos para informes complejos.
{% endhint %}

{% tabs %}
{% tab title="Integración de Datos" %}
{% 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 cargue datos desde diferentes archivos en tu sistema de archivos, y luego los cargue 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é iniciado y en ejecución.&#x20;

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

2. Asegúrate de que Pentaho Data Integration esté iniciado y en ejecución.

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

***

#### Crear una nueva transformación

<figure><img src="/files/db5240be0997358ebf95c6ba32fc5d7dcd73e79e" 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 desde 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é iniciado y en ejecución. El Hypersonic Database Server - SteelWheels - es un servicio integrado.

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

2. Asegúrate de que Pentaho Data Integration esté iniciado y en ejecución.

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

***

#### Crear una nueva transformación

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

{% hint style="info" %}
El paso Table Input lee información de una base de datos conectada usando sentencias SQL. Las 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 diálogo de configuración.&#x20;
4. Establece la propiedad Step Name como Select Customers.&#x20;

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

1. Haz clic en el botón New al lado del desplegable 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, debes verificar doblemente los detalles de 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, somos capaces de 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 llenará 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 MongoDB en esta sección. Asegúrate de que la opción Use Field Name esté configurada en No para cada campo, así:

x

8. Al hacer clic en Preview document structure, verás un ejemplo de cómo será el documento cuando se inserte en la colección Customers de MongoDB.&#x20;
9. Haz clic en el botón OK para finalizar 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 PDI.
{% endhint %}

#### Linux

1. Asegúrate de que el servidor Pentaho esté iniciado y en ejecución. El Hypersonic Database Server - SteelWheels - es un servicio integrado.

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

2. Asegúrate de que Pentaho Data Integration esté iniciado y en ejecución.

```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. Luego, 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 finalizar 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 segmentar' el conjunto de datos necesitaremos crear esquemas OLAP (acrónimo de Online Analytical Processing) para Pentaho basados en MongoDB.&#x20;

Pentaho usa el motor ROLAP (acrónimo de Relational Online Analytical Processing), llamado por Mondrian para convertir consultas MDX (acrónimo 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 tendremos solo 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, configuremos la conexión a la base de datos MongoDB.&#x20;
2. En el menú principal, selecciona Options -> Connection, e introduce 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 sobre el objeto Schema y selecciona Add Dimension.
4. Añade una tabla a la jerarquía haciendo clic derecho y seleccionando Add Table.
5. Después de seleccionar el objeto table añadido, 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, introduce los siguientes detalles:

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

8. Añade un nuevo nivel y define el mes; introduce los siguientes detalles:

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

9. A continuación, añade 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/pentaho-business-analytics/business-analytics-es/casos-de-uso/mongodb-reports.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.
