curso
DAX RESUMIR(): Guía para agrupar y resumir datos
No luches con grandes conjuntos de datos. Domina el arte de agrupar y agregar datos utilizando la función DAX SUMMARIZE()
, que te permite descubrir patrones ocultos y tomar mejores decisiones. Con DAX SUMMARIZE()
, puedes crear un mininforme dentro de tu conjunto de datos más grande y elegir qué información agrupar y qué números sumar. Es extremadamente, extremadamente útil.
Sigue leyendo y te ayudaré a comprender DAX SUMMARIZE()
en detalle para que puedas utilizarlo eficazmente en muchos escenarios. Iif you're new to DAX and want more resources, also check out our Power BI DAX Tutorial for Beginners for a more general view. También puedes seguir nuestro curso Introducción a DAX en Power BI para una formación real; el curso incluye técnicas básicas pero también más avanzadas, por lo que es bueno para profesionales de todos los niveles.
¿Qué es la función DAX SUMMARIZE()?
La función DAX SUMMARIZE()
toma tus datos y los agrupa en función de las columnas que elijas. Después, calcula totales u otros resúmenes para cada grupo.
Por ejemplo, supongamos que tienes una gran lista de datos de ventas con información sobre productos, regiones e importes de ventas. Aquí puedes utilizar SUMMARIZE()
para agrupar todos esos datos por producto o región y ver las ventas totales de cada grupo.
Te encontrarás con DAX en varias herramientas de Microsoft, como:
- Power BI (es muy popular para el análisis empresarial)
- Excel, específicamente en Power Pivot
- Servicios de análisis de SQL Server (SSAS)
Una vez que entiendas SUMMARIZE()
, podrás organizar tus datos de forma eficiente, creando mejores informes y profundizando en tus datos para obtener valiosas perspectivas. Así que, la próxima vez que trabajes con un gran conjunto de datos y necesites darle sentido rápidamente, utiliza la función SUMMARIZE()
.
Domina Power BI desde cero
DAX SUMMARIZE() y agrupación de datos
Así es como la función SUMMARIZE()
crea tablas resumen basadas en columnas y agregaciones especificadas:
SUMMARIZE (<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
En la sintaxis anterior:
-
table
es la tabla de origen de tus datos. -
groupBy_columnName
es la columna o columnas por las que quieres agrupar. -
name
es el nombre de tu nueva columna calculada. -
expression
es el cálculo que quieres realizar.
Puedes utilizar SUMMARIZE()
con cualquier tabla o columna de tu conjunto de datos, lo que lo hace muy versátil.
Agrupación básica
Veamos un ejemplo sencillo de agrupación básica con SUMMARIZE()
.
Primero, importa el conjunto de datos a Power BI. Para ello, ve a lapestaña Inicio > Obtener datos. Selecciona la opción correspondiente a tu archivo guardado en el menú desplegable y cárgalo. En este ejemplo, tengo un conjunto de datos con columnas para Año, Producto e ImporteVentas. Ahora importaré esto a Power BI.
Una tabla llamada ventas. Imagen del autor.
Una vez importados los datos, ve a la pestañaModelado > Nueva tabla. A continuación, introduce la siguiente fórmula para agrupar por el Año y agregar el Ventas totales.
SummaryTable =
SUMMARIZE(
sales,
sales[Year],
"Total Sales", SUM(sales[SalesAmount])
)
Barra de fórmulas. Imagen del autor.
En esta fórmula:
-
SummarizedTable
crea una nueva tabla. -
SUMMARIZE(
empieza a agrupar y resumir datos. -
SalesData,
es la tabla de origen. -
SalesData[Year],
grupos por Año columna. -
"Total Sales", SUM(SalesData[SalesAmount])
crea una nueva columna llamada Ventas totales que suma ImporteVentas de cada año.
Resultados resumidos. Imagen del autor.
Aquí, la función SUMMARIZE()
crea una tabla resumen agrupando los datos por Año y calcula el Ventas totales sumando el ImporteVentas de cada año.
Agrupación múltiple
SUMMARIZE()
también puede gestionar agrupaciones más complejas. Vamos a entenderlo con un ejemplo. Aquí, tengo un conjunto de datos con columnas para Año, Producto, Región e Importe de ventas.
Una tabla llamada datos_ventas. Imagen del autor.
Aquí, estoy agrupando por Año y Región para calcular el Ventas totales de cada combinación.
SummarizedTable =
SUMMARIZE(
sales_data,
sales_data[Year],
sales_data[Region],
"Total Sales", SUM(sales_data[SalesAmount])
)
En esta fórmula:
-
sales_data
es la tabla donde se almacenan tus datos. -
sales_data[Year]
es la primera columna que se agrupa por Año. -
sales_data[Region]
es la segunda columna agrupada por Región. -
"Total Sales"
es el nombre de la columna personalizada para la suma de ventas. -
SUM(SalesData[SalesAmount])
suma las ventas de cada grupo.
Resumir varias columnas. Imagen del autor.
Aquí, la agrupación múltiple nos ayudó a visualizar las tendencias de ventas tanto por Región como por Año. Las regiones Norte y Este muestran un crecimiento de 2021 a 2023. El Sur tuvo unas ventas elevadas en 2022, mientras que el Oeste sólo tiene datos para 2022-2023 .
Técnicas avanzadas con DAX SUMMARIZE()
Aunque SUMMARIZE()
es útil, puedes combinarla con otras funciones DAX para probar capacidades de análisis de datos aún más sofisticadas. Así pues, exploremos algunos ejemplos para ver cómo las técnicas avanzadas pueden aprovechar SUMMARIZE()
para realizar agregaciones y resúmenes complejos.
Utilizar SUMMARIZE() con ROLLUP()
La función ROLLUP()
de SUMMARIZE()
añade filas de subtotales a tus tablas resumen para mostrar subtotales a través de distintos niveles de agrupación y proporcionar resúmenes jerárquicos más detallados. Si trabajas en el campo de las finanzas o en cualquier función de análisis relevante, te resultará especialmente útil para realizar agregaciones multinivel.
-
Añade la palabra clave
ROLLUP()
después de tus columnas de agrupación enSUMMARIZE()
. -
Especifica qué columnas deben incluirse en el cálculo de
ROLLUP()
.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Por ejemplo, este conjunto de datos muestra las Ventas y la Cantidad de cada Producto en una Región concreta. Ahora, tengo que encontrar el resumen de ventas por Región y Producto, con subtotales y totales.
Una tabla llamada ventas_rollup. Imagen del autor.
Para ello, utilizo la siguiente fórmula:
SalesWithRollup =
SUMMARIZE(
sales_rollup,
ROLLUP(sales_rollup[Region], sales_rollup[Product]),
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
)
Utilizando la función ROLLUP(). Imagen del autor.
Puedes ver - aquí la función SUMMARIZE()
agrupa los datos de ventas por Región y Producto para calcular Ventas totales y Cantidad Total. ROLLUP()
añade filas de subtotal y total general para ofrecer un resumen jerárquico del rendimiento de las ventas en distintos niveles de detalle.
Combinar SUMMARIZE() con ADDCOLUMNS()
También puedes ampliar SUMMARIZE()
con ADDCOLUMNS()
para incluir columnas calculadas a medida dentro de los datos agrupados. Esto puede ser útil si quieres añadir medidas o cálculos complejos a tu tabla resumen.
Por ejemplo, utilizo el mismo conjunto de datos y aplico la siguiente fórmula para añadir esta vez una nueva columna:
SalesWithAddColumns =
ADDCOLUMNS(
SUMMARIZE(
sales_rollup,
sales_rollup[Region],
sales_rollup[Product],
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
),
"Average Sales per Unit",
DIVIDE(SUM(sales_rollup[Sales]), SUM(sales_rollup[Quantity]), 0)
)
Combinando SUMMARIZE() y ADDCOLUMNS(). Imagen del autor.
Aquí, la función SUMMARIZE()
agrupa las ventas por Región y Producto para calcular Ventas totales y Cantidad Total. ADDCOLUMNS()
calcula entonces Ventas medias por unidad dividiendo las ventas totales entre la cantidad total de cada grupo.
Problemas habituales de DAX y cómo resolverlos
Al utilizar SUMMARIZE()
, puedes encontrarte con algunos problemas. Pero no te preocupes, todos hemos pasado por lo mismo: te guiaré a través de algunos retos habituales y cómo afrontarlos.
Evitar resultados ambiguos
A veces, SUMMARIZE()
puede darte resultados que no tienen mucho sentido. Esto suele ocurrir cuando tu modelo de datos o tus relaciones no están claros. He aquí cómo evitarlo:
-
Comprueba dos veces tu modelo de datos: Asegúrate de que todas tus mesas están conectadas correctamente.
-
Utiliza nombres de columna claros: Evita duplicar nombres en diferentes tablas.
-
Especifica los nombres de las tablas: Cuando te refieras a columnas, incluye el nombre de la tabla (como
Orders[OrderDate]
) para evitar confusiones.
Consideraciones sobre el rendimiento
Aunque SUMMARIZE()
es una función útil, puede consumir muchos recursos y ralentizar las cosas cuando se procesan grandes conjuntos de datos. Esto significa que tus informes pueden tardar un poco más en actualizarse, especialmente si utilizas la función dentro de medidas complejas o con muchas columnas agrupadas.
Aquí tienes algunos consejos para agilizar tus consultas:
-
Considera las columnas calculadas: Para los resúmenes de uso frecuente, crea columnas calculadas en lugar de utilizar
SUMMARIZE()
cada vez. -
Elimina las columnas innecesarias: Elimina las columnas irrelevantes para tu análisis, como las claves primarias o las columnas que pueden calcularse a partir de otras.
-
Utiliza filtros: Utiliza DAX
SUMMARIZE()
conFilter()
antes de resumir para reducir la cantidad de datos procesados.
Alternativas DAX a SUMMARIZE()
Aunque SUMMARIZE()
es una función útil, a veces otras herramientas pueden hacer mejor el trabajo. Veamos un par de alternativas y cuándo te conviene utilizarlas.
SUMMARIZECOLUMNS()
SUMMARIZECOLUMNS()
es otra función DAX que facilita la creación de tablas resumen cuando se trabaja con grandes datos o situaciones complicadas. Es similar a SUMMARIZE()
, pero con algunas diferencias.
-
Puedes añadir filtros directamente a
SUMMARIZECOLUMNS()
, lo que lo hace más rápido. -
Con
SUMMARIZECOLUMNS()
, puedes incluir medidas directamente en tus resultados. No son necesarias funciones adicionales comoADDCOLUMNS()
. -
SUMMARIZECOLUMNS()
se ocupa automáticamente de las filas en blanco, para que no tengas que preocuparte por ellas.
SUMMARIZECOLUMNS(
<groupBy_columnName> [, <groubBy_columnName>] …, [<filterTable>] … [, <name>, <expression>] …
)
Por ejemplo, tengo un conjunto de datos y quiero resumir los salarios de los empleados por Región y Departamento, filtrando al mismo tiempo los empleados con el nombre Raven. Utilizaré la función SUMMARIZECOLUMNS()
para calcular el salario total de Raven en las distintas regiones y departamentos.
Una tabla llamada datos_empleado. Imagen del autor.
Para ello, utilizo la siguiente fórmula:
SalarySummary =
SUMMARIZECOLUMNS(
employee_data[Name],
employee_data[Region],
employee_data[Department],
FILTER(employee_data, employee_data[Name] = "Raven"),
"Total Salary", SUM(employee_data[Salary])
)
En la fórmula anterior:
-
SalarySummary
es el nombre dado a la tabla calculada que se está creando. -
SUMMARIZECOLUMNS(...)
crea una tabla resumen basada en las columnas y cálculos especificados. -
employee_data[Name], employee_data[Region], employee_data[Department]
son las columnas por las que se agruparán los datos. -
FILTER(employee_data, employee_data[Name] = "Raven")
restringe los resultados para que sólo incluyan las filas en las que el campo Nombre es Cuervo. -
"Total Salary", SUM(employee_data[Salary])
crea una columna calculada en el resultado. -
SUM(employee_data[Salary])
calcula la suma de todos los valores de Salario de cada grupo.
Utiliza SUMMARIZECOLUMNS para resumir los resultados. Imagen del autor.
Puedes ver los resultados: la función SUMMARIZECOLUMNS()
filtra el conjunto de datos y calcula los totales salariales de Raven en las distintas ubicaciones y departamentos.
GROUPBY()
GROUPBY()
es otra función que a veces puede sustituir a SUMMARIZE()
cuando sólo necesitas agrupar datos y realizar cálculos sobre esos grupos. Puede ser más eficaz que SUMMARIZE()
para operaciones sencillas de agrupación.
Mientras que SUMMARIZE()
puede trabajar a través de tablas relacionadas, GROUPBY()
se centra en agrupar y agregar dentro de una única tabla, lo que mejora el rendimiento en determinados escenarios.
Veamos un ejemplo. Tengo que crear un conjunto de datos de inventario para hacer un seguimiento de los artículos, las categorías, las unidades vendidas y los precios unitarios, y luego agrupar los datos por categorías para calcular los ingresos totales de cada una.
Tabla de inventario. Imagen del autor.
Para ello, utilizo la siguiente fórmula:
SummaryGroupBY =
GROUPBY(
Inventory,
Inventory[Category],
"Total Revenue",
SUMX(
CURRENTGROUP(),
Inventory[Units Sold] * Inventory[Unit Price]
)
)
En la fórmula anterior:
-
GROUPBY()
agrupa los datos por Categoría. -
CURRENTGROUP()
se refiere a cada grupo de categorías (por ejemplo, electrónica, muebles o electrodomésticos). -
SUMX()
calcula los ingresos totales de cada grupo multiplicando Unidades vendidas por Precio unitario.
Utiliza GROUPBY para agrupar los datos. Imagen del autor.
Como puedes ver, la función GROUPBY()
calcula fácilmente los Ingresos totales multiplicando Unidades vendidas por Precio unitario de cada artículo de la categoría y resumiendo estos ingresos individuales.
Reflexiones finales sobre DAX SUMMARIZE()
Ahora ya sabes cómo la función SUMMARIZE()
de DAX puede ayudarte a agrupar y analizar datos en Power BI, Excel y otras herramientas. Desde la agrupación básica hasta técnicas avanzadas como ROLLUP()
y ADDCOLUMNS()
, SUMMARIZE()
ayuda a crear resúmenes perspicaces.
Como la práctica hace al maestro, prueba estas técnicas con tus propios datos para ver cómo pueden ayudarte a descubrir perspectivas útiles. Si quieres pulir aún más tus conocimientos de DAX, inscríbete en nuestra Introducción a DAX en Power BI para convertirte en un auténtico usuario avanzado.
Conviértete en Analista de Datos de Power BI
Domina la herramienta de inteligencia empresarial más popular del mundo.
Soy una estratega de contenidos a la que le encanta simplificar temas complejos. He ayudado a empresas como Splunk, Hackernoon y Tiiny Host a crear contenidos atractivos e informativos para su público.
Preguntas frecuentes sobre DAX Summarize()
¿Es SUMMARIZE() sensible a mayúsculas y minúsculas?
DAX no suele distinguir entre mayúsculas y minúsculas, por lo que los nombres de columna utilizados en SUMMARIZE()
no tienen por qué coincidir con las mayúsculas y minúsculas de los datos originales.
¿Cuáles son los errores más comunes al utilizar SUMMARIZE()?
Entre los errores más comunes están los de sintaxis, los nombres de columnas inexistentes y los problemas de rendimiento con grandes conjuntos de datos. Para evitar estos problemas, comprueba siempre los argumentos de la función y tu modelo de datos.
¿En qué se diferencian SUMMARIZE() y SUMMARIZECOLUMNS() en cuanto al contexto?
SUMMARIZE()
conserva los contextos de fila y filtro para las agregaciones, mientras que SUMMARIZECOLUMNS()
sólo tiene un contexto de filtro.
Aprende PowerBI con DataCamp
curso
DAX intermedio en Power BI
curso
Funciones DAX en Power BI
tutorial
Cómo utilizar las funciones SUMX de Power BI
tutorial
Tutorial de cálculo de Power BI
tutorial
Gráficos de columnas agrupadas en Excel: Cómo crearlos y personalizarlos
tutorial