Excel · Capítulo 11 · Lección de conceptos · 7 min de lectura

Power Query es una receta de pasos aplicados

Power Query no edita tu archivo. Registra una lista de pasos, cada uno sobre la tabla que dejó el anterior, y repite la lista cada vez que cambia el origen.

La idea

Power Query es una grabadora. Cuando limpias una tabla en el editor, no cambia el archivo que cargaste. Anota lo que hiciste como una lista de Pasos aplicados a la derecha del editor, y cada paso es una instrucción pequeña como "quita esta columna" o "conserva las filas donde status no sea cancelled".

La lista funciona como una receta. El primer paso, Origen, lee el archivo. Cada paso posterior recibe la tabla que produjo el anterior, la cambia y la pasa. La tabla que ves es el resultado del último paso. Haz clic en cualquier paso de la lista y verás la tabla tal como estaba en ese punto, así que puedes recorrer tu propio trabajo hacia atrás.

Figura 1

Una receta que convierte el informe de junio en una tabla limpia

  1. Csv.Document(File.Contents(…)) Origen 32 filas, 7 columnas, precios como texto
  2. Table.RemoveColumns(…, {"customer_code"}) Columnas quitadas 6 columnas
  3. Table.SelectRows(…, each [status] <> "cancelled") Filas filtradas 27 filas
  4. Table.TransformColumnTypes(…, {{"unit_price", type number}}) Tipo cambiado los precios son números

Paso 1 de 5 El primer paso, Origen, lee el CSV del marketplace tal cual: 32 filas, 7 columnas, y unit_price con texto como "16.99". El archivo en disco no se vuelve a tocar.

  1. El primer paso, Origen, lee el CSV del marketplace tal cual: 32 filas, 7 columnas, y unit_price con texto como "16.99". El archivo en disco no se vuelve a tocar.
  2. Columnas quitadas toma la tabla de Origen y devuelve la misma tabla sin customer_code: 6 columnas. Cada paso es una función aplicada al resultado del anterior.
  3. Filas filtradas conserva las filas cuyo status no es cancelled. Se van cinco líneas canceladas y quedan 27. Este paso solo funciona porque status sigue existiendo tras el paso de arriba.
  4. Tipo cambiado convierte los precios de texto en números, para que un total pueda sumarlos. Tras cuatro pasos la consulta es una receta terminada, no una tabla terminada.
  5. El mes que viene apuntas la consulta al archivo de julio y haces clic en Actualizar. Cada paso se ejecuta de nuevo, en el mismo orden, sobre los datos nuevos. No se reescribe nada.

Por qué existe

La alternativa es limpiar a mano. Abres el archivo del marketplace, borras una columna, filtras las filas canceladas, arreglas los precios. Son diez minutos, y el mes siguiente lo haces otra vez, de memoria, y te equivocas una vez. Cuando alguien pregunta cómo se obtuvo un número, la respuesta honesta es "fui haciendo clics".

Una consulta convierte esos diez minutos en algo que haces una vez. Los pasos quedan escritos en orden, cualquiera puede leerlos, y Actualizar (Datos → Actualizar todo) los repite sobre lo que contenga ahora el archivo de origen. El archivo de origen se queda exactamente como lo mandó el proveedor, así que siempre puedes volver a él. También obtienes una frontera clara: los datos en bruto entran por arriba, una tabla limpia sale por abajo, y no hay retoques manuales sueltos en medio.

Cómo funciona por dentro

Dónde está en Excel

Datos → Obtener datos → Desde un archivo → Desde texto o CSV carga un archivo, y Transformar datos abre el Editor de Power Query. Cada botón de la cinta (Quitar columnas, Dividir columna, Cambiar tipo, Combinar consultas, Anexar consultas) añade un paso a la lista. Bajo la lista está la barra de fórmulas. Cada paso es una línea del lenguaje M, que Excel escribe por ti mientras haces clic:

