Power Query

Coluna condicional no Power Query: como usar if…then…else

Maria Braga
Imagem destaque artigo função if no power query

No Power Query, pode criar uma coluna condicional através de Add Column (Adicionar Coluna) > Conditional Column (Coluna Condicional). A interface gera uma expressão if … then … else em linguagem M: testa uma condição e escolhe o resultado de cada linha.

A função condicional If (Se) para muitas pessoas é algo muito complexo de entender. Pior ainda quando precisa de criar If’s encadeados, ou seja, várias condições dentro de condições. No entanto, com o Power Query isso deixa de ser um problema. Pode criar todas as condições necessárias, usando a função If no Power Query de uma forma muito simples e intuitiva e, assim, mudar a sua vida e deixar de se sentir frustrado quando precisa de criar uma fórmula com várias condições.

É isto mesmo que lhe vou ensinar a utilizar neste artigo.

Caso ainda não seja utilizador do Power Query, recomendo que comece por ler este artigo.

Como criar uma função If no Power Query

Quando cria uma fórmula com vários If’s, precisa de ter muita atenção aos parênteses para ter a certeza que está a criar as condições certas, o que muitas vezes resulta na perda de algum tempo desnecessário na construção da mesma.

No Power Query pode obter o mesmo resultado de forma muito simples.

Para criar uma função If no Power Query, tem de ir ao separador Add Column (Adicionar Coluna) > Conditional Column (Coluna Condicional):

Como criar função if no power query

E irá abrir automaticamente a seguinte janela:

Adicionar condições para criar função if no power query

Vamos considerar como exemplo a seguinte condição: Se o ano de lançamento for 2021 (21), queremos que apareça “Novo Modelo”, se não for 2021, pretendemos que apareça “Antigo”.

Comece por dar um nome à nova coluna, neste exemplo vamos chamar “Modelo Antigo/Novo”.

De seguida temos de inserir todas as condições pretendidas.

Analisando cada item da condição:

  1. Column Name (Nome da coluna):

Aqui, deve selecionar qual das colunas disponíveis na consulta quer usar para a condição.

Selecionar colunas disponíveis na base de dados

2. Operator (Operador):

Consoante o tipo de dados da coluna selecionada (mais uma razão por ser importante ter o tipo de dados bem definido para cada coluna), os operadores disponíveis são diferentes.

Para o exemplo em questão, está a ser considerada uma coluna (Ano Lançamento) formatada como texto, pelo que tem disponíveis as seguintes opções:

Escolher operador para função if no power query

Alguns exemplos para outros tipos de dados:

  • Coluna de número/moeda:

Se escolher uma coluna formatada como número ou moeda, tem as seguintes opções:

Opções de operador quando coluna número moeda
  • Coluna de data:

Para uma coluna de Data, as opções são atualizadas para:

Opções de operador quando coluna data

3, Value (Valor):

No valor, pode inserir um valor manualmente, usar outra coluna para a condição ou ainda escolher um parâmetro (esta opção é um pouco mais avançada).

Adicionar valor da condição para criar função if no power query

No caso da coluna selecionada for de data, fica disponível um ícone de calendário onde pode selecionar as datas pretendidas:

Opção para selecionar datas

Neste exemplo, vamos colocar 21:

Exemplo de ano 2021 para criar condição

4. Output (Saída):

No output, também pode inserir um valor manualmente, outra coluna como resultado ou escolher um parâmetro para aparecer caso a condição seja verificada.

Selecionar opções de output

No exemplo, vamos considerar “Novo modelo”:

Exemplo de novo modelo como opção de output

5. Else (Senão):

Caso a condição não seja verificada, deve inserir o que pretende que apareça, escolhendo entre um valor, coluna ou parâmetro também.

No exemplo que estamos a desenvolver, vamos considerar “Modelo antigo”:

Desta forma, o que temos é o seguinte:

Campos preenchidos para criar função if no power query

Vamos ler a condição:

