La solicitud

De Thomas Whitaker, Director de Merchandising
Tu objetivo
Paso 1 de 3. Cambia quantity a número entero y unit_price a número decimal. Las líneas de los dos últimos días dicen pending en lugar de un precio y se convierten en errores: quita las filas con un error en unit_price.
- Muestra exactamente
order_idorder_dateproduct_idquantityunit_pricependiente - 42 filaspendiente
Paso 2 de 3. Combina la consulta Products por product_id y expande su columna category, para que cada línea conozca su categoría.
- Muestra exactamente
order_idorder_dateproduct_idquantityunit_pricecategorypendiente - 42 filaspendiente
Paso 3 de 3. Añade line_total = quantity × unit_price, luego Group by category con revenue = la suma de line_total y units = la suma de quantity, y ordena por revenue, de mayor a menor.
- Muestra exactamente
categoryrevenueunitspendiente - 6 filas, ordenadas como se pidependiente
Paso 1 · tu hoja
| order_id | order_date | product_id | quantity | unit_price | |
|---|---|---|---|---|---|
| 1 | 10809 | 2025-09-02 | 145 | 1 | 10.99 |
| 2 | 10809 | 2025-09-02 | 175 | 2 | 84.99 |
| 3 | 10809 | 2025-09-02 | 193 | 1 | 19.99 |
| 4 | 10819 | 2025-09-03 | 171 | 2 | 27.99 |
| 5 | 10819 | 2025-09-03 | 156 | 1 | 53.99 |
| 6 | 10819 | 2025-09-03 | 139 | 1 | 189.00 |
| 7 | 10819 | 2025-09-03 | 121 | 3 | 31.99 |
| 8 | 10819 | 2025-09-03 | 106 | 2 | 229.00 |
| 9 | 10824 | 2025-09-03 | 186 | 1 | 20.99 |
| 10 | 10829 | 2025-09-03 | 133 | 1 | 51.99 |
| 11 | 10829 | 2025-09-03 | 182 | 1 | 17.99 |
| 12 | 10829 | 2025-09-03 | 146 | 1 | 16.99 |
| 13 | 10830 | 2025-09-03 | 142 | 1 | 38.99 |
| 14 | 10830 | 2025-09-03 | 153 | 4 | 72.99 |
| 15 | 10830 | 2025-09-03 | 190 | 3 | 43.99 |
| 16 | 10830 | 2025-09-03 | 141 | 1 | 13.99 |
| 17 | 10830 | 2025-09-03 | 171 | 1 | 27.99 |
| 18 | 10837 | 2025-09-04 | 161 | 1 | 219.00 |
| 19 | 10837 | 2025-09-04 | 173 | 1 | 139.00 |
| 20 | 10837 | 2025-09-04 | 166 | 1 | 28.99 |
| 21 | 10845 | 2025-09-06 | 136 | 2 | 159.00 |
| 22 | 10845 | 2025-09-06 | 126 | 1 | 379.00 |
| 23 | 10845 | 2025-09-06 | 166 | 4 | 28.99 |
| 24 | 10845 | 2025-09-06 | 203 | 2 | 53.99 |
| 25 | 10845 | 2025-09-06 | 171 | 2 | 27.99 |
| 26 | 10852 | 2025-09-06 | 163 | 1 | 139.00 |
| 27 | 10862 | 2025-09-07 | 146 | 1 | 16.99 |
| 28 | 10862 | 2025-09-07 | 154 | 1 | 11.99 |
| 29 | 10867 | 2025-09-08 | 145 | 1 | 10.99 |
| 30 | 10880 | 2025-09-09 | 145 | 1 | 10.99 |
| 31 | 10891 | 2025-09-10 | 164 | 1 | 52.99 |
| 32 | 10894 | 2025-09-10 | 166 | 1 | 28.99 |
| 33 | 10904 | 2025-09-12 | 203 | 1 | 53.99 |
| 34 | 10904 | 2025-09-12 | 119 | 1 | 259.00 |
| 35 | 10904 | 2025-09-12 | 122 | 2 | 29.99 |
| 36 | 10909 | 2025-09-12 | 175 | 1 | 84.99 |
| 37 | 10909 | 2025-09-12 | 194 | 1 | 159.00 |
| 38 | 10909 | 2025-09-12 | 128 | 1 | 54.99 |
| 39 | 10919 | 2025-09-13 | 182 | 2 | 17.99 |
| 40 | 10919 | 2025-09-13 | 185 | 1 | 12.99 |
| 41 | 10919 | 2025-09-13 | 180 | 2 | 20.99 |
| 42 | 10919 | 2025-09-13 | 146 | 4 | 16.99 |
| 43 | 10929 | 2025-09-14 | 122 | 1 | pending |
| 44 | 10933 | 2025-09-14 | 156 | 2 | pending |
| 45 | 10934 | 2025-09-14 | 178 | 3 | pending |
| 46 | 10937 | 2025-09-14 | 135 | 1 | pending |
| 47 | 10937 | 2025-09-14 | 170 | 1 | pending |
| 48 | 10953 | 2025-09-15 | 111 | 1 | pending |
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Comprobar. Cada fila del resultado que coincide se vuelve una luciérnaga en tu linterna.
Paso 2 · tu hoja
| order_id | order_date | product_id | quantity | unit_price | |
|---|---|---|---|---|---|
| 1 | 10809 | 2025-09-02 | 145 | 1 | 10.99 |
| 2 | 10809 | 2025-09-02 | 175 | 2 | 84.99 |
| 3 | 10809 | 2025-09-02 | 193 | 1 | 19.99 |
| 4 | 10819 | 2025-09-03 | 171 | 2 | 27.99 |
| 5 | 10819 | 2025-09-03 | 156 | 1 | 53.99 |
| 6 | 10819 | 2025-09-03 | 139 | 1 | 189.00 |
| 7 | 10819 | 2025-09-03 | 121 | 3 | 31.99 |
| 8 | 10819 | 2025-09-03 | 106 | 2 | 229.00 |
| 9 | 10824 | 2025-09-03 | 186 | 1 | 20.99 |
| 10 | 10829 | 2025-09-03 | 133 | 1 | 51.99 |
| 11 | 10829 | 2025-09-03 | 182 | 1 | 17.99 |
| 12 | 10829 | 2025-09-03 | 146 | 1 | 16.99 |
| 13 | 10830 | 2025-09-03 | 142 | 1 | 38.99 |
| 14 | 10830 | 2025-09-03 | 153 | 4 | 72.99 |
| 15 | 10830 | 2025-09-03 | 190 | 3 | 43.99 |
| 16 | 10830 | 2025-09-03 | 141 | 1 | 13.99 |
| 17 | 10830 | 2025-09-03 | 171 | 1 | 27.99 |
| 18 | 10837 | 2025-09-04 | 161 | 1 | 219.00 |
| 19 | 10837 | 2025-09-04 | 173 | 1 | 139.00 |
| 20 | 10837 | 2025-09-04 | 166 | 1 | 28.99 |
| 21 | 10845 | 2025-09-06 | 136 | 2 | 159.00 |
| 22 | 10845 | 2025-09-06 | 126 | 1 | 379.00 |
| 23 | 10845 | 2025-09-06 | 166 | 4 | 28.99 |
| 24 | 10845 | 2025-09-06 | 203 | 2 | 53.99 |
| 25 | 10845 | 2025-09-06 | 171 | 2 | 27.99 |
| 26 | 10852 | 2025-09-06 | 163 | 1 | 139.00 |
| 27 | 10862 | 2025-09-07 | 146 | 1 | 16.99 |
| 28 | 10862 | 2025-09-07 | 154 | 1 | 11.99 |
| 29 | 10867 | 2025-09-08 | 145 | 1 | 10.99 |
| 30 | 10880 | 2025-09-09 | 145 | 1 | 10.99 |
| 31 | 10891 | 2025-09-10 | 164 | 1 | 52.99 |
| 32 | 10894 | 2025-09-10 | 166 | 1 | 28.99 |
| 33 | 10904 | 2025-09-12 | 203 | 1 | 53.99 |
| 34 | 10904 | 2025-09-12 | 119 | 1 | 259.00 |
| 35 | 10904 | 2025-09-12 | 122 | 2 | 29.99 |
| 36 | 10909 | 2025-09-12 | 175 | 1 | 84.99 |
| 37 | 10909 | 2025-09-12 | 194 | 1 | 159.00 |
| 38 | 10909 | 2025-09-12 | 128 | 1 | 54.99 |
| 39 | 10919 | 2025-09-13 | 182 | 2 | 17.99 |
| 40 | 10919 | 2025-09-13 | 185 | 1 | 12.99 |
| 41 | 10919 | 2025-09-13 | 180 | 2 | 20.99 |
| 42 | 10919 | 2025-09-13 | 146 | 4 | 16.99 |
| 43 | 10929 | 2025-09-14 | 122 | 1 | pending |
| 44 | 10933 | 2025-09-14 | 156 | 2 | pending |
| 45 | 10934 | 2025-09-14 | 178 | 3 | pending |
| 46 | 10937 | 2025-09-14 | 135 | 1 | pending |
| 47 | 10937 | 2025-09-14 | 170 | 1 | pending |
| 48 | 10953 | 2025-09-15 | 111 | 1 | pending |
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Comprobar. Cada fila del resultado que coincide se vuelve una luciérnaga en tu linterna.
Paso 3 · tu hoja
| order_id | order_date | product_id | quantity | unit_price | |
|---|---|---|---|---|---|
| 1 | 10809 | 2025-09-02 | 145 | 1 | 10.99 |
| 2 | 10809 | 2025-09-02 | 175 | 2 | 84.99 |
| 3 | 10809 | 2025-09-02 | 193 | 1 | 19.99 |
| 4 | 10819 | 2025-09-03 | 171 | 2 | 27.99 |
| 5 | 10819 | 2025-09-03 | 156 | 1 | 53.99 |
| 6 | 10819 | 2025-09-03 | 139 | 1 | 189.00 |
| 7 | 10819 | 2025-09-03 | 121 | 3 | 31.99 |
| 8 | 10819 | 2025-09-03 | 106 | 2 | 229.00 |
| 9 | 10824 | 2025-09-03 | 186 | 1 | 20.99 |
| 10 | 10829 | 2025-09-03 | 133 | 1 | 51.99 |
| 11 | 10829 | 2025-09-03 | 182 | 1 | 17.99 |
| 12 | 10829 | 2025-09-03 | 146 | 1 | 16.99 |
| 13 | 10830 | 2025-09-03 | 142 | 1 | 38.99 |
| 14 | 10830 | 2025-09-03 | 153 | 4 | 72.99 |
| 15 | 10830 | 2025-09-03 | 190 | 3 | 43.99 |
| 16 | 10830 | 2025-09-03 | 141 | 1 | 13.99 |
| 17 | 10830 | 2025-09-03 | 171 | 1 | 27.99 |
| 18 | 10837 | 2025-09-04 | 161 | 1 | 219.00 |
| 19 | 10837 | 2025-09-04 | 173 | 1 | 139.00 |
| 20 | 10837 | 2025-09-04 | 166 | 1 | 28.99 |
| 21 | 10845 | 2025-09-06 | 136 | 2 | 159.00 |
| 22 | 10845 | 2025-09-06 | 126 | 1 | 379.00 |
| 23 | 10845 | 2025-09-06 | 166 | 4 | 28.99 |
| 24 | 10845 | 2025-09-06 | 203 | 2 | 53.99 |
| 25 | 10845 | 2025-09-06 | 171 | 2 | 27.99 |
| 26 | 10852 | 2025-09-06 | 163 | 1 | 139.00 |
| 27 | 10862 | 2025-09-07 | 146 | 1 | 16.99 |
| 28 | 10862 | 2025-09-07 | 154 | 1 | 11.99 |
| 29 | 10867 | 2025-09-08 | 145 | 1 | 10.99 |
| 30 | 10880 | 2025-09-09 | 145 | 1 | 10.99 |
| 31 | 10891 | 2025-09-10 | 164 | 1 | 52.99 |
| 32 | 10894 | 2025-09-10 | 166 | 1 | 28.99 |
| 33 | 10904 | 2025-09-12 | 203 | 1 | 53.99 |
| 34 | 10904 | 2025-09-12 | 119 | 1 | 259.00 |
| 35 | 10904 | 2025-09-12 | 122 | 2 | 29.99 |
| 36 | 10909 | 2025-09-12 | 175 | 1 | 84.99 |
| 37 | 10909 | 2025-09-12 | 194 | 1 | 159.00 |
| 38 | 10909 | 2025-09-12 | 128 | 1 | 54.99 |
| 39 | 10919 | 2025-09-13 | 182 | 2 | 17.99 |
| 40 | 10919 | 2025-09-13 | 185 | 1 | 12.99 |
| 41 | 10919 | 2025-09-13 | 180 | 2 | 20.99 |
| 42 | 10919 | 2025-09-13 | 146 | 4 | 16.99 |
| 43 | 10929 | 2025-09-14 | 122 | 1 | pending |
| 44 | 10933 | 2025-09-14 | 156 | 2 | pending |
| 45 | 10934 | 2025-09-14 | 178 | 3 | pending |
| 46 | 10937 | 2025-09-14 | 135 | 1 | pending |
| 47 | 10937 | 2025-09-14 | 170 | 1 | pending |
| 48 | 10953 | 2025-09-15 | 111 | 1 | pending |
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Comprobar. Cada fila del resultado que coincide se vuelve una luciérnaga en tu linterna.
Lo que recibe Thomas, y por qué
La lección
Una exportación, tres pasos, cada dos semanas
Este Desafío final es todo el capítulo en una consulta. Thomas quiere ingresos y unidades por categoría, de mayor a menor, cada dos semanas, sin que nadie rehaga el trabajo. Para eso sirve una consulta: los pasos que añades hoy se repiten en cada archivo futuro.
Como en el resto del capítulo, estás en el editor de práctica, no en Power Query mismo. El punto de partida de cada paso lleva los pasos que ya escribiste, igual que los Pasos aplicados siguen creciendo en Excel.
El origen tiene 48 líneas del 1 al 15 de septiembre de 2025: order_id, order_date,
product_id, quantity y unit_price. La exportación escribió todo como texto, y el marketplace
aún no había puesto precio a los dos últimos días, así que 6 líneas dicen pending.
Paso 1: tipos y errores
Change type: quantity to whole number
Change type: unit_price to decimal
Remove errors: unit_price
Tras el segundo paso, las 6 celdas pending muestran Error: texto que no puede convertirse en
número. En el editor de Excel la barra delgada bajo el encabezado de la columna se pone en parte
roja, y al hacer clic en una celda con Error se muestra el motivo (“No se pudo convertir a Número”).
Inicio → Quitar filas → Quitar errores descarta esas filas: quedan 42.
Quitar filas es una decisión, no un trámite. Aquí es lo correcto, porque esas líneas aún no tienen
precio y el siguiente informe las incluirá. Dilo en la nota que envíes: “Las líneas del marketplace
del 14 y 15 de septiembre aún no tienen precio y están excluidas”. Cuando los errores vienen de un
problema de datos (un precio escrito como 12,99), corrige el valor con Reemplazar valores antes de
cambiar el tipo en lugar de tirar la línea.
En M:
#"Changed Type" = Table.TransformColumnTypes(Source, {{"quantity", Int64.Type}, {"unit_price", type number}}),
#"Removed Errors" = Table.RemoveRowsWithErrors(#"Changed Type", {"unit_price"})
Cambia el segundo tipo justo después del primero y Excel pregunta si reemplazar el paso actual o añadir uno nuevo; Reemplazar mantiene ambos en un solo paso, como arriba. El editor de práctica mantiene una línea por columna.
Paso 2: la búsqueda de categoría
Merge queries: Products on product_id, expand category
La exportación solo conoce ids de producto. Products contiene el nombre y la categoría de cada
producto que aparece en ella. Una combinación externa izquierda por product_id añade la categoría
a cada una de las 42 líneas. Todas coinciden. Una categoría null significaría un producto nuevo que
falta en la lista, y sus ingresos caerían en un grupo “null” en el siguiente paso.
Paso 3: totales por categoría
Add column: line_total = [quantity] * [unit_price]
Group by: category | revenue = sum of line_total | units = sum of quantity
Sort rows: revenue descending
En Excel: Inicio → Agrupar por → Avanzado, agrupa por category y luego añade una agregación
por fila: revenue = Suma de line_total, units = Suma de quantity. El M:
Table.Group(#"Added Custom", {"category"},
{{"revenue", each List.Sum([line_total]), type number},
{"units", each List.Sum([quantity]), Int64.Type}})
El resultado son seis filas, una por categoría.
Cárgalo, grafícalo, actualízalo
Inicio → Cerrar y cargar en… te da a elegir:
| Cargar en | Úsalo cuando |
|---|---|
| Tabla en una hoja nueva | quieres la propia tabla agrupada, para un gráfico o una fórmula |
| Informe de tabla dinámica | prefieres cargar las 42 líneas y resumirlas en una tabla dinámica (omite Group by) |
| Solo crear conexión | otra consulta usa esta (como Products aquí) |
Para Thomas, carga la tabla agrupada e inserta un gráfico de barras (Insertar → Gráficos → Barra agrupada) sobre revenue: las categorías son etiquetas largas y las barras se leen mejor ordenadas, algo que la consulta ya hizo. O carga las 42 líneas y arma una tabla dinámica con category en Filas y revenue en Valores; luego añade un gráfico dinámico. Ambos dan los mismos números.
Dentro de dos semanas, guarda el CSV nuevo sobre el antiguo y pulsa Datos → Actualizar todo. La
consulta vuelve a importar, a tipar, quita las nuevas líneas pending, combina y agrupa; la tabla y
el gráfico se actualizan. Si el archivo nuevo tiene un producto nuevo, actualiza también Products
(Actualizar todo hace ambas cosas).
¿Qué puedes concluir?
Textiles lidera con 1,160.83 de 20 unidades, pero Lighting está solo 11.90 por detrás con 11 unidades: las dos están empatadas a efectos prácticos. Furniture hace 717.00 con solo 3 unidades, y Kitchen vende 17 unidades por 545.83. Ingresos y unidades cuentan historias distintas, así que muestra ambos, y di sobre el gráfico lo que deja fuera (las líneas sin precio).
Errores comunes
- Cambiar ambas columnas a decimal: las cantidades deben ser números enteros, y un tipo decimal
oculta problemas de datos como
2.5unidades. - Quitar errores en todas las columnas cuando solo se espera que falle
unit_price: un problema nuevo en otra parte borraría filas en silencio. - Agrupar por
unit_priceen lugar deline_total: la suma de precios ignora las cantidades. - Olvidar el orden: los números son correctos, pero el gráfico se lee en un orden aleatorio.
¡Linterna encendida!
Practicaste: power querychange typeremove errorsmerge queriescustom columngroup byrefresh
- Resuelto
- Sin pistas
- Al primer intento
