Exemplos de Map() e Filter() no Notion Formula 2.0
🔍 WiseChecker

Exemplos de Map() e Filter() no Notion Formula 2.0

O Notion Formula 2.0 introduziu as funções Map() e Filter(), que permitem transformar e filtrar arrays diretamente em uma fórmula. Antes do Formula 2.0, era necessário usar rollups ou ferramentas externas para processar listas de valores. Este artigo explica como Map() e Filter() funcionam, mostra exemplos práticos que você pode copiar e adaptar, e aborda erros comuns que quebram essas fórmulas.

Principais conclusões: Map() e Filter() no Notion Formula 2.0

  • Map( array, expressão ): Aplica uma expressão a cada elemento de um array e retorna um novo array do mesmo tamanho.
  • Filter( array, condição ): Retorna um novo array contendo apenas os elementos que satisfazem uma condição.
  • Combine com current.value: Dentro de Map e Filter, use current.value para se referir a cada elemento individual do array de entrada.

Como Map e Filter funcionam no Notion Formula 2.0

Map() e Filter() são funções de array. Um array é uma lista de valores, como [1,2,3] ou [“a”,”b”,”c”]. Em bancos de dados do Notion, arrays geralmente vêm de propriedades de rollup, propriedades de seleção múltipla ou propriedades de fórmula que retornam listas.

Map() recebe dois argumentos: um array e uma expressão. A expressão é avaliada uma vez para cada elemento no array. Dentro da expressão, a variável current.value representa o elemento atual. O resultado de Map() é um novo array onde cada elemento é o resultado da expressão aplicada ao elemento original. Por exemplo, Map([1,2,3], current.value + 1) retorna [2,3,4].

Filter() também recebe dois argumentos: um array e uma condição. A condição é uma expressão booleana. Para cada elemento onde a condição é avaliada como verdadeira, esse elemento é incluído no array de saída. Por exemplo, Filter([1,2,3,4], current.value > 2) retorna [3,4].

Ambas as funções estão disponíveis apenas no Notion Formula 2.0. Se seu banco de dados foi criado antes desta atualização, você deve ativar o Formula 2.0 no editor de fórmulas clicando no ícone de engrenagem e selecionando “Usar Formula 2.0”.

Exemplos práticos de Map() e Filter()

Exemplo 1: Dobrar cada número em um rollup

Suponha que você tenha uma propriedade de rollup chamada “Pontuações” que retorna uma lista de números, como [10, 20, 30]. Você quer uma fórmula que dobre cada pontuação.

  1. Crie uma nova propriedade de fórmula
    Adicione uma propriedade de fórmula ao seu banco de dados e nomeie-a como “Pontuações Dobradas”.
  2. Ative o Formula 2.0
    Clique no ícone de engrenagem do editor de fórmulas e selecione “Usar Formula 2.0”.
  3. Insira a expressão Map
    Digite: Map(prop("Pontuações"), current.value 2)
    Isso retornará [20, 40, 60].

Exemplo 2: Filtrar produtos acima de um limite de preço

Imagine um rollup “Produtos” que retorna uma lista de preços, como [5.99, 12.50, 3.25, 20.00]. Você quer apenas preços acima de R$ 10.

  1. Crie uma propriedade de fórmula
    Nomeie-a como “Itens Caros”.
  2. Escreva a expressão Filter
    Digite: Filter(prop("Produtos"), current.value > 10)
    Resultado: [12.50, 20.00].

Exemplo 3: Combinar Map e Filter para transformar resultados filtrados

Você quer dobrar apenas as pontuações acima de 15 do rollup “Pontuações”.

  1. Use Filter dentro de Map
    Digite: Map(Filter(prop("Pontuações"), current.value > 15), current.value 2)
    Se “Pontuações” for [10, 20, 30], o resultado é [40, 60].

Exemplo 4: Extrair nomes de uma propriedade de seleção múltipla

Uma propriedade de seleção múltipla chamada “Tags” pode conter vários valores como “Urgente”, “Design”, “Bug”. Você quer uma fórmula que retorne apenas tags que começam com “D”.

  1. Use Filter com uma condição de string
    Digite: Filter(prop("Tags"), startsWith(current.value, "D"))
    Resultado: [“Design”].

Exemplo 5: Converter strings para maiúsculas

Você tem um rollup que retorna uma lista de nomes de produtos, como [“maçã”, “banana”, “cereja”] e quer todos em maiúsculas.

  1. Use Map com a função upper
    Digite: Map(prop("Nomes dos Produtos"), upper(current.value))
    Resultado: [“MAÇÔ, “BANANA”, “CEREJA”].

Erros comuns e limitações

Esquecer de ativar o Formula 2.0

Se você digitar Map() ou Filter() e o editor de fórmulas não reconhecê-los, abra o ícone de engrenagem e mude para Formula 2.0. Sem essa etapa, as funções não existirão.

Passar um não-array para Map ou Filter

Map e Filter funcionam apenas com arrays. Se você passar um único número ou uma string de texto, a fórmula retornará um erro. Verifique se a propriedade de origem é um rollup, seleção múltipla ou outra fórmula que retorna um array.

Usar current.value fora da expressão

A variável current.value é definida apenas dentro da expressão Map ou Filter. Se você tentar usá-la fora, a fórmula quebrará. Sempre aninhe sua lógica dentro da chamada da função.

Aninhar muitas funções

Você pode aninhar Map e Filter, mas cada nível adiciona complexidade. Para legibilidade, quebre transformações complexas em propriedades de fórmula separadas quando possível.

Limitações na exibição do resultado

A saída de Map e Filter é um array. Em um banco de dados do Notion, um array é exibido como uma lista separada por vírgulas dentro da célula da fórmula. Se o array for muito longo, o Notion pode truncar a exibição. Os dados subjacentes permanecem completos, mas podem não estar totalmente visíveis.

Map e Filter vs abordagens alternativas

Recurso Map / Filter Rollup com agregação Cálculo manual
Transforma cada elemento Sim, por elemento Não, apenas agrega (soma, média) Não é possível
Filtra elementos Sim Não Não é possível
Requer Formula 2.0 Sim Não Não
Funciona com seleção múltipla Sim Não Não
Tipo de saída Array Valor único Valor único

Map e Filter oferecem controle sobre cada elemento em um array. Rollups fornecem apenas um resumo. Se você precisa modificar ou selecionar itens específicos de uma lista, Map e Filter são as ferramentas corretas.

Agora você pode usar Map() para transformar arrays e Filter() para extrair subconjuntos de dados dentro de fórmulas do Notion. Experimente os exemplos acima com suas próprias propriedades de banco de dados. Para uso avançado, aninhe um Filter dentro de um Map para aplicar uma transformação apenas a elementos que atendem a uma condição. Lembre-se de que current.value é sua chave para acessar cada elemento.