PL-300: como usar parâmetros e funções em Power Query para preparar dados
Nesta lição escolho a competência: usar parâmetros e funções em Power Query (Editor do Power BI) para preparar dados. Esta habilidade é relevante no exame PL-300 porque demonstras como tornar transformações reutilizáveis, reduzir repetição e gerir cargas com flexibilidade — tudo muito útil em cenários reais onde a fonte, o formato ou o período dos dados mudam frequentemente.
O que precisas de saber
Parâmetros e funções em Power Query (M) permitem tornar processos de transformação dinâmicos e reutilizáveis. Um parâmetro é um valor nomeado que podes alterar sem editar passos individuais — por exemplo: DataInício, NomeServidor, CaminhoFicheiro, SeparadorCSV ou ColunaChave. Uma função é uma sequência de passos parametricamente definida que aceita argumentos e devolve um resultado, permitindo aplicar a mesma lógica a várias fontes ou partições de dados sem duplicar código.
Exemplo conceptual: imagina 12 ficheiros CSV, um por mês, cada um com cerca de 100k linhas. Em vez de criar 12 consultas com os mesmos passos, crias um parâmetro para o directório e outro para o padrão do nome de ficheiro (por exemplo "Vendas_YYYYMM.csv"). Depois crias uma função que, dado um caminho, importa, promove cabeçalhos, ajusta tipos de coluna e aplica um filtro de data. Aplicando essa função a uma lista de 12 ficheiros obténs uma tabela unificada com muito menos manutenção.
Como funciona na prática
Passo a passo básico para criar um parâmetro e uma função simples no Power Query:
- Criar um parâmetro
No Power BI Desktop: Home > Manage Parameters > New Parameter. Define Nome, Tipo (Text, Number, Date) e Valor padrão. Por exemplo: CaminhoBase = "C:\\Dados\\Vendas\\". Podes também definir Suggested Values (lista de opções) para forçar selecção ou permitir que o parâmetro seja requerido ao publicar no serviço.
- Construir uma consulta que use o parâmetro
Importa uma amostra de ficheiro e substitui o caminho fixo pelo parâmetro. Por exemplo altera File.Contents("C:\\Dados\\Vendas\\Jan.csv") para File.Contents(CaminhoBase & NomeFicheiro). Testa a alteração para verificar que basta mudar o parâmetro para apontar para outro directório ou ambiente (desenvolvimento vs produção).
- Transformar a consulta numa função
No Power Query Editor, converte a consulta em função: Open Advanced Editor e altera a definição para algo como (FilePath as text, Delimiter as text) => let ... in .... A função pode aceitar 1–3 parâmetros (ex.: FilePath, Delimiter, Encoding) e devolver uma tabela já limpa e tipada.
- Aplicar a função a uma lista
Cria uma consulta que lista ficheiros num directório (Folder connector). Filtra por extensão e por padrão de nome, depois usa Add Column > Invoke Custom Function para aplicar a função a cada linha. Finalmente faz Expand na coluna resultante para combinar todos os resultados numa única tabela. Para 12 ficheiros isto é instantâneo; para centenas, considera filtrar ou processar em 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
Depois, se tiveres uma tabela FileList com 12 linhas (um por mês), adiciona uma coluna personalizada que invoca a função para cada FilePath e, por fim, faz Expand para combinar todos os resultados numa única tabela estável para modelação.
Erros comuns
- Usar parâmetros apenas para valores estáticos — muitas vezes os parâmetros são usados só para caminhos. Cria parâmetros para separadores, encodings, filtros de data (DataInício/DataFim) e para controlar lógica condicional (incluir/excluir colunas).
- Funções demasiado complexas — se a função tenta fazer várias tarefas diferentes torna-se difícil de manter; divide em funções pequenas (por exemplo: ImportarCSV, NormalizarColunas, MapearDimensões) e compõe-as. Isto torna testes e depuração mais simples.
- Não considerar o desempenho — invocar funções linha a linha em grandes listas pode ser lento. Sempre que possível usa operações nativas de tabela (Table.Combine, Folder.Contents) e minimiza chamadas a File.Contents ou Web.Contents dentro de loops. Para grandes volumes, testa primeiro com 1k–10k linhas e mede tempos; usa Table.Buffer com prudência e considera o query folding quando existirem fontes compatíveis (SQL, OData).
Como praticar
Pratica com um cenário concreto: coloca 12 ficheiros CSV num directório, cada um com ~10–100k linhas. Cria parâmetros: CaminhoBase, Delimiter e DataFiltro. Cria uma função que importe e normaliza as colunas, aplica DataFiltro e devolve a tabela. Depois usa Folder.Contents para obter a lista de ficheiros e aplica a função. Mede o tempo e experimenta optimizações, como reduzir chamadas a File.Contents e combinar binários quando pertinente.
Para preparação do PL-300 consulta o Practice Assessment OFICIAL e gratuito da Microsoft e a study guide oficial (ambos gratuitos). Usa estes recursos para verificar as áreas do exame e identificar lacunas de conhecimento — não há substituto para praticar no Power Query Editor com dados reais.
Em resumo
- Parâmetros tornam consultas dinâmicas e fáceis de gerir sem editar passos manualmente.
- Funções em M permitem encapsular e reutilizar transformações para várias fontes ou partições.
- Combina Folder.Contents ou listas com funções para unir ficheiros de forma eficiente; para dezenas a centenas de ficheiros, pensa em lotes e em reduzir IO.
- Atenção ao desempenho: evita invocações linha a linha desnecessárias, divide funções complexas e testa com amostras representativas antes de aplicar a todo o conjunto.