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):
E irá abrir automaticamente a seguinte janela:
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:
- Column Name (Nome da coluna):
Aqui, deve selecionar qual das colunas disponíveis na consulta quer usar para a condição.
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:
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:
- Coluna de data:
Para uma coluna de Data, as opções são atualizadas para:
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).
No caso da coluna selecionada for de data, fica disponível um ícone de calendário onde pode selecionar as datas pretendidas:
Neste exemplo, vamos colocar 21:
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.
No exemplo, vamos considerar “Novo modelo”:
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:
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:
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”:
E, ao clicar OK, a coluna é atualizada:
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:
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:
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:
- Ir ao Advanced Editor (Editor Avançado) no Separador Home (Base), que é onde ficam registadas todas as transformações:
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çamento | Resultado |
|---|---|
| 21 (texto) | Modelo 2021 |
| 20 (texto) | Modelo 2020 |
| 19 (texto) | Outro modelo |
| null | Sem ano |
O que verificar quando a condição não funciona
- Tipo de dados: o texto
"21"é diferente do número21. 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
nullantes de usar operações que exijam um valor. Uma cadeia vazia""também não é igual anull. - Resultado: use resultados do mesmo tipo e confirme o tipo de dados da nova coluna.
- Sintaxe: em M escreve-se
if,theneelseem 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.