Consejos para la Modelación de Datos en Power BI
Updated by Manu da Silva
Definir el Modelo de Datos
Definir el modelo de datos junto con los equipos de desarrollo y los equipos de negocio puede parecer obvio, pero es el punto primordial que siempre se ve afectado por la falta de comunicación entre estos mundos, que deben estar bien conectados.
Vamos a explicarte el concepto más importante que necesitas para modelar (tratar) esta información para que podamos utilizarla de manera adecuada.
Esta es la parte más importante, ya que los informes, gráficos y dashboards dependerán de la modelación de estos datos.
Esto significa que necesitamos tener la información procesada y correcta para evitar problemas durante la construcción de informes en el programa.
¿Qué es la Modelación de Datos con Power Query?
Power Query es un editor de consultas (tablas) dentro de Power BI; es un programa separado, pero ayudará en esta modelación.
Este editor de consultas permite al usuario realizar diversos tratamientos, como formatear tipos de datos, eliminar filas o columnas, crear columnas, unir tablas, entre muchas otras posibilidades.
Modelación de Datos de Weni
Al crear un chatbot, se generarán diversas tablas para almacenar información proveniente de la interacción del usuario a través del intercambio de mensajes.
Primero, es importante conocer las tablas y los tipos de datos que se extraen de ellas.
Al conectarte a través del Conector de Weni (tutorial) en Power BI, podrás extraer las siguientes tablas:
Contacts - Tabla de Contactos
Definición: Un contacto es un usuario final que ha interactuado o va a interactuar con la cuenta.
Campo de Contacto: Cada contacto puede tener atributos, llamados campos de contacto, que contienen valores como su nombre, número de teléfono y cualquier otra información individual que desees incluir.
Columna | Tipo |
uuid | id |
name | texto |
language | texto |
urns | id |
groups | texto, número inteiro, booleano etc |
fields | true/false |
blocked | true/false |
stopped | true/false |
created_on | date & time |
modified_on | date & time |
last_seen_on | date & time |
- uuid: El UUID del contacto (string), filtrable como uuid.
- name: El nombre del contacto (string).
- language: El idioma preferido del contacto (string).
- urns: Los URNs asociados con el contacto (matriz de cadenas), filtrable como urn.
- groups: Los UUIDs de los grupos a los que pertenece el contacto (matriz de objetos), filtrable como group por nombre o UUID.
- fields: Cualquier campo personalizado en este contacto (diccionario).
- blocked: Indica si el contacto está bloqueado (booleano).
- stopped: Indica si el contacto ha dejado de interactuar, es decir, se ha dado de baja (booleano).
- created_on: Cuándo se creó este contacto (fecha/hora).
- modified_on: Cuándo se modificó por última vez este contacto (fecha/hora), filtrable como antes y después.
- last_seen_on: Cuándo fue la última vez que este contacto se comunicó con nosotros (fecha/hora).
Runs - Tabla de Runs
Definición: El recorrido de un contacto a través de un flujo, desde la entrada hasta la salida, y todas las actividades que ocurren en el proceso, constituye una ejecución (*run*). Los contactos salen de un flujo cuando completan el flujo, inician otro flujo mediante la acción "Entrar en otro flujo" o expiran del flujo después del período de inactividad que hayas designado.
Resultado: Proporciona una visión general del flujo, análisis de mensajes y ejecuciones, y datos sobre todas las actividades dentro del flujo, desde el inicio hasta el final.
Columna | Tipo |
uuid | id |
flow | texto |
contact | texto |
start | texto |
responded | true/false |
path | texto |
values | texto, número inteiro, booleano etc |
created_on | date & time |
modified_on | date & time |
exited_on | date & time |
exit_type | texto |
- uuid: El ID de la ejecución (string), filtrable como uuid.
- flow: El UUID y nombre del flujo (objeto), filtrable como flow con UUID.
- contact: El UUID y nombre del contacto (objeto), filtrable como contact con UUID.
- start: El UUID del inicio del flujo (objeto).
- responded: Indica si el contacto respondió (booleano), filtrable como responded.
- path: La ruta del contacto a través de los nodos del flujo (matriz de objetos).
- values: Valores generados por los conjuntos de reglas en el flujo (matriz de objetos).
- created_on: Fecha y hora en que se inició esta ejecución (datetime).
- modified_on: Fecha y hora en que se modificó por última vez esta ejecución (datetime), filtrable como before y after.
- exited_on: Fecha y hora en que esta ejecución salió o null si aún está activa (datetime).
- exit_type: Cómo terminó la ejecución (uno de "interrupted", "completed", "expired").
Messages - Tabla de Mensajes
Definición: Texto enviado o recibido a través del chatbot, procesado por un canal. El estado puede ser "inicializando", "en cola", "conectado", "enviado", "entregado", "procesado", "erróneo", "fallido", "reenvíado".
Filtración: No se puede filtrar por más de un contacto, carpeta, marcador o transmisión a la vez.
Columna | Tipo |
id | id |
broadcast | texto |
contact | texto |
urn | texto |
channel | text |
direction | texto |
type | texto |
status | texto |
archived | texto |
visibility | texto |
text | texto |
labels | texto |
attachments | texto |
created_on | date & time |
sent_on | date & time |
modified_on | date & time |
media | texto |
id: El ID del mensaje (int), filtrable como id.
broadcast: El ID de la transmisión (int), filtrable como broadcast.
contact: El UUID y nombre del contacto (objeto), filtrable como contact con UUID.
urn: El URN del remitente o receptor, dependiendo de la dirección (string).
channel: El UUID y nombre del canal que manejó este mensaje (objeto).
direction: La dirección del mensaje (una de "incoming" o "outgoing").
type: El tipo de mensaje (una de "inbox", "flow", "ivr").
status: El estado del mensaje (una de "initializing", "queued", "wired", "sent", "delivered", "handled", "errored", "failed", "resent").
visibility: La visibilidad del mensaje (una de "visible", "archived" o "deleted").
text: El texto del mensaje recibido (string). Nota: esta es la vista lógica y el mensaje puede haberse recibido como múltiples mensajes físicos.
attachments: Los archivos adjuntos en el mensaje (matriz de objetos).
labels: Las etiquetas asignadas a este mensaje (matriz de objetos), filtrable como label con nombre de etiqueta o UUID.
created_on: Cuándo se recibió o creó este mensaje por el canal (datetime), filtrable como before y after.
sent_on: Para los mensajes salientes, cuándo el canal envió el mensaje (null si aún no se ha enviado o si es un mensaje entrante) (datetime).
modified_on: Cuándo se modificó por última vez el mensaje (datetime).
Conexiones entre Tablas
Base de Datos
Puedes acceder a nuestra documentación oficial a través del sitio:
Buenas Prácticas
- Selecciona solo los datos relevantes para optimizar el proceso de extracción.
- Transforma tus datos para que sean útiles.
- Asegúrate de que tus datos estén bien formateados, limpios y organizados antes de comenzar a crear dashboards, informes, etc.
- Mantén un catálogo de datos con todos los campos, descripciones y tipos de datos de tu proyecto de chatbot. Asegúrate de que tus variables, como campos de contacto y resultados, describan claramente su propósito.
- Comprende conceptos como flows, runs, contacts y messages para interpretar y crear insights del proyecto de manera adecuada.
- Explora la documentación de la API de RapidPro para familiarizarte con la disponibilidad de los datos y cómo están estructurados.
- Explora la documentación de la base de datos.