{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/dataverse-calculated-rollup-formula-columns/","result":{"data":{"markdownRemark":{"frontmatter":{"title":"Dataverse: escolha entre calculated, rollup e Power Fx columns","description":"Comparativo prático dos tipos de colunas calculadas do Dataverse: calculated, rollup e formula columns em Power Fx, com trade-offs de performance e limites.","date":"13 de agosto de 2026","thumbnail":null},"html":"<p>Quem projeta apps model-driven ou soluções sobre Dataverse cedo ou tarde precisa calcular valores derivados: um total de pedido, a idade de um contrato, a soma de itens filhos, um campo concatenado. O Dataverse oferece hoje três mecanismos nativos para isso — <strong>calculated columns</strong>, <strong>rollup columns</strong> e as <strong>formula columns</strong> baseadas em Power Fx — e escolher o errado gera problemas de performance, dados desatualizados ou lógica que simplesmente não é possível. Este post detalha o que cada tipo faz, quando calcula, e como decidir.</p>\n<p><strong>Calculated columns: cálculo em tempo de leitura, dentro da mesma linha</strong></p>\n<p>A calculated column resolve uma expressão no momento em que a linha é lida (retrieve), usando valores da própria linha ou de linhas relacionadas via lookup. Não armazena o resultado — ele é computado sob demanda pelo servidor.</p>\n<ul>\n<li><strong>O que resolve bem:</strong> concatenação de campos (<code>fullname</code>), classificação condicional (faixa de valor, status derivado), cálculos aritméticos simples entre colunas da mesma linha.</li>\n<li><strong>Limites que importam:</strong> você não pode ordenar nem agrupar de forma confiável por uma calculated column em views grandes, porque o cálculo acontece na leitura e não está indexado. Cálculos em cadeia (uma calculated referenciando outra) têm profundidade limitada. E não há acesso a agregações de linhas filhas.</li>\n<li><strong>Pegadinha comum:</strong> usar calculated column como filtro em views ou em queries de grande volume degrada a performance, porque força o motor a calcular para avaliar o filtro.</li>\n</ul>\n<p><strong>Rollup columns: agregação de linhas relacionadas, calculada em lote</strong></p>\n<p>Rollup columns existem para o cenário que a calculated não cobre: agregar linhas filhas — soma, contagem, mínimo, máximo, média sobre um relacionamento 1:N. O total de itens de um pedido, o número de casos abertos por conta, o maior valor de proposta de uma oportunidade.</p>\n<p>O ponto crítico é <strong>quando</strong> o valor é atualizado. O rollup <strong>não é recalculado em tempo real</strong>: um job em background (por padrão a cada 12 horas, ajustável no nível do sistema) reprocessa os valores em massa. O usuário pode forçar o recálculo de uma linha específica clicando no ícone de refresh ao lado do campo, mas você não deve assumir que o rollup está sempre atualizado ao vivo.</p>\n<ul>\n<li><strong>Quando usar:</strong> métricas agregadas que toleram alguma latência (dashboards, indicadores, relatórios).</li>\n<li><strong>Quando NÃO usar:</strong> regra de negócio que precisa do total exato no instante de uma decisão — por exemplo, bloquear um pedido se o total ultrapassar um limite de crédito. Nesse caso, use um fluxo, um plugin ou uma formula column, não rollup.</li>\n<li><strong>Limites:</strong> filtros no rollup são restritos, hierarquias recursivas têm profundidade limitada e cada rollup consome recurso de job — não crie dezenas indiscriminadamente.</li>\n</ul>\n<p><strong>Formula columns (Power Fx): a evolução das calculated</strong></p>\n<p>As formula columns são a geração mais recente e usam <strong>Power Fx</strong> — a mesma linguagem do canvas app — para calcular em tempo de leitura. Elas foram desenhadas para substituir boa parte dos casos de calculated column com uma sintaxe muito mais expressiva e familiar para quem já vive na Power Platform.</p>\n<ul>\n<li><strong>Vantagens:</strong> funções ricas (texto, data/hora, matemática, condicionais), melhor legibilidade e a mesma experiência de autoria do Power Fx. Bom para lógica que ficaria verbosa ou impossível numa calculated.</li>\n<li><strong>Cuidados:</strong> como calculam na leitura, valem as mesmas ressalvas de performance de ordenação/filtro em grande volume. Nem toda função Power Fx está disponível, e há limites de tipos de retorno e de referências. Como recurso mais novo, vale validar disponibilidade e comportamento no seu ambiente antes de padronizar.</li>\n</ul>\n<p><strong>Roteiro de decisão</strong></p>\n<ol>\n<li><strong>É agregação de linhas filhas (soma/contagem/etc.)?</strong> → Rollup, se latência é aceitável; senão, fluxo/plugin no momento do evento.</li>\n<li><strong>É cálculo dentro da própria linha (ou lookup direto) e você quer sintaxe moderna?</strong> → Formula column (Power Fx).</li>\n<li><strong>É cálculo simples dentro da linha em ambiente que ainda não adota formula columns?</strong> → Calculated column.</li>\n<li><strong>A regra precisa ser garantida no exato momento da gravação (validação crítica, valores travados historicamente)?</strong> → Saia das colunas calculadas: use business rule, Power Automate ou plugin gravando em uma coluna comum, e considere impacto de ALM e performance.</li>\n</ol>\n<p>Um erro clássico de arquitetura é tratar rollup como se fosse tempo real e construir automações que leem um total desatualizado. Outro é abusar de calculated/formula columns como filtro de views pesadas e depois culpar a plataforma pela lentidão. Escolher o mecanismo certo é parte de modelagem de dados, não um detalhe de configuração.</p>\n<p>Se sua empresa está estruturando um modelo de dados sério no Dataverse — com regras de negócio, agregações e apps model-driven em produção — a Dynamic Soluções ajuda a desenhar a arquitetura de colunas, segurança e ALM para que ela escale sem retrabalho. Fale com a gente ou solicite uma solução pelo nosso portal self-service de Power Platform.</p>\n<p>Anyone designing model-driven apps or Dataverse-based solutions eventually needs derived values: an order total, a contract's age, the sum of child items, a concatenated field. Dataverse currently offers three native mechanisms for this — <strong>calculated columns</strong>, <strong>rollup columns</strong>, and Power Fx-based <strong>formula columns</strong> — and picking the wrong one leads to performance issues, stale data, or logic that simply isn't possible. This post breaks down what each type does, when it computes, and how to decide.</p>\n<p><strong>Calculated columns: computed at read time, within the same row</strong></p>\n<p>A calculated column resolves an expression the moment the row is read (retrieve), using values from the row itself or from related rows via lookup. It doesn't store the result — it's computed on demand by the server.</p>\n<ul>\n<li><strong>Good fits:</strong> field concatenation (<code>fullname</code>), conditional classification (value band, derived status), simple arithmetic between columns on the same row.</li>\n<li><strong>Limits that matter:</strong> you can't reliably sort or group by a calculated column in large views, because the calculation happens at read time and isn't indexed. Chained calculations (one calculated column referencing another) have limited depth. And there's no access to aggregations of child rows.</li>\n<li><strong>Common trap:</strong> using a calculated column as a filter in views or in high-volume queries hurts performance, because the engine is forced to compute in order to evaluate the filter.</li>\n</ul>\n<p><strong>Rollup columns: aggregating related rows, computed in batch</strong></p>\n<p>Rollup columns exist for the scenario calculated columns don't cover: aggregating child rows — sum, count, min, max, average over a 1:N relationship. The total of items on an order, the number of open cases per account, the highest quote value on an opportunity.</p>\n<p>The critical point is <strong>when</strong> the value is updated. A rollup is <strong>not recalculated in real time</strong>: a background job (by default every 12 hours, adjustable at the system level) reprocesses the values in bulk. A user can force recalculation of a specific row by clicking the refresh icon next to the field, but you should never assume a rollup is always live.</p>\n<ul>\n<li><strong>When to use:</strong> aggregate metrics that tolerate some latency (dashboards, KPIs, reports).</li>\n<li><strong>When NOT to use:</strong> business rules that need the exact total at the instant of a decision — for example, blocking an order if the total exceeds a credit limit. In that case use a flow, a plugin, or a formula column, not a rollup.</li>\n<li><strong>Limits:</strong> rollup filters are restricted, recursive hierarchies have limited depth, and each rollup consumes job resources — don't create dozens indiscriminately.</li>\n</ul>\n<p><strong>Formula columns (Power Fx): the evolution of calculated columns</strong></p>\n<p>Formula columns are the newest generation and use <strong>Power Fx</strong> — the same language as canvas apps — to compute at read time. They were designed to replace many calculated column use cases with far more expressive syntax that's familiar to anyone living in the Power Platform.</p>\n<ul>\n<li><strong>Advantages:</strong> rich functions (text, date/time, math, conditionals), better readability, and the same Power Fx authoring experience. Great for logic that would be verbose or impossible in a calculated column.</li>\n<li><strong>Watch out for:</strong> since they compute at read time, the same performance caveats apply to sorting/filtering at high volume. Not every Power Fx function is available, and there are limits on return types and references. As a newer feature, validate availability and behavior in your environment before standardizing on it.</li>\n</ul>\n<p><strong>Decision roadmap</strong></p>\n<ol>\n<li><strong>Is it aggregating child rows (sum/count/etc.)?</strong> → Rollup, if latency is acceptable; otherwise a flow/plugin at event time.</li>\n<li><strong>Is it a within-row calculation (or direct lookup) and you want modern syntax?</strong> → Formula column (Power Fx).</li>\n<li><strong>Is it a simple within-row calculation in an environment that doesn't yet adopt formula columns?</strong> → Calculated column.</li>\n<li><strong>Must the rule be guaranteed at the exact moment of the write (critical validation, values locked historically)?</strong> → Step away from calculated columns: use a business rule, Power Automate, or a plugin writing to a regular column, and weigh the ALM and performance impact.</li>\n</ol>\n<p>A classic architecture mistake is treating rollups as if they were real time and building automations that read a stale total. Another is abusing calculated/formula columns as filters in heavy views and then blaming the platform for the slowness. Choosing the right mechanism is part of data modeling, not a configuration afterthought.</p>\n<p>If your company is building a serious Dataverse data model — with business rules, aggregations, and model-driven apps in production — Dynamic Soluções helps design the column, security, and ALM architecture so it scales without rework. Reach out or request a solution through our Power Platform self-service portal.</p>"}},"pageContext":{"slug":"/blog/dataverse-calculated-rollup-formula-columns/","previousPost":{"frontmatter":{"title":"Power BI Embedded: como escolher a capacidade e o modelo de app"},"fields":{"slug":"/blog/power-bi-embedded-capacidade-modelo-app/"}},"nextPost":{"frontmatter":{"title":"Power Automate + Azure Functions: quando sair do connector nativo"},"fields":{"slug":"/blog/power-automate-azure-functions-integracao-quando-usar/"}}}},"staticQueryHashes":["2269431855"]}