1. Faro

Nivel 2 · La granularidad de una tabla

La solicitud

De Linda Garcia, Controladora Financiera

“El informe nuevo dice que cobramos $58,782.63 en cargos de envío. Nuestro sistema de contabilidad dice $32,016.06. El analista combinó orders con order_items en Power Query para tener una tabla plana y luego sumó shipping_fee. ¿Qué número es el correcto y qué salió mal?”

Tu objetivo

Averigua por qué el total de envío de la tabla plana es demasiado alto y elige la afirmación que lo explica.

orders tiene una fila por pedido, con shipping_fee. order_items tiene una fila por línea de pedido. Tras combinar orders en order_items, el SUM de shipping_fee es $58,782.63 en lugar de $32,016.06. ¿Por qué?

Elige una respuesta y luego compruébala.

La lección

Los dos números de Linda salen de los mismos datos. La única diferencia es la granularidad de la tabla en la que se sumó el cargo.

Qué es este nivel de práctica

Esto es un quiz en una herramienta de práctica creada para este sitio; el propio Power BI Desktop solo funciona en Windows. Los números son reales: son lo que devuelve una medida con los datos de Harbor & Pine. En Power BI Desktop verías las filas de cada tabla en la vista Tabla (el segundo icono de la barra izquierda), que es el lugar más rápido para comprobar qué significa una fila.

Granularidad: lo que representa una fila

La granularidad (grain, o nivel de detalle) de una tabla es el nivel de detalle de una fila:

Tabla Granularidad
order_items una línea de pedido
orders un pedido
customers un cliente
Date un día
una hoja de objetivos una categoría por mes

La granularidad no tiene que ver con el tamaño. Es la respuesta a «si cuento las filas, ¿qué estoy contando?»

Los números pertenecen a una granularidad

Cada número se mide en una granularidad. quantity y line_total pertenecen a la línea de pedido. shipping_fee pertenece al pedido: un cliente paga el envío una vez, sin importar cuántos productos vayan en la caja. Un objetivo mensual de ventas pertenece a un mes, no a un día.

Pon un número en una tabla con una granularidad más fina y se copia en muchas filas. Súmalo y se cuenta una vez por copia. Con los datos de Harbor & Pine:

Shipping (orders)     = SUM(orders[shipping_fee])                      -- $32,016.06
Shipping (flat table) = SUMX(order_items, RELATED(orders[shipping_fee])) -- $58,782.63

La segunda fórmula reproduce la tabla combinada: lee el cargo del pedido de cada línea y los suma. Los pedidos con varias líneas cuentan su cargo varias veces, por eso casi se duplica.

Mantén las granularidades separadas y luego relaciónalas

La solución no es una medida ingeniosa. Es el modelo: mantén orders en granularidad de pedido y order_items en granularidad de línea, y relaciónalas por order_id. Una medida sobre cargos suma orders; una medida sobre unidades suma order_items; una segmentación sobre una dimensión filtra ambas a través de las relaciones. Los siguientes niveles construyen exactamente eso.

Cuando las granularidades de verdad difieren

A veces los datos más gruesos son todo lo que tienes, como objetivos fijados por categoría y mes. No los fuerces hacia días o líneas. Cárgalos como su propia tabla con su propia granularidad y compáralos con los reales en esa granularidad, en un visual por categoría y mes.

Errores comunes

  • Aplanar por comodidad. Una tabla ancha parece más simple y multiplica en silencio todos los números a nivel de pedido.
  • Promediar valores repetidos. AVERAGE del cargo repetido también es incorrecto: los pedidos con más líneas pesan más.
  • No declarar la granularidad. Si nadie puede decir qué significa una fila, nadie puede decir qué cuenta COUNTROWS.

Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.