PL-300: cómo usar parámetros y funciones en Power Query para preparar datos
En esta lección elijo la competencia: usar parámetros y funciones en Power Query (Editor de Power BI) para preparar datos. Esta habilidad es relevante en el examen PL-300 porque demuestras cómo hacer transformaciones reutilizables, reducir la repetición y gestionar cargas con flexibilidad — todo muy útil en escenarios reales donde la fuente, el formato o el periodo de los datos cambian con frecuencia.
Qué necesitas saber
Parámetros y funciones en Power Query (M) permiten hacer procesos de transformación dinámicos y reutilizables. Un parámetro es un valor nombrado que puedes cambiar sin editar pasos individuales — por ejemplo: DataInicio, NombreServidor, RutaArchivo, SeparadorCSV o ColumnaClave. Una función es una secuencia de pasos definida paramétricamente que acepta argumentos y devuelve un resultado, permitiendo aplicar la misma lógica a varias fuentes o particiones de datos sin duplicar código.
Ejemplo conceptual: imagina 12 archivos CSV, uno por mes, cada uno con alrededor de 100k filas. En lugar de crear 12 consultas con los mismos pasos, creas un parámetro para el directorio y otro para el patrón del nombre de archivo (por ejemplo "Vendas_YYYYMM.csv"). Luego creas una función que, dado un camino, importa, promueve encabezados, ajusta tipos de columna y aplica un filtro de fecha. Aplicando esa función a una lista de 12 archivos obtienes una tabla unificada con mucho menos mantenimiento.
Cómo funciona en la práctica
Paso a paso básico para crear un parámetro y una función simple en Power Query:
- Crear un parámetro
En Power BI Desktop: Home > Manage Parameters > New Parameter. Define Nombre, Tipo (Text, Number, Date) y Valor predeterminado. Por ejemplo: CaminhoBase = "C:\\Dados\\Vendas\\". También puedes definir Suggested Values (lista de opciones) para forzar selección o permitir que el parámetro sea requerido al publicar en el servicio.
- Construir una consulta que use el parámetro
Importa una muestra de archivo y sustituye la ruta fija por el parámetro. Por ejemplo cambia File.Contents("C:\\Dados\\Vendas\\Jan.csv") por File.Contents(CaminhoBase & NomeFicheiro). Prueba el cambio para verificar que basta con cambiar el parámetro para apuntar a otro directorio o entorno (desarrollo vs producción).
- Convertir la consulta en una función
En el Power Query Editor, convierte la consulta en función: Open Advanced Editor y modifica la definición a algo como (FilePath as text, Delimiter as text) => let ... in .... La función puede aceptar 1–3 parámetros (ej.: FilePath, Delimiter, Encoding) y devolver una tabla ya limpia y tipada.
- Aplicar la función a una lista
Crea una consulta que liste archivos en un directorio (Folder connector). Filtra por extensión y por patrón de nombre, luego usa Add Column > Invoke Custom Function para aplicar la función a cada fila. Finalmente haz Expand en la columna resultante para combinar todos los resultados en una única tabla. Para 12 archivos esto es instantáneo; para cientos, considera filtrar o procesar en lotes.
// Exemplo de função em M com dois parâmetros
(FilePath as text, Delimiter as text) =>
let
Source = Csv.Document(File.Contents(FilePath), [Delimiter=Delimiter, Columns=8, Encoding=1252]),
Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
ChangedTypes = Table.TransformColumnTypes(Promoted, {{"Data", type date}, {"Produto", type text}, {"Quantidade", Int64.Type}, {"Valor", type number}}),
Filtrar = Table.SelectRows(ChangedTypes, each [Quantidade] > 0)
in
Filtrar
Después, si tienes una tabla FileList con 12 filas (una por mes), añade una columna personalizada que invoque la función para cada FilePath y, por último, haz Expand para combinar todos los resultados en una única tabla estable para modelado.
Errores comunes
- Usar parámetros solo para valores estáticos — muchas veces los parámetros se usan solo para rutas. Crea parámetros para separadores, encodings, filtros de fecha (DataInicio/DataFim) y para controlar lógica condicional (incluir/excluir columnas).
- Funciones demasiado complejas — si la función intenta hacer varias tareas diferentes se vuelve difícil de mantener; divide en funciones pequeñas (por ejemplo: ImportarCSV, NormalizarColumnas, MapearDimensiones) y compónlas. Esto facilita las pruebas y la depuración.
- No considerar el rendimiento — invocar funciones fila a fila en listas grandes puede ser lento. Siempre que sea posible usa operaciones nativas de tabla (Table.Combine, Folder.Contents) y minimiza llamadas a File.Contents o Web.Contents dentro de bucles. Para grandes volúmenes, prueba primero con 1k–10k filas y mide tiempos; usa Table.Buffer con prudencia y considera el query folding cuando existan fuentes compatibles (SQL, OData).
Cómo practicar
Practica con un escenario concreto: coloca 12 archivos CSV en un directorio, cada uno con ~10–100k filas. Crea parámetros: CaminhoBase, Delimiter y DataFiltro. Crea una función que importe y normalice las columnas, aplique DataFiltro y devuelva la tabla. Luego usa Folder.Contents para obtener la lista de archivos y aplica la función. Mide el tiempo y prueba optimizaciones, como reducir llamadas a File.Contents y combinar binarios cuando proceda.
Para la preparación del PL-300 consulta el Practice Assessment OFICIAL y gratuito de Microsoft y la study guide oficial (ambos gratuitos). Usa estos recursos para verificar las áreas del examen e identificar lagunas de conocimiento — no hay sustituto para practicar en el Power Query Editor con datos reales.
En resumen
- Los parámetros hacen las consultas dinámicas y fáciles de gestionar sin editar pasos manualmente.
- Las funciones en M permiten encapsular y reutilizar transformaciones para varias fuentes o particiones.
- Combina Folder.Contents o listas con funciones para unir archivos de forma eficiente; para decenas a cientos de archivos, piensa en lotes y en reducir IO.
- Atención al rendimiento: evita invocaciones fila a fila innecesarias, divide funciones complejas y prueba con muestras representativas antes de aplicar al conjunto completo.