#

De Odoo a Power BI (II): cuando los datos de Odoo empiezan a decir algo

Odoo es un ERP operativo, no un sistema pensado para analítica. Su estructura está optimizada para ejecutar procesos (ventas, compras, facturación, logística…), y eso significa que los datos vienen con mucha “paja” técnica y con estructuras típicas de aplicaciones. La buena noticia: Microsoft Power BI + Microsoft Power Query.
Analítica | Datos | Odoo | Power BI

En el primer post vimos cómo obtener datos de Odoo de forma sencilla para llevarlos a Power BI. Pero en la práctica, cuando conectas por primera vez… pasa esto:

  • “Vale, ya tengo datos… pero no me cuadran.”
  • “¿Por qué esto viene como una lista dentro de una celda?”
  • “¿Por qué hay tantos campos que no sirven para nada?”
  • “¿Por qué no puedo relacionar bien clientes, usuarios o productos?”

Normal: Odoo es un ERP operativo, no un sistema pensado para analítica. Su estructura está optimizada para ejecutar procesos (ventas, compras, facturación, logística…), y eso significa que los datos vienen con “paja” técnica y con estructuras típicas de aplicaciones (listas, objetos, campos anidados, estados internos…).

La buena noticia: si lo haces bien, Power BI + Power Query convierte ese JSON en tablas limpias y listas para modelar.

En este post te enseño qué transformaciones son las más comunes y te dejo dos ejemplos reales que aparecen continuamente cuando extraes datos desde Odoo.

El problema real: Odoo no es tu modelo de negocio

Tu negocio suele pensar en conceptos como:

  • Ventas por comercial.
  • Margen por familia de producto.
  • Evolución mensual de facturación.
  • Clientes activos VS inactivos.
  • Tiempo medio de resolución de tickets.

Pero Odoo te devuelve (aunque uses una API de negocio y no la API “cruda”) cosas como:

  • Campos técnicos utilizados internamente por Odoo.
  • Identificadores internos.
  • Relaciones entre entidades representadas como listas.
  • estados operativos.
  • Estructuras anidadas (JSON con objetos y arrays de datos).

Eso no está mal. Solo significa una cosa: antes de modelar y analizar, hay que transformar.

Qué significa “transformar” en Power BI

Transformar es aplicar tratamiento a los datos siguiendo estas tres reglas básicas:

  1. Una fila = un elemento.
    • Una factura, una línea de factura, un cliente, un pedido…
  2. Columnas entendibles y consistentes.
    • Nombres claros (Cliente, Comercial, Estado, Importe…).
    • Tipos correctos (fecha como tipo fecha, importe como número…).
  3. Relaciones preparadas.
    • Identificadores limpios y claros para relacionar tablas.
    • Nombres/labels para mostrar en informes.

En Power BI, todo esto se lleva a cabo principalmente con Power Query, el “taller” donde limpiar y preparar los datos.

El problema real: Odoo no es tu modelo de negocio

Checklist rápida: transformaciones típicas al rescatar datos de Odoo

Estas son las que más verás:

  1. Eliminar “paja”.
    • Campos técnicos que no usarás nunca en tu modelo de negocio.
    • Columnas duplicadas o irrelevantes.
    • Metadatos que solo añaden ruido.
  2. Normalizar tipos.
    • Fechas a formato Date o DateTime, según necesidad.
    • Importes y valores numéricos a formato decimal o entero.
    • Nulos y vacíos coherentes
  3. Aplanar formatos y entradas JSON.
    • Expandir objetos a columnas.
    • Expandir listas a filas (cuando toca).
  4. Preparar claves y nombres.
    • Separar Identificadores y nombres.
    • Renombrar columnas para darles sentido de negocio.
    • Mapear estados internos a estados entendibles.

Bienvenidos al mundo real: ejemplos prácticos

Ejemplo 1: separar una lista [id, name] en 2 columnas (clásico de Odoo)

Este caso es el más típico cuando trabajas con usuarios, clientes, comerciales, productos… En Odoo, muchas relaciones vienen como una lista con dos elementos: identificador interno + Nombre visible.

Un ejemplo: user_id: [3, «Laura Rosón»]

¿Qué problema genera en Power BI?

En Power BI esa columna no es “un valor”, es una lista. Así que:

  • No puedes relacionar bien con una tabla de usuarios.
  • Filtrar por usuario se vuelve muy engorroso.

¿Transformación a aplicar? Crear dos columnas nuevas:

  • user_id_id → 3 (para relaciones y claves).
  • user_id_name → “Dani García” (para mostrar la información).

Cómo se hace en Power Query (idea simple):

  1. Extraes la columna user_id dividiendo el contenido a partir de un delimitador, por ejemplo, el punto y coma (;).
  2. Divides la columna por ese delimitador.
  3. Extraes el elemento 0 para el ID.
  4. Extraes el elemento 1 para el Nombre.
  5. Renombras ambas columnas y listo.

(No hace falta memorizarlo: el punto es entender el patrón. Lo vas a repetir mil veces.)

Resultado: ya tienes una columna para relacionar y otra para visualizar.

Ejemplo 2: convertir códigos/estados “técnicos” en etiquetas de negocio (y ordenar bien)

En Odoo muchos campos vienen como códigos internos. Por ejemplo, en facturas o pedidos puedes tener un campo state con valores tipo:

  • draft
  • posted
  • cancel

Eso está perfecto para el ERP, pero en Power BI, porque:

  • Queda feo en informes.
  • El cliente no lo entiende.
  • Y a veces el orden no es el que esperas.

¿El objetivo? Crear una columna más “humana”, por ejemplo:

  • Estado de negocio: Borrador, Validada, Cancelada

Y esto, ¿cómo se hace en Power BI?. Pues muy fácil…

  1. Duplicas la columna state (Así conservas el original por si lo necesitas).
  2. En la columna duplicada: Reemplazar valores.
    • draft → Borrador
    • posted → Validada
    • cancel → Cancelada
  3. Renombras la columna state (duplicada) → Estado negocio.

Resultado: en el informe se lee bien, los filtros quedan claros y puedes controlar el orden.

SIGUIENTE ESTACIÓN: Modelado de datos…

CONOCIMIENTO / Descargables

EBook gratuito
eficiencia OEE

Asistimos tu proceso de diseño y análisis de datos

Descubre las particularidades del indicador OEE, cómo automatizar su cálculo y que requisitos deben cumplir tus procesos de producción para implementarlo.