Ao trabalhar com bancos de dados do Notion, você pode descobrir que uma fórmula que referencia uma propriedade de rollup falha ao calcular corretamente quando o rollup em si puxa dados de outro rollup em vários bancos relacionados. Essa limitação causa frustração porque você espera que a fórmula some, conte ou calcule a média de valores de uma cadeia de relações, mas ela retorna um erro ou um resultado inesperado. A causa raiz está em como o Notion restringe propriedades de fórmula de ler dados agregados provenientes de outro rollup. Este artigo explica por que essa restrição existe, mostra como contorná-la e lista métodos alternativos para obter os valores agregados necessários.
Principais conclusões: Limites de agregação em fórmulas de rollup do Notion
- Propriedade de fórmula não pode ler a saída de outro rollup: Uma fórmula que referencia uma propriedade de rollup verá apenas o valor bruto desse rollup, não seu resultado agregado, se esse rollup depender de outro rollup.
- Máximo de um nível de rollup em uma cadeia de fórmulas: Você pode fazer rollup de uma propriedade de um banco relacionado, mas não pode então fazer rollup desse rollup em um segundo banco e usar uma fórmula para agregá-lo ainda mais.
- Use as funções de agregação nativas do Notion: Para somar, contar ou calcular médias em vários níveis, aplique a função de agregação diretamente na propriedade de rollup final, em vez de tentar calculá-la em uma fórmula.
Por que o Notion bloqueia fórmulas de ler rollups aninhados
Os bancos de dados do Notion calculam as propriedades em uma ordem específica. Propriedades de relação vinculam linhas entre tabelas. Propriedades de rollup então puxam um valor de uma linha relacionada e podem aplicar uma função de agregação como soma, média ou contagem. Uma propriedade de fórmula é executada por último, depois que todos os rollups foram calculados. Quando você cria uma fórmula que referencia uma propriedade de rollup, a fórmula recebe o valor final do rollup. No entanto, se essa propriedade de rollup em si referencia outra propriedade de rollup de um banco diferente, a fórmula não consegue resolver os dados agregados intermediários. O mecanismo de cálculo do Notion não suporta agregação recursiva em vários saltos de relação. Isso é proposital para manter a performance previsível e evitar dependências circulares. O resultado é que uma fórmula tentando somar um rollup de um rollup mostrará um erro ou retornará um valor que não é o agregado verdadeiro.
Por exemplo, imagine três bancos: Projetos, Tarefas e Despesas. Projetos tem uma relação com Tarefas. Tarefas tem uma relação com Despesas. Você cria um rollup em Tarefas que soma todos os valores de Despesas para cada tarefa. Isso funciona. Então você cria um rollup em Projetos que soma o rollup de Tarefas para obter o total de despesas do projeto. Isso também funciona. Mas se você criar uma fórmula em Projetos que tenta multiplicar esse rollup por uma taxa de imposto, a fórmula falhará ao ler o número agregado do rollup corretamente. A fórmula vê o rollup como uma propriedade bruta, mas o valor do rollup já é uma soma de uma soma, o que quebra a capacidade da fórmula de usá-lo em cálculos adicionais.
A restrição técnica no mecanismo de propriedades do Notion
O Notion processa as propriedades nesta ordem: 1) propriedades de texto e número, 2) propriedades de relação, 3) propriedades de rollup, 4) propriedades de fórmula. Uma fórmula pode ler a saída de um rollup apenas se esse rollup ler diretamente de uma propriedade que não é rollup no banco relacionado. Quando um rollup lê de outro rollup, o mecanismo de fórmula não consegue acessar o valor agregado intermediário porque esse valor é calculado em um estágio diferente. Isso não é um bug — é uma limitação documentada da arquitetura do Notion. A solução alternativa é evitar encadear rollups em fórmulas e, em vez disso, usar funções de agregação de rollup diretamente na propriedade final.
Passos para evitar a limitação de fórmula com rollup de dois níveis
A maneira mais confiável de agregar valores em dois níveis de relação é usar propriedades de rollup com funções de agregação nativas em vez de fórmulas. Siga estes passos para reestruturar seu banco de dados e obter a agregação desejada sem uma fórmula.
- Identifique a propriedade de origem que precisa ser agregada
Abra o banco de dados que contém os valores originais. Por exemplo, se você precisa da soma dos valores de despesas, certifique-se de que o banco Despesas tenha uma propriedade Número chamada Valor. Essa propriedade deve ser um número simples, data ou caixa de seleção — não um rollup ou fórmula. - Crie um rollup no primeiro banco relacionado
Vá para o banco de dados que está diretamente relacionado à origem. Por exemplo, no banco Tarefas, adicione uma nova propriedade Rollup. Defina a relação para o banco Despesas. Em Propriedade, selecione Valor. Em Agregar, escolha Soma. Nomeie este rollup como “Total de Despesas da Tarefa”. Este rollup agora mostra a soma de todos os valores de despesas vinculados a cada tarefa. - Crie um segundo rollup no banco pai
Vá para o banco Projetos. Adicione uma nova propriedade Rollup. Defina a relação para o banco Tarefas. Em Propriedade, selecione o rollup que você acabou de criar — “Total de Despesas da Tarefa”. Em Agregar, escolha Soma novamente. Nomeie este rollup como “Total de Despesas do Projeto”. Este rollup agora mostra a soma de todas as despesas das tarefas para cada projeto, que é o custo total do projeto. - Use o rollup final diretamente em qualquer fórmula
Se você precisar aplicar um cálculo ao valor agregado, como adicionar imposto, crie uma propriedade Fórmula no banco Projetos. No editor de fórmulas, referencie a propriedade de rollup “Total de Despesas do Projeto”. Por exemplo, escrevaprop("Total de Despesas do Projeto") * 1.08. Como o rollup em si contém o agregado, a fórmula pode multiplicá-lo. Isso funciona porque a fórmula lê o valor final do rollup, não um rollup intermediário. - Teste o resultado
Adicione algumas despesas de teste a uma tarefa, vincule a tarefa a um projeto e verifique se a fórmula no banco Projetos retorna o total inflacionado correto. Se a fórmula ainda mostrar um erro, verifique se as propriedades de rollup estão configuradas com a função de agregação correta e se os links de relação estão estabelecidos adequadamente.
Se o Notion ainda tiver problemas após a correção principal
Fórmula mostra erro “Propriedade inválida”
Se sua fórmula referencia uma propriedade de rollup e você vê um erro como “Propriedade inválida”, a causa mais provável é que a propriedade de rollup que você está tentando referenciar é baseada em outro rollup. Remova a fórmula e, em vez disso, use um rollup com uma função de agregação diretamente no banco final. Não tente usar uma fórmula para agregar um rollup de um rollup.
Rollup retorna valor agregado errado
Se a soma ou contagem do rollup parecer incorreta, verifique os links de relação. No banco pai, certifique-se de que cada linha está vinculada corretamente às linhas filhas apropriadas. Verifique também se o rollup do banco filho está configurado com a propriedade de origem e função de agregação corretas. Um erro comum é selecionar uma propriedade de fórmula como origem para um rollup, o que pode causar resultados imprevisíveis.
Fórmula funciona mas retorna zero
Uma fórmula que retorna zero geralmente significa que a propriedade de rollup que ela referencia está retornando zero ou está vazia. Verifique a propriedade de rollup no banco pai diretamente. Se mostrar zero, rastreie até o rollup filho e verifique se os números de origem estão presentes e vinculados. Se os números de origem existem mas o rollup ainda mostra zero, a relação pode estar quebrada. Refaça os links das linhas e atualize a página.
Fórmula do Notion vs Rollup com Agregação: Capacidades Comparadas
| Item | Propriedade Fórmula | Propriedade Rollup com Agregação |
|---|---|---|
| Pode ler uma propriedade numérica simples de um banco relacionado | Não — fórmula só lê propriedades no mesmo banco | Sim — rollup lê diretamente de um banco relacionado |
| Pode aplicar matemática ao valor de um rollup | Sim — se o rollup for de uma fonte que não é rollup | Não — rollup apenas gera o valor agregado, não pode modificá-lo |
| Suporta agregação em dois saltos de relação | Não — fórmula não pode ler um rollup de um rollup | Sim — rollup pode agregar a saída de outro rollup |
| Pode combinar múltiplos valores de rollup em um cálculo | Sim — fórmula pode referenciar múltiplas propriedades de rollup | Não — cada rollup é independente |
| Requer atualização manual ou recarregamento | Não — atualiza automaticamente quando a fonte muda | Não — atualiza automaticamente quando a fonte muda |
O design do Notion intencionalmente separa agregação e cálculo. Use propriedades de rollup para coletar e agregar dados de bancos relacionados. Use propriedades de fórmula apenas para realizar operações matemáticas ou lógicas em dados que existem no mesmo banco ou em rollups que vêm de um único nível de relação. Essa separação mantém seu banco de dados com bom desempenho e evita erros de cálculo.