Você tem um banco de dados no Notion onde cada página contém um número que deseja totalizar, e essas páginas estão vinculadas a uma página pai por meio de uma propriedade de relação. Somar esses números manualmente é lento e sujeito a erros quando a lista cresce além de alguns itens. O Notion não possui uma função SUM nativa para páginas relacionadas, mas você pode criar uma fórmula de rollup que coleta e soma os números automaticamente. Este artigo explica como criar uma propriedade de fórmula que soma valores numéricos de todas as páginas vinculadas por uma relação.
Principais Conclusões: Somar Valores de Páginas Relacionadas no Notion
- Propriedade de relação: Vincula um banco de dados pai a um banco de dados filho, permitindo que cada página pai referencie várias páginas filhas
- Propriedade rollup com agregação Soma: Soma automaticamente todos os números de uma propriedade numérica nas páginas filhas relacionadas
- Propriedade de fórmula com sum() e map(): Combina valores de um array rollup quando você precisa de lógica personalizada antes de totalizar
Entendendo Como o Notion Lida com Valores de Páginas Relacionadas
Os bancos de dados do Notion armazenam dados em linhas (páginas) e colunas (propriedades). Quando uma página precisa referenciar dados de outro banco de dados, você usa uma propriedade de relação. Uma relação cria um vínculo entre uma página no Banco de Dados A e uma ou mais páginas no Banco de Dados B. Por exemplo, uma página de Fatura pode ser vinculada a várias páginas de Itens de Linha, cada uma contendo uma propriedade numérica de Preço.
Para somar os valores de Preço de todos os Itens de Linha vinculados a uma única Fatura, o Notion oferece dois caminhos:
Propriedades Rollup: O Método Direto
Uma propriedade rollup lê uma propriedade de cada página relacionada e aplica uma função de agregação, como Soma, Média, Contagem, Mínimo ou Máximo. Rollups são a maneira mais simples de totalizar números de páginas relacionadas. Você não escreve nenhum código de fórmula. O rollup é atualizado automaticamente quando você adiciona ou remove páginas relacionadas ou altera seus valores.
Propriedades de Fórmula com sum() e map(): O Método Personalizado
Quando você precisa de mais controle, como filtrar quais páginas relacionadas incluir ou aplicar um multiplicador antes de somar, você usa uma propriedade de fórmula. As fórmulas do Notion podem chamar a função sum() em um array de números. Para obter esse array de um rollup, primeiro crie uma propriedade rollup configurada para Mostrar Original (não Soma) para que ela retorne uma lista de valores. Em seguida, sua fórmula usa map() e sum() para processar a lista.
Passos para Somar Valores de Páginas Relacionadas
Os passos a seguir pressupõem que você já tenha dois bancos de dados vinculados por uma relação. Se não tiver, crie a relação primeiro. Neste exemplo, o Banco de Dados A é chamado de Faturas e o Banco de Dados B é chamado de Itens de Linha. O banco de dados Itens de Linha contém uma propriedade Numérica chamada Preço.
- Crie a propriedade de relação no banco de dados pai
Abra o banco de dados Faturas. Clique no botão + no canto superior direito do cabeçalho da tabela. Escolha Relação na lista de tipos de propriedade. Nomeie a propriedade como Itens de Linha. Na caixa de diálogo que aparece, selecione o banco de dados Itens de Linha. Clique em Criar Relação. O Notion adiciona uma nova coluna que permite vincular qualquer número de páginas de Itens de Linha a cada página de Fatura. - Vincule páginas filhas à página pai
Clique dentro da célula de relação Itens de Linha em qualquer página de Fatura. Um menu suspenso mostra todas as páginas no banco de dados Itens de Linha. Clique em cada Item de Linha que deseja vincular. A célula mostra as páginas vinculadas como etiquetas azuis. Repita isso para cada Fatura que precisa de valores somados. - Adicione uma propriedade Rollup para soma simples
Clique no botão + no cabeçalho da tabela novamente. Escolha Rollup na lista de tipos de propriedade. Nomeie a propriedade como Preço Total. No campo Relação, selecione Itens de Linha (a relação que você criou). No campo Propriedade, selecione Preço (a propriedade Numérica em Itens de Linha). No campo Calcular, selecione Soma. Clique em Salvar. A coluna Preço Total agora mostra a soma de todos os valores de Preço dos Itens de Linha vinculados. - Crie um Rollup com Mostrar Original para fórmulas personalizadas
Se você precisar de uma fórmula personalizada posteriormente, precisará da lista bruta de valores. Adicione uma segunda propriedade rollup chamada Preços Brutos. Defina Relação como Itens de Linha e Propriedade como Preço. No campo Calcular, selecione Mostrar Original. Este rollup retorna um array como [25, 40, 15] em vez de um único número. - Escreva uma fórmula que use o array bruto
Adicione uma propriedade de Fórmula e nomeie como Total Personalizado. Clique em Editar Fórmula. Insira o seguinte código:sum(prop("Preços Brutos").map(current, current * 1.1))
Esta fórmula multiplica cada Preço por 1,1 (adicionando 10% de imposto) e depois soma os resultados. Clique em Salvar. A coluna Total Personalizado mostra a soma com imposto incluído. - Teste a fórmula com dados de exemplo
Adicione três páginas de Itens de Linha com valores de Preço 100, 200 e 300. Vincule-as a uma Fatura. O rollup Preço Total mostra 600. A fórmula Total Personalizado mostra 660. Altere um Preço para 150. Ambos os valores são atualizados automaticamente.
Se a Fórmula de Soma Ainda Não Funcionar Corretamente
Rollup mostra 0 mesmo quando as páginas filhas têm números
A causa mais comum é uma incompatibilidade nos tipos de propriedade. O campo Propriedade do rollup deve apontar para uma propriedade Numérica, não para uma propriedade de Texto ou Seleção. Abra o banco de dados filho e confirme que a propriedade Preço está definida como Número. Verifique também se a relação está apontando corretamente para o banco de dados filho e se pelo menos uma página filha está vinculada à página pai.
Erros de fórmula ao usar map() em um rollup
Se o rollup estiver configurado como Soma em vez de Mostrar Original, a fórmula recebe um único número, não um array. A função map() espera um array. Altere o campo Calcular do rollup para Mostrar Original. Se o rollup contiver valores vazios, envolva a função map com um filtro: prop("Preços Brutos").filter(current, current != empty).map(current, current * 1.1).
Valores não atualizam após alterar dados da página filha
O Notion recalcula rollups e fórmulas quando você edita uma propriedade na página filha. Se a fórmula não atualizar, atualize a página do navegador (F5) ou recarregue o banco de dados pai. Se o problema persistir, remova e adicione novamente a propriedade rollup. Isso limpa quaisquer dados em cache.
Soma inclui valores de páginas não relacionadas
Um rollup soma todas as páginas vinculadas por meio da relação. Se uma página filha estiver vinculada a várias páginas pai, seu valor será incluído no total de cada pai. Para evitar dupla contagem, garanta que cada página filha pertença a apenas um pai, ou use uma fórmula com um filtro que verifique uma condição na página filha, como uma propriedade de status.
Rollup vs Fórmula: Como Cada Método Soma Valores Relacionados
| Item | Rollup com Soma | Fórmula com map() e sum() |
|---|---|---|
| Tempo de configuração | Menos de 1 minuto; sem código | 2-3 minutos; requer escrever fórmula |
| Lógica personalizada | Nenhuma; apenas agregações padrão | Suporta multiplicação, filtragem, lógica condicional |
| Lida com valores vazios | Ignora automaticamente células vazias | Requer filtro explícito ou verificação de vazio |
| Desempenho em grandes conjuntos de dados | Rápido; armazenado em cache pelo Notion | Mais lento se houver muitas páginas filhas; recalcula por pai |
| Caso de uso | Soma direta de todos os números vinculados | Soma com imposto, desconto ou inclusão condicional |
Agora você pode somar valores de páginas relacionadas usando um rollup ou uma fórmula. Comece com um rollup configurado para Soma para obter o resultado mais rápido. Se precisar de cálculos personalizados, como aplicar uma taxa de imposto ou somar apenas páginas com um determinado status, use uma fórmula com map() e sum() em um rollup Mostrar Original. Para filtragem complexa, combine a fórmula com uma função filter() para excluir páginas filhas indesejadas.