# Excel Power Query en 2026: ETL para analistas de datos y preguntas de entrevista > Guía completa de Excel Power Query para ETL: transformaciones de datos, lenguaje M, combinación de consultas y preguntas de entrevista para analistas de datos. - Published: 2026-09-20 - Updated: 2026-09-20 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- Excel Power Query transforma la manera en que los analistas de datos manejan flujos de trabajo ETL (Extract, Transform, Load) directamente en Excel. A diferencia de las operaciones manuales de copiar y pegar o las macros VBA complejas, Power Query ofrece una interfaz visual respaldada por el lenguaje M, permitiendo transformaciones de datos reproducibles que se actualizan con un solo clic. > **Disponibilidad de Power Query** > > Power Query está integrado en Excel 365, Excel 2021, Excel 2019 y Excel 2016. En versiones anteriores, estaba disponible como complemento gratuito llamado "Power Query para Excel". El mismo motor impulsa los dataflows de Power BI Desktop. ## Lo que Power Query resuelve para los analistas de datos Los analistas de datos dedican tiempo significativo a la preparación de datos: fusionar archivos de diferentes fuentes, limpiar formatos inconsistentes, filtrar filas irrelevantes y reestructurar tablas para análisis. Power Query aborda estas tareas mediante un editor de consultas que registra cada paso de transformación. Cuando los datos de origen cambian, todo el pipeline se vuelve a ejecutar automáticamente. El flujo de trabajo sigue tres etapas: conectar a fuentes de datos, aplicar transformaciones y cargar resultados en tablas de Excel o en el modelo de datos. Cada paso se registra en la barra de fórmulas usando sintaxis del lenguaje M, que puede editarse directamente para escenarios avanzados. Este enfoque difiere de las fórmulas tradicionales de Excel. Mientras que las fórmulas recalculan celdas, Power Query opera sobre tablas completas antes de que lleguen a la hoja de cálculo. Una consulta que consolida 50 archivos CSV, elimina duplicados y despivotea columnas se ejecuta una vez y produce una tabla limpia, en lugar de construir fórmulas anidadas complejas que ralentizan el libro. ## Conexión a fuentes de datos con Obtener datos Power Query soporta conexiones a archivos (CSV, Excel, JSON, XML), bases de datos (SQL Server, MySQL, PostgreSQL, Oracle), servicios en la nube (SharePoint, Azure, Salesforce) y páginas web. El tipo de conexión determina qué opciones de autenticación e importación aparecen. ```plaintext // Fuentes de datos comunes en Power Query Datos > Obtener datos > Desde archivo > Desde CSV Datos > Obtener datos > Desde base de datos > Desde base de datos SQL Server Datos > Obtener datos > Desde otras fuentes > Desde web Datos > Obtener datos > Desde carpeta (múltiples archivos) ``` La opción "Desde carpeta" es particularmente útil para consolidar múltiples archivos. En lugar de importar cada archivo por separado, Power Query escanea una carpeta, lista todos los archivos coincidentes y los combina en una sola consulta. Agregar un nuevo archivo a la carpeta lo incluye automáticamente en la próxima actualización. Al conectarse a una base de datos SQL, Power Query puede enviar la lógica de transformación al servidor mediante query folding. Los filtros y selecciones de columnas se traducen en cláusulas SQL WHERE y SELECT, reduciendo los datos transferidos a Excel. La barra de fórmulas muestra la opción "Ver consulta nativa" cuando el folding está activo. ## Transformaciones principales en el Editor de consultas El Editor de consultas proporciona comandos de cinta para operaciones comunes, pero entender el código M subyacente ayuda cuando se necesitan personalizaciones. Cada transformación agrega un paso al panel "Pasos aplicados", creando una secuencia auditable. ### Filtrado y ordenamiento de filas El filtrado elimina las filas que no cumplen con los criterios. El menú desplegable del encabezado de columna proporciona filtros rápidos, mientras que el diálogo "Filtrar filas" soporta condiciones complejas con lógica AND/OR. ```m // Paso FilteredRows en lenguaje M let Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content], FilteredRows = Table.SelectRows(Source, each [Region] = "EMEA" and [Amount] > 1000) in FilteredRows ``` La función `Table.SelectRows` toma una tabla y una condición. La palabra clave `each` crea una función donde `_` representa la fila actual, y el acceso a campos usa la notación de corchetes `[Region]`. Las condiciones múltiples se combinan con los operadores `and` u `or`. ### Eliminación y renombrado de columnas Las fuentes de datos a menudo incluyen columnas que no son necesarias para el análisis. Eliminarlas temprano reduce el uso de memoria y simplifica los pasos posteriores. ```m // Eliminar columnas, luego renombrar las restantes let Source = Excel.CurrentWorkbook(){[Name="RawData"]}[Content], RemovedColumns = Table.RemoveColumns(Source, {"TempID", "InternalNotes", "Debug"}), RenamedColumns = Table.RenameColumns(RemovedColumns, {{"Cust_Name", "CustomerName"}, {"Amt", "Amount"}}) in RenamedColumns ``` La lista de columnas usa llaves `{}` para múltiples elementos. El renombrado toma una lista de pares, donde cada par contiene el nombre antiguo y el nuevo. Las convenciones de nomenclatura consistentes entre consultas facilitan la combinación de conjuntos de datos. ### División y fusión de columnas Las columnas de texto frecuentemente necesitan análisis. Una columna "NombreCompleto" podría necesitar dividirse en nombre y apellido, o columnas separadas de fecha y hora podrían necesitar fusionarse. ```m // Dividir NombreCompleto por delimitador en dos columnas let Source = Excel.CurrentWorkbook(){[Name="Contacts"]}[Content], SplitColumn = Table.SplitColumn(Source, "FullName", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"FirstName", "LastName"}) in SplitColumn ``` La función `Splitter.SplitTextByDelimiter` maneja la lógica de análisis. Para patrones más complejos, `Splitter.SplitTextByEachDelimiter` o `Splitter.SplitTextByPositions` ofrecen control adicional. Cuando el número de columnas resultantes varía, Power Query crea columnas dinámicamente. ## Conversiones de tipos y calidad de datos Power Query infiere los tipos de columna en la importación, pero la asignación explícita de tipos detecta errores temprano. Una columna de texto que contiene IDs numéricos debe permanecer como texto si los ceros iniciales son importantes. Las columnas de fecha importadas como texto causan problemas de ordenamiento. ```m // Asignaciones explícitas de tipos let Source = Csv.Document(File.Contents("C:\Data\transactions.csv")), TypedColumns = Table.TransformColumnTypes(Source, { {"TransactionID", type text}, {"Date", type date}, {"Amount", type number}, {"IsProcessed", type logical} }) in TypedColumns ``` La palabra clave `type` especifica el tipo objetivo. Los tipos disponibles incluyen `text`, `number`, `date`, `datetime`, `datetimezone`, `time`, `duration`, `logical` y `binary`. Los errores de tipo aparecen como valores "Error" en las celdas, haciendo visibles los problemas de calidad de datos antes del análisis. El manejo de valores null requiere lógica explícita. La función `Table.ReplaceValue` sustituye nulls con valores predeterminados, mientras que `Table.SelectRows` con `[Column] <> null` los filtra. ## Agrupación y agregación con Agrupar por La agregación de datos por categorías es un requisito frecuente. La transformación "Agrupar por" colapsa las filas que comparten los mismos valores clave y aplica funciones de agregación. ```m // Agrupar ventas por región y año, calcular suma y conteo let Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content], Grouped = Table.Group(Source, {"Region", "Year"}, { {"TotalSales", each List.Sum([Amount]), type number}, {"OrderCount", each Table.RowCount(_), Int64.Type}, {"AvgOrderValue", each List.Average([Amount]), type number} }) in Grouped ``` Las columnas de agrupación aparecen primero, seguidas de las definiciones de agregación. Cada agregación especifica un nombre de nueva columna, una función de agregación y un tipo de resultado opcional. La palabra clave `each` representa la subtabla para cada grupo, permitiendo cualquier función de tabla o lista. Las agregaciones anidadas permiten cálculos como "porcentaje del total del grupo" al referenciar tanto el valor de la fila como el agregado del grupo en un paso posterior. ## Pivot y Unpivot para reestructuración de datos Pivot convierte los valores de fila en columnas, creando un diseño de tabla cruzada. Unpivot hace lo contrario, convirtiendo columnas en filas para estructuras normalizadas. ```m // Despivotear columnas de meses en filas let Source = Excel.CurrentWorkbook(){[Name="MonthlySales"]}[Content], // Original: columnas Product, Jan, Feb, Mar, Apr Unpivoted = Table.UnpivotOtherColumns(Source, {"Product"}, "Month", "Sales") // Resultado: columnas Product, Month, Sales in Unpivoted ``` La función `Table.UnpivotOtherColumns` mantiene las columnas especificadas fijas y despivotea el resto. Esto es más seguro que listar todas las columnas a despivotear, porque agregar nuevas columnas de mes las incluye automáticamente. Los dos últimos parámetros nombran la columna de atributo ("Month") y la columna de valor ("Sales"). Pivot usa `Table.Pivot` con una función de agregación para casos donde existen múltiples valores para la misma combinación fila-columna: ```m // Pivotear ventas por región let Source = Excel.CurrentWorkbook(){[Name="DetailedSales"]}[Content], Pivoted = Table.Pivot(Source, List.Distinct(Source[Region]), "Region", "Amount", List.Sum) in Pivoted ``` ## Combinación y anexión de consultas Combinar datos de múltiples fuentes es donde Power Query reduce el esfuerzo manual. Combinar realiza una unión entre dos tablas basada en columnas coincidentes. Anexar apila las tablas verticalmente. ```m // Left join: Pedidos con detalles de Cliente let Orders = Excel.CurrentWorkbook(){[Name="Orders"]}[Content], Customers = Excel.CurrentWorkbook(){[Name="Customers"]}[Content], Merged = Table.NestedJoin(Orders, {"CustomerID"}, Customers, {"ID"}, "CustomerDetails", JoinKind.LeftOuter), Expanded = Table.ExpandTableColumn(Merged, "CustomerDetails", {"Name", "Email"}) in Expanded ``` La función `Table.NestedJoin` crea una columna de tabla anidada que contiene las filas coincidentes. La función `Table.ExpandTableColumn` luego aplana la estructura anidada en columnas regulares. Los tipos de unión incluyen `Inner`, `LeftOuter`, `RightOuter`, `FullOuter`, `LeftAnti` y `RightAnti`. Anexar con `Table.Combine` requiere nombres de columnas coincidentes. Cuando los esquemas difieren, `Table.SelectColumns` en cada fuente antes de combinar asegura consistencia: ```m // Anexar dos tablas de ventas con columnas consistentes let Sales2024 = Table.SelectColumns(Source2024, {"Date", "Product", "Amount"}), Sales2025 = Table.SelectColumns(Source2025, {"Date", "Product", "Amount"}), Combined = Table.Combine({Sales2024, Sales2025}) in Combined ``` ## Columnas personalizadas y lógica condicional La funcionalidad "Agregar columna > Columna personalizada" permite campos calculados usando expresiones M. La lógica condicional usa la sintaxis `if-then-else`. ```m // Agregar una columna calculada con lógica condicional let Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content], AddedColumn = Table.AddColumn(Source, "OrderCategory", each if [Amount] >= 10000 then "Enterprise" else if [Amount] >= 1000 then "Business" else "Consumer", type text ) in AddedColumn ``` La expresión `if` debe incluir ambas ramas `then` y `else`. Las condiciones anidadas se encadenan con `else if`. El último parámetro especifica el tipo de columna, mejorando el rendimiento y previniendo problemas de inferencia de tipos. Para transformaciones complejas, las funciones auxiliares definidas en el bloque `let` mantienen la legibilidad del código: ```m let // Función auxiliar para trimestre fiscal GetFiscalQuarter = (date as date) as text => let month = Date.Month(date), fiscalQ = if month >= 4 and month <= 6 then "Q1" else if month >= 7 and month <= 9 then "Q2" else if month >= 10 and month <= 12 then "Q3" else "Q4" in fiscalQ, Source = Excel.CurrentWorkbook(){[Name="Transactions"]}[Content], AddedQuarter = Table.AddColumn(Source, "FiscalQuarter", each GetFiscalQuarter([Date]), type text) in AddedQuarter ``` ## Manejo de errores en Power Query Los errores de transformación aparecen como valores "Error" en las celdas en lugar de fallar toda la consulta. La construcción `try-otherwise` maneja los errores graciosamente: ```m // Manejar errores potenciales de división let Source = Excel.CurrentWorkbook(){[Name="Metrics"]}[Content], AddedRatio = Table.AddColumn(Source, "Ratio", each try [Value1] / [Value2] otherwise null, type number ) in AddedRatio ``` La palabra clave `try` intenta la expresión y retorna un registro con los campos `HasError` y `Value`. La cláusula `otherwise` proporciona un valor de respaldo cuando `HasError` es verdadero. Para más control, accede a los detalles del error con `try Expression`: ```m // Capturar detalles del error let result = try SomeRiskyFunction(), output = if result[HasError] then "Error: " & result[Error][Message] else result[Value] in output ``` ## Preguntas de entrevista sobre Power Query para analistas de datos Los entrevistadores evalúan tanto las habilidades prácticas como la comprensión de cuándo Power Query encaja en un flujo de trabajo. Estas preguntas aparecen frecuentemente en entrevistas para analistas de datos. **¿Qué es query folding y por qué es importante?** Query folding traduce las transformaciones de Power Query en consultas nativas para la fuente de datos. Al conectarse a SQL Server, un paso de filtro se convierte en una cláusula WHERE ejecutada en el servidor, reduciendo la transferencia de red. No todas las transformaciones hacen folding: las funciones M personalizadas, ciertas manipulaciones de fechas y las operaciones después de un paso que no hace folding rompen la cadena. Verifica el estado del folding haciendo clic derecho en un paso y buscando "Ver consulta nativa". **¿Cómo difiere Power Query de las fórmulas de Excel para transformación de datos?** Las fórmulas de Excel operan celda por celda dentro de la hoja de cálculo y recalculan en cada cambio. Power Query opera sobre tablas antes de que lleguen a la hoja de cálculo, procesando datos en bloque durante la actualización. Para transformaciones como despivotear, deduplicación o fusión de archivos, Power Query expresa la lógica más directamente que fórmulas INDEX-MATCH anidadas o columnas auxiliares. **¿Cuándo elegir Power Query sobre Power BI para ETL?** Power Query en Excel es adecuado para escenarios donde los analistas necesitan datos transformados en formato de hoja de cálculo para análisis ad-hoc, tablas dinámicas o compartir con usuarios que no tienen acceso a Power BI. Power BI proporciona visualización más rica, mayor capacidad de datos y funciones de compartición empresarial. El mismo código M funciona en ambas herramientas, así que las consultas desarrolladas en Excel pueden migrar a Power BI Desktop sin reescribir. **¿Cómo manejar incompatibilidades de tipos de datos al anexar tablas?** Establece tipos explícitos en cada tabla fuente antes de combinar con `Table.Combine`. Si una columna es texto en una fuente y número en otra, la anexión falla o produce errores. Usa `Table.TransformColumnTypes` en ambas fuentes para imponer tipos consistentes. El patrón `try-otherwise` maneja casos límite donde la conversión falla para valores específicos. **Explica la diferencia entre Combinar y Anexar en Power Query.** Combinar realiza una unión horizontal basada en columnas clave coincidentes, similar a SQL JOIN. Anexar realiza una unión vertical de filas de múltiples tablas, similar a SQL UNION ALL. Combinar requiere al menos una columna común para la coincidencia. Anexar requiere que las columnas con los mismos nombres se alineen correctamente. Para una preparación más profunda sobre conceptos SQL que complementan las habilidades de Power Query, el [módulo de funciones de ventana SQL](/technologies/data-analytics/interview-questions/sql-window-functions) cubre patrones de ranking y agregación, mientras que el [módulo de subconsultas y CTEs de SQL](/technologies/data-analytics/interview-questions/sql-subqueries-ctes) aborda técnicas de estructuración de consultas. ## Opciones de carga y estrategias de actualización Después de las transformaciones, el botón "Cerrar y cargar" ofrece opciones de carga: cargar a una tabla de hoja de cálculo, cargar solo al modelo de datos (Power Pivot), o crear una consulta de solo conexión. Las consultas de solo conexión sirven como pasos de preparación para otras consultas sin consumir espacio en la hoja de cálculo. El comportamiento de actualización depende del destino de carga. Las tablas de hoja de cálculo se actualizan con el botón "Actualizar todo" o pueden configurarse para actualizarse al abrir el archivo. Las tablas del modelo de datos participan en el ciclo de actualización del modelo de datos del libro. Para consultas conectadas a bases de datos externas, pueden aparecer solicitudes de credenciales durante la actualización a menos que existan credenciales guardadas. La actualización en segundo plano permite que el libro permanezca utilizable durante la carga de datos, pero crea complejidad cuando las fórmulas dependientes dependen de datos actualizados. La opción "Habilitar actualización en segundo plano" en las propiedades de consulta controla este comportamiento. Para reportes críticos, deshabilitar la actualización en segundo plano asegura ejecución secuencial. ## Consideraciones de rendimiento para grandes conjuntos de datos Power Query puede manejar millones de filas, pero la capacidad de respuesta del libro depende de cómo se cargan los datos. Cargar al modelo de datos en lugar de tablas de hoja de cálculo evita el límite de filas de Excel y mejora el rendimiento de las tablas dinámicas. Eliminar columnas innecesarias temprano reduce la huella de memoria. Para consultas que toman varios minutos, la "Vista previa de datos" en el Editor de consultas muestra solo una muestra. Las transformaciones se aplican al conjunto completo de datos durante la actualización. Los errores visibles en la vista previa indican problemas, pero algunos errores aparecen solo con los datos completos. Ejecutar una actualización de prueba en un subconjunto valida la consulta antes de procesar todo. Al consolidar muchos archivos, la función de combinación binaria de Power Query procesa archivos en paralelo. Definir una función que transforma un archivo, luego invocarla para cada fila en la lista de archivos, proporciona más control que el enfoque de combinación predeterminado. La documentación de Microsoft sobre [mejores prácticas de Power Query](https://learn.microsoft.com/es-es/power-query/best-practices) detalla técnicas de optimización incluyendo estructuras de dependencia de consultas y uso de buffer. ## Power Query para pipelines ETL reproducibles Los pasos grabados en Power Query crean documentación de la lógica de transformación. Cuando los requisitos cambian, modificar un paso actualiza automáticamente todos los pasos posteriores. Esto contrasta con las manipulaciones ad-hoc de Excel que requieren recreación desde cero cuando los datos de origen cambian. Los equipos pueden compartir consultas exportando conexiones o almacenando el código M de las consultas en control de versiones. El Editor avanzado (Vista > Editor avanzado) muestra el script M completo, que puede copiarse y pegarse en otro libro. Para escenarios empresariales, los dataflows de Power BI y Fabric proporcionan gestión centralizada de consultas. - Power Query maneja ETL dentro de Excel usando pasos de transformación grabados y reproducibles - El lenguaje M subyacente a la interfaz visual permite personalizaciones más allá de los comandos de cinta - Query folding envía filtros y proyecciones a las bases de datos de origen para mejor rendimiento - Combinar realiza uniones entre tablas, Anexar apila las tablas verticalmente - Las asignaciones de tipo y el manejo de errores previenen problemas silenciosos de calidad de datos - Las consultas de solo conexión crean pasos de preparación reutilizables sin salida de hoja de cálculo - Las preguntas de entrevista se enfocan en query folding, comparación con fórmulas y distinciones entre combinar y anexar --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/es/blog/data-analytics/excel-power-query-etl-tutorial-interview-2026