Power Query: Transformación de Datos
Power Query es el motor de transformación de Power BI. Antes de visualizar datos, necesitas limpiarlos, darles forma y prepararlos. Power Query hace esto sin modificar la fuente original.
¿Qué es Power Query?
Power Query es un editor visual de transformaciones que genera código en lenguaje M (Power Query Formula Language) detrás de escena. Cada paso se graba y es reproducible.
Abrir el Editor de Power Query
- En Power BI Desktop, haz clic en Transformar datos.
- Se abre el Editor de Power Query con todas tus consultas.
- A la derecha ves los Pasos aplicados — cada transformación es un paso.
Transformaciones esenciales
Eliminar columnas innecesarias
Selecciona las columnas que NO necesitas → clic derecho → Quitar columnas.
O mejor: selecciona las que SÍ necesitas → clic derecho → Quitar otras columnas.
Cambiar tipo de dato
= Table.TransformColumnTypes(Origen, {
{"Fecha", type date},
{"Monto", type number},
{"Nombre", type text}
})
| Tipo | Descripción | Ejemplo |
|---|---|---|
type text |
Texto / String | "Juan Pérez" |
type number |
Número decimal | 1500.50 |
Int64.Type |
Número entero | 42 |
type date |
Fecha | 2026-03-01 |
type datetime |
Fecha y hora | 2026-03-01 14:30:00 |
type logical |
Verdadero/Falso | true |
Percentage.Type |
Porcentaje | 0.16 |
Filtrar filas
= Table.SelectRows(Anterior, each [Monto] > 0)
= Table.SelectRows(Anterior, each [Estado] = "Activo")
= Table.SelectRows(Anterior, each [Fecha] >= #date(2025, 1, 1))
Reemplazar valores
= Table.ReplaceValue(Anterior, null, 0, Replacer.ReplaceValue, {"Monto"})
= Table.ReplaceValue(Anterior, "N/A", null, Replacer.ReplaceText, {"Notas"})
Columnas calculadas en Power Query
Columna personalizada
= Table.AddColumn(Anterior, "Total con IVA", each [Precio] * 1.16, type number)
Columna condicional
= Table.AddColumn(Anterior, "Categoría", each
if [Monto] >= 10000 then "Alto"
else if [Monto] >= 5000 then "Medio"
else "Bajo",
type text
)
Extraer partes de fecha
= Table.AddColumn(Anterior, "Año", each Date.Year([Fecha]), Int64.Type)
= Table.AddColumn(Anterior, "Mes", each Date.MonthName([Fecha]), type text)
= Table.AddColumn(Anterior, "Trimestre", each "Q" & Text.From(Date.QuarterOfYear([Fecha])), type text)
Combinar consultas
Merge (JOIN)
Equivale a un JOIN en SQL. Combina columnas de dos tablas basándose en una clave común.
= Table.NestedJoin(
Ventas, {"ProductoID"},
Productos, {"ID"},
"Producto",
JoinKind.LeftOuter
)
Tipos de combinación:
- Left Outer — todas las filas de la primera tabla.
- Inner — solo filas con coincidencia en ambas.
- Full Outer — todas las filas de ambas tablas.
Append (UNION)
Apila filas de dos o más tablas con la misma estructura:
= Table.Combine({Ventas2024, Ventas2025, Ventas2026})
Agrupar datos
= Table.Group(Anterior, {"Categoría"}, {
{"Total Ventas", each List.Sum([Monto]), type number},
{"Cantidad", each Table.RowCount(_), Int64.Type},
{"Promedio", each List.Average([Monto]), type number}
})
Transponer y pivotar
Pivotar columna
Convierte valores de una columna en encabezados de columna (filas → columnas).
Anular pivote (Unpivot)
Convierte columnas en filas — esencial cuando recibes datos en formato "ancho" y necesitas formato "largo" para Power BI:
ANTES (ancho): DESPUÉS (largo):
Producto | Ene | Feb | Mar Producto | Mes | Ventas
A | 100 | 150 | 200 A | Ene | 100
B | 80 | 90 | 110 A | Feb | 150
A | Mar | 200
B | Ene | 80
...
Pasos aplicados
Cada transformación crea un paso en el panel derecho. Puedes:
- Reordenar pasos (arrastrar).
- Eliminar pasos que no necesitas.
- Editar un paso para cambiar la transformación.
- Insertar pasos intermedios.
Buenas prácticas en Power Query
- Elimina columnas innecesarias al inicio — reduce el volumen de datos.
- Establece tipos de dato correctos — evita errores en DAX.
- Nombra tus pasos — clic derecho → Cambiar nombre, para documentar.
- Filtra temprano — elimina filas que no necesitarás.
- Evita columnas calculadas complejas — mejor hacerlas con DAX en el modelo.
Resumen
Power Query limpia y transforma datos antes de cargarlos al modelo. Soporta filtros, columnas calculadas, merge, append, agrupación y pivote. Cada paso es reproducible y editable, haciendo la preparación de datos repetible y auditable.