Table.SelectRows(#"Removed Columns", each [status] <> "cancelled")

Rara vez escribirás M, pero leerlo es útil. El primer argumento es siempre el paso anterior, que es lo que mantiene unida la cadena. Al terminar, Cerrar y cargar escribe el resultado en una hoja o en el modelo de datos.

El orden es parte del significado

Como cada paso lee el resultado del de arriba, el orden importa. Filtra por status después de haber quitado la columna y el paso falla. Multiplica unit_price por quantity antes de cambiar el precio de texto a número y obtienes un error. Un buen orden es: quita primero lo que no necesitas, arregla los tipos pronto, filtra y después añade columnas calculadas. Si un paso está en mal sitio, arrástralo, o bórralo y rehazlo.

Los pasos también son baratos de deshacer. Borra el último paso con la X a su lado y vuelves atrás. Renombra un paso con clic derecho, para que la lista se lea como una frase.

Los tipos importan más de lo que parece

Una columna que viene de un CSV es texto hasta que dices otra cosa. "16.99" parece un precio, pero no se puede sumar, y una columna personalizada que lo multiplica falla. Cambiar tipo es el paso que convierte una columna en número, fecha o texto. Es un paso como cualquier otro, así que también se repite en cada actualización, que es justo la idea.

Combinar y anexar: dos tablas se vuelven una

Anexar apila consultas una bajo otra, como los archivos mensuales que viste en el capítulo de consolidación, y empareja las columnas por nombre. Combinar las une lado a lado, emparejando filas por una clave.

Figura 2

Combinar: emparejar filas de una consulta con otra y luego limpiar el hueco

Business_Web_Sept
order_idcustomer_codeline_total
10810C0133511.99
10816C0052853.97
10840C0135592.99
10859C01404107.98
Discounts
customer_codediscount
C013350.10
C013550.05
C014040.05
C000120.10
Tras combinar y expandir
order_idcustomer_codediscount
10810C013350.10
10816C00528NULL
10840C013550.05
10859C014040.05
Tras reemplazar valores y una columna personalizada
order_iddiscounttotal_after_discount
108100.1010.79
108160.0053.97
108400.0588.34
108590.05102.58

Paso 1 de 4 Dos consultas comparten una clave, customer_code. Una combinación empareja cada fila de la primera con la segunda, igual que un join.

  1. Dos consultas comparten una clave, customer_code. Una combinación empareja cada fila de la primera con la segunda, igual que un join.
  2. El cliente C01335 tiene un contrato al 10%. La fila de Discounts que coincide se trae al expandir la columna nueva.
  3. El cliente C00528 no está en la lista. Una combinación externa izquierda conserva el pedido y rellena discount con null. Cualquier paso que multiplique por un null daría null también.
  4. Reemplazar valores convierte el null en 0, y una columna personalizada [line_total] * (1 - [discount]) termina el trabajo: 92.99 al 5% queda en 88.34, y C00528 paga los 53.97 completos.

Una combinación es un join, no la búsqueda de un solo valor. Una combinación externa izquierda conserva cada fila de la primera consulta y trae la fila que coincide de la segunda, con null donde no hay ninguna. Si la segunda consulta tiene dos filas para una clave, la fila de la primera aparece dos veces. Expande la columna nueva para traer los campos y trata los null de forma explícita con Reemplazar valores.

Traer datos de una base de datos

Cuando el origen es una base de datos como SQL Server, puedes importar la tabla entera, o pasar una consulta nativa que haga el filtrado dentro de la base. Power Query a menudo puede enviar tus primeros pasos de filtro de vuelta al servidor, lo que se llama plegado de consultas (query folding), para que el filtro ocurra antes de que viajen los datos. Una consulta que pide solo junio es mucho más ligera que una que carga todos los años y luego filtra.

Errores comunes

"Power Query edita mi archivo original"

Nunca lo hace. Los pasos se ejecutan sobre una copia en memoria, y el archivo en disco queda como lo mandó el proveedor. Esa es la red de seguridad: un paso equivocado no te cuesta nada, porque lo borras y el origen sigue intacto. El resultado vive en una tabla aparte, y la actualizas para reconstruirla.

"Puedo cambiar el orden de los pasos sin que pase nada"

Cada paso depende de las columnas y los tipos que dejó el de arriba. Mover un filtro antes del cambio de tipo puede comparar texto con números, y moverlo después de quitar la columna lo rompe. Cuando una actualización falla con "columna no encontrada", la causa suele ser un paso cuya entrada cambió. Haz clic en el primer paso con error y mira la tabla que recibe.

"Una combinación devuelve un solo valor, como BUSCARV"

Una combinación devuelve filas que coinciden, y pueden ser varias. Si Discounts tuviera dos filas para C01335, cada pedido de C01335 aparecería dos veces y los totales contarían doble. Antes de combinar, comprueba que la clave sea única en la segunda consulta, y tras combinar compara el número de filas con el de partida.

Ponte a prueba

Una pregunta. Al responderla, la lección queda marcada en el mapa; nunca bloquea un nivel.

Tu consulta tiene los pasos Origen, Filtrar filas (status <> cancelled), Cambiar tipo. Insertas un paso nuevo antes del filtro que quita la columna status y pulsas Actualizar. ¿Qué pasa?

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