1. Faro

Nivel 6 · Importa desde SQL Server con una consulta

La solicitud

De Aaron Ramos, Ingeniero de analítica

“Pediste acceso de lectura al SQL Server de HarborPine para dejar de esperar los CSV. Ya está listo. Una petición antes de conectarte: trae solo lo que necesitas. order_items tiene 30,338 líneas y tú necesitas las líneas del marketplace de 2025, unas 1,700. Y que sea fácil cambiar el año el próximo enero.”

Tu objetivo

Elige la configuración que envía solo las líneas del marketplace de 2025 desde SQL Server a Excel y te deja cambiar el año en un solo lugar más adelante.

En Excel, ¿cómo importas solo las líneas de pedido del marketplace de 2025 desde el SQL Server de HarborPine, de una forma que haga que pasar a 2026 sea un cambio de una línea?

Elige una respuesta y luego compruébala.

La lección

Las exportaciones son un rodeo. Cuando los datos viven en una base de datos a la que puedes llegar, Excel puede conectarse directamente, y Power Query maneja la conexión igual que maneja un CSV: un paso Origen, luego tus pasos, luego Cerrar y cargar y Actualizar. Este nivel es un cuestionario porque el editor de práctica de este sitio no puede conectarse a un servidor; los pasos de abajo son lo que haces en Excel.

Conéctate a SQL Server

  1. Datos → Obtener datos → Desde base de datos → Desde base de datos de SQL Server.
  2. Servidor: el nombre que te da el equipo de la base de datos, por ejemplo sql01.harborpine.local. Base de datos: HarborPine.
  3. Deja cerradas las Opciones avanzadas para explorar tablas, o ábrelas para escribir una instrucción SQL (siguiente sección).
  4. Excel pregunta cómo iniciar sesión: Windows (tu inicio de sesión de la empresa) o Base de datos (un usuario y contraseña que creó el equipo de la base de datos). Excel lo recuerda para este origen.
  5. Sin instrucción, el Navegador lista todas las tablas. Marca las que necesites y haz clic en Transformar datos.

El mismo menú tiene Desde base de datos de Microsoft Access, Desde base de datos de Oracle, Desde base de datos de MySQL y más; el cuadro cambia, la idea no.

Filtra en el servidor con una instrucción SQL

Elegir order_items en el Navegador trae las 30,338 líneas. La petición de Aaron es la razón para hacerlo distinto: escribe la pregunta en SQL, y el servidor la responde antes de que viaje nada.

SELECT oi.order_item_id, o.order_id, CAST(o.order_date AS date) AS order_date,
       oi.product_id, oi.quantity, oi.unit_price
FROM dbo.orders AS o
JOIN dbo.order_items AS oi ON oi.order_id = o.order_id
WHERE o.channel = 'marketplace'
  AND o.order_date >= '2025-01-01' AND o.order_date < '2026-01-01';

Pégala en Opciones avanzadas → Instrucción SQL. El servidor devuelve 1,718 líneas de 702 pedidos. Tres razones por las que esto supera a importar tablas completas:

Razón Qué significa aquí
Velocidad El servidor está hecho para filtrar y unir millones de filas; Excel no. Viajan menos datos, la actualización es más rápida.
Control WHERE, JOIN, GROUP BY, renombrar con AS: tú decides la forma exacta de lo que llega.
Seguridad Lees solo las filas y columnas que pide tu instrucción, no tablas completas.

La primera vez que un libro ejecuta una instrucción, Excel te pide aprobar la consulta nativa de base de datos. Apruébala; solo ejecuta lo que escribiste.

El SQL de la conexión puede hacer cualquier transformación que haga SQL: cantidad total por producto con GROUP BY y ORDER BY ... DESC, productos por encima de un precio con WHERE, o unas pocas columnas renombradas con AS. Nuestra ruta de SQL enseña exactamente esto: lo básico de SELECT (columnas y AS), Filtrar filas (WHERE), Agregados y GROUP BY, y JOINs. Todo lo que escribas allí funciona en este cuadro, salvo pequeñas diferencias de dialecto en SQL Server (TOP 10 en lugar de LIMIT 10).

Edita la consulta más adelante

El próximo enero cambian las fechas. No empiezas de cero:

  1. Datos → Consultas y conexiones, haz doble clic en la consulta. Se abre el Editor de Power Query.
  2. En Pasos aplicados, haz clic en el icono de engranaje junto a Source.
  3. El cuadro de conexión se abre de nuevo con tu SQL. Cambia 2025 por 2026, Aceptar.
  4. Cerrar y cargar. Cada paso posterior a Origen se ejecuta de nuevo con las filas nuevas.

En M, el paso Origen es una línea:

Source = Sql.Database("sql01.harborpine.local", "HarborPine",
    [Query="SELECT oi.order_item_id, ... WHERE o.channel = 'marketplace' AND ..."])

Primero SQL, luego pasos de Power Query

Los dos trabajan juntos. Deja que SQL haga el filtrado y las uniones pesadas en el servidor y luego añade encima del resultado los pasos ligeros que has practicado en este capítulo: una columna personalizada line_total = [quantity] * [unit_price], una columna de mes, una combinación con una pequeña hoja de búsqueda.

Cuando te conectas sin una instrucción, Power Query intenta traducir tus pasos a SQL por sí mismo, lo cual se llama plegado de consultas (query folding). Haz clic derecho en un paso y elige Ver consulta nativa: si está disponible, ese paso sigue ejecutándose en el servidor. Algunos pasos (muchas columnas personalizadas, por ejemplo) rompen el plegado, y cada paso posterior se ejecuta en Excel sobre la descarga completa. Una instrucción que escribes tú mismo elimina las conjeturas.

Errores comunes

  • Cargar tablas completas “por si acaso”. El libro se vuelve lento, y el equipo de la base de datos se molesta.
  • Fijar una fecha a mano por todas partes. Mantenla en un solo lugar: el WHERE de la instrucción del paso Origen.
  • Reconstruir la consulta para cambiarla. El engranaje junto a Origen reabre el cuadro con tu SQL.
  • Compartir un libro que usa tu inicio de sesión. Los demás necesitan su propio acceso para actualizarlo.

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