Consejos para la Modelación de Datos en Power BI

Manu da Silva 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:

Las principales tablas en el modelo de datos son contacts, runs y messages.
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
La tabla de calendario debe ser creada por el usuario de Power BI.

Base de Datos

Puedes acceder a nuestra documentación oficial a través del sitio:

WeniFlows

Buenas Prácticas

  1. Selecciona solo los datos relevantes para optimizar el proceso de extracción.
  2. Transforma tus datos para que sean útiles.
  3. Asegúrate de que tus datos estén bien formateados, limpios y organizados antes de comenzar a crear dashboards, informes, etc.
  4. 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.
  5. Comprende conceptos como flows, runs, contacts y messages para interpretar y crear insights del proyecto de manera adecuada.
  6. Explora la documentación de la API de RapidPro para familiarizarte con la disponibilidad de los datos y cómo están estructurados.
  7. Explora la documentación de la base de datos.

How did we do?

Explora la Documentación de la Base de Datos de Weni

Filtro usando campos de contacto en Power BI

Contact