Se a coluna “Ano Lançamento” for igual a 21, então aparece a dizer “Novo modelo”, caso contrário, aparece a dizer “Modelo antigo”.

Super simples e intuitivo, certo?

Depois ao clicar OK, aparece a nova coluna:

Coluna Modelo Antigo Novo preenchida para exemplo 1

Veja como foi simples criar uma função If no Power Query!

Editar a coluna condicional

Se precisar de editar a nova coluna que acabou de ser introduzida, pode clicar duas vezes no respetivo passo e abre novamente a janela com a(s) condição(ões) definidas.

Se, em vez de “Modelo antigo” quiser que apareça o ano desse modelo, em Else (Ao contrário), pode optar por escolher qual a coluna, neste caso, “Ano Lançamento”:

Editar a coluna condicional

E, ao clicar OK, a coluna é atualizada:

Coluna Modelo Antigo Novo preenchida para exemplo 2

Inserir Ifs encadeados no Power Query

A grande vantagem de criar a função If no Power Query, é que pode adicionar as condições que pretender, bastando clicar em Add Clause (Adicionar Condição) e surgirá uma nova linha para a nova condição:

Inserir Ifs encadeados no Power Query início

Neste exemplo, podemos considerar que, se o ano de lançamento for igual a 20, então aparecerá “Ano passado”, caso contrário, aparecerá o ano de lançamento:

Coluna Modelo Antigo Novo preenchida para exemplo 3

Desta forma, conseguirá construir os vários comboios de funções If (Se).

Caso pretenda criar uma fórmula mais complexa, combinando funções And (E) ou Or (Ou) tem de utilizar a linguagem M de uma das formas:

1. Clicando na barra de fórmulas e editando o código:

Editar código na criação da função if no power query opção 1
  1. Ir ao Advanced Editor (Editor Avançado) no Separador Home (Base), que é onde ficam registadas todas as transformações:
Editor avançado no power query
Editar código na criação da função if no power query no editor avançado

Exemplo copiável em linguagem M

As capturas usam códigos de ano guardados como texto: "21" e "20". Os rótulos “Novo modelo” e “Ano passado” pertencem a esse exemplo histórico. Para reutilizar a regra sem depender do ano atual, escolha rótulos explícitos.

Na caixa de fórmula de uma Custom Column (Coluna Personalizada), pode usar:

if [Ano Lançamento] = null then "Sem ano"
else if [Ano Lançamento] = "21" then "Modelo 2021"
else if [Ano Lançamento] = "20" then "Modelo 2020"
else "Outro modelo"
Ano LançamentoResultado
21 (texto)Modelo 2021
20 (texto)Modelo 2020
19 (texto)Outro modelo
nullSem ano

O que verificar quando a condição não funciona

  • Tipo de dados: o texto "21" é diferente do número 21. Se a coluna for numérica, compare com números sem aspas.
  • Ordem: é escolhido o primeiro ramo cuja condição seja verdadeira. Coloque as condições mais específicas antes das mais abrangentes.
  • Valores ausentes: trate null antes de usar operações que exijam um valor. Uma cadeia vazia "" também não é igual a null.
  • Resultado: use resultados do mesmo tipo e confirme o tipo de dados da nova coluna.
  • Sintaxe: em M escreve-se if, then e else em minúsculas. Esta expressão não tem a sintaxe da função IF (SE) de uma célula do Excel.

Para aprofundar, consulte a documentação Microsoft sobre condições em M.

Se já utiliza o Power Query, já tinha por hábito utilizar a função Se no Power Query? Tem curiosidade em aprender mais sobre esta funcionalidade? E sobre o Power Query em geral?

Se quer praticar a preparação de dados com exemplos orientados, conheça o curso completo de Power Query.

← Como retirar os zeros dos gráficos Protegeu uma folha e a segmentação de dados não funciona?! Saiba o que tem de fazer. →

Artigos relacionados

Quer aplicar isto na sua equipa?

A MBi dá formação em Excel para equipas e desenvolve soluções à medida da sua empresa.

Formação para equipas Ver cursos online