Módulo 4: Power Query avançado e linguagem M

Aula 2 de 4

Parâmetros e funções personalizadas

Como fazer o projeto sobreviver à troca de servidor, de pasta e de ambiente.

18 minutos de leitura


Parâmetros

Um parâmetro é um valor nomeado que você usa no lugar de uma constante espalhada pelo código. Gerenciar Parâmetros → Novo Parâmetro. Use para caminho de pasta, nome de servidor, ambiente (Dev/Prod), chave de API e janela de datas.

Linguagem MServidor parametrizado
let    Fonte = Sql.Database(pServidor, pBancoDados),    Vendas = Fonte{[Schema="dbo", Item="fato_vendas"]}[Data]in    Vendas

Funções personalizadas

Uma função é uma consulta que recebe argumentos. Você escreve a lógica uma vez e aplica em qualquer lugar. A forma mais fácil de criar: faça a transformação em uma consulta comum, depois clique com o botão direito → Criar Função.

Linguagem MFunção para limpar texto de cadastro
// Consulta: fnLimparTexto(texto as nullable text) as nullable text =>let    SemEspacos = Text.Trim(texto ?? ""),    SemDuplos = Text.Combine(        List.Select(Text.Split(SemEspacos, " "), each _ <> ""),        " "    ),    Maiuscula = Text.Proper(SemDuplos),    Resultado = if Maiuscula = "" then null else Maiusculain    Resultado
Linguagem MAplicando a função em várias colunas de uma vez
Table.TransformColumns(    Etapa_Anterior,    {        {"NomeCliente", fnLimparTexto, type nullable text},        {"Cidade", fnLimparTexto, type nullable text},        {"Vendedor", fnLimparTexto, type nullable text}    })
Linguagem MFunção que calcula dias úteis entre duas datas
// Consulta: fnDiasUteis(dataInicio as date, dataFim as date, feriados as list) as number =>let    Dias = List.Dates(dataInicio, Duration.Days(dataFim - dataInicio) + 1, #duration(1,0,0,0)),    Uteis = List.Select(Dias, each        Date.DayOfWeek(_, Day.Monday) < 5 and not List.Contains(feriados, _)    )in    List.Count(Uteis)

Exercício prático

Crie um parâmetro pCaminhoDados e refatore todas as suas consultas para usá-lo. Depois crie a função fnDiasUteis e aplique-a na sua tabela de pedidos para calcular o prazo real de entrega em dias úteis.