Campos calculados básicos no Google Looker Studio: lógica e exemplos práticos

Capítulo 5

Tempo estimado de leitura: 8 minutos

+ Exercício

O que são campos calculados (e quando usar)

Campos calculados são fórmulas criadas dentro do Looker Studio para gerar uma nova dimensão ou métrica a partir de campos existentes. Eles servem para transformar dados (ex.: limpar texto, agrupar categorias), criar indicadores (ex.: taxa, ticket médio) e padronizar regras de negócio diretamente no relatório.

Você pode criar campos calculados em dois lugares comuns:

  • No nível da fonte de dados: o campo fica disponível para todos os gráficos que usam aquela fonte (bom para padronizar regras).
  • No nível do gráfico: o campo existe apenas naquele gráfico (bom para testes rápidos ou exceções).

Como criar um campo calculado (passo a passo)

  1. Selecione um gráfico (ou abra a edição da fonte de dados, se preferir criar no nível da fonte).
  2. No painel de propriedades, localize a seção de Campos (Dimensão ou Métrica).
  3. Clique em Adicionar campo (ou Criar campo).
  4. Digite um nome claro para o campo.
  5. Escreva a fórmula e use a validação do editor (erros aparecem em destaque).
  6. Salve e aplique no gráfico para conferir o resultado.

Dica prática: comece criando uma tabela simples com os campos de entrada e o campo calculado ao lado. Isso facilita validar linha a linha.

Operações básicas: soma, razão e métricas derivadas

KPI de Receita (soma)

Se sua fonte possui um campo numérico de receita por evento/linha (por exemplo, revenue), o KPI geralmente é apenas a agregação Soma no gráfico. Mas em alguns casos você precisa garantir que o campo seja numérico e tratar nulos.

Exemplo de campo calculado para “Receita (segura)”:

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

IFNULL(revenue, 0)

Depois, no KPI, use a agregação Soma desse campo.

Ticket Médio (razão)

Ticket médio é uma razão: Receita / Pedidos. É comum errar aqui criando AVG(revenue) (média por linha), que não representa o ticket médio real se a granularidade não for “pedido”. A forma mais segura é dividir somas.

Campo calculado:

SAFE_DIVIDE(SUM(IFNULL(revenue, 0)), SUM(IFNULL(orders, 0)))

O que isso resolve:

  • SUM() garante que você está calculando no nível agregado do gráfico.
  • IFNULL() evita que nulos “quebrem” o cálculo.
  • SAFE_DIVIDE() evita erro quando o denominador é 0 (retorna nulo em vez de erro).

Conversões por Sessão (razão)

Um exemplo comum é “conversões por sessão”: Conversões / Sessões. A lógica é igual: dividir somas.

SAFE_DIVIDE(SUM(IFNULL(conversions, 0)), SUM(IFNULL(sessions, 0)))

Para exibir como taxa (percentual), você pode multiplicar por 100 ou apenas formatar como porcentagem, dependendo do padrão do seu relatório:

SAFE_DIVIDE(SUM(IFNULL(conversions, 0)), SUM(IFNULL(sessions, 0)))

Depois, ajuste a formatação do campo para Percentual (quando aplicável) ou mantenha como razão (ex.: 0,12) conforme o público.

Condições com IF e CASE: regras de negócio simples

Quando usar IF vs CASE

  • IF: bom para uma condição simples (se/então/senão).
  • CASE: ideal quando há várias regras e prioridades (primeira regra que bater “vence”).

Categorização de canais com regras simples (CASE)

Suponha que você tenha uma dimensão de origem/mídia ou canal (por exemplo, source, medium ou channel). Você pode criar uma dimensão “Canal (agrupado)” com regras básicas. Exemplo genérico usando source e medium:

CASE  WHEN LOWER(medium) IN ("cpc", "ppc", "paid") THEN "Pago"  WHEN LOWER(medium) IN ("organic", "seo") THEN "Orgânico"  WHEN LOWER(medium) IN ("email", "e-mail") THEN "Email"  WHEN LOWER(medium) IN ("referral") THEN "Referência"  WHEN LOWER(medium) IN ("(none)", "none") AND LOWER(source) IN ("(direct)", "direct") THEN "Direto"  ELSE "Outros"END

Boas práticas nesse tipo de regra:

  • Use LOWER() para evitar falhas por variação de maiúsculas/minúsculas.
  • Coloque regras mais específicas antes das genéricas.
  • Garanta um ELSE para não deixar valores sem categoria.

Exemplo com IF: flag de conversão

Se você precisa criar um indicador binário (0/1) para contar ocorrências:

IF(event_name = "purchase", 1, 0)

Depois, você pode somar esse campo para obter o total de compras (desde que a granularidade faça sentido).

Concatenação e limpeza simples de texto

Concatenar campos para criar uma chave ou rótulo

Para unir duas dimensões em uma só (ex.: “Origem / Mídia”):

CONCAT(source, " / ", medium)

Se houver risco de nulos, proteja cada parte:

CONCAT(IFNULL(source, "sem_source"), " / ", IFNULL(medium, "sem_medium"))

Limpeza simples: remover espaços e padronizar caixa

Alguns problemas comuns são espaços extras e variações de escrita. Exemplos:

  • Remover espaços no início/fim:
TRIM(campaign)
  • Padronizar para minúsculas:
LOWER(TRIM(campaign))
  • Substituição simples (quando aplicável):
REPLACE(LOWER(TRIM(medium)), "e-mail", "email")

Essas limpezas ajudam a reduzir categorias duplicadas em gráficos (ex.: “Email” vs “email” vs “e-mail”).

Tratamento de nulos e zeros (para evitar números errados)

IFNULL para garantir valores padrão

Quando um campo pode vir nulo, o cálculo pode retornar nulo e “sumir” em alguns contextos. Use IFNULL para definir um padrão:

IFNULL(cost, 0)

SAFE_DIVIDE para evitar divisão por zero

Em taxas e razões, o denominador pode ser 0 em filtros específicos (ex.: um canal sem sessões no período). Use:

SAFE_DIVIDE(SUM(numerator), SUM(denominator))

Se você preferir exibir 0 em vez de nulo quando não há base, combine:

IFNULL(SAFE_DIVIDE(SUM(numerator), SUM(denominator)), 0)

Como validar se o campo calculado está correto

Validação visual com tabela

Crie uma tabela com:

  • Dimensão de inspeção (ex.: data, canal, campanha).
  • Campos base (ex.: receita, pedidos, sessões, conversões).
  • O campo calculado (ex.: ticket médio, conversões/sessão).

Depois:

  • Compare o resultado em diferentes filtros (um canal específico, um dia específico).
  • Verifique casos extremos: denominador 0, valores nulos, linhas sem conversão.

Checagem de consistência com “contas de guardanapo”

Escolha um recorte pequeno (por exemplo, um único dia) e confira:

  • Ticket Médio esperado = Receita total do dia / Pedidos do dia.
  • Conversões por Sessão esperado = Conversões do dia / Sessões do dia.

Se o valor do Looker Studio divergir, suspeite de:

  • Granularidade diferente do que você imaginou (linha por evento, por item, por sessão).
  • Uso de AVG() quando deveria ser SUM()/SUM().
  • Filtros aplicados ao gráfico e não ao controle/página (ou vice-versa).

Como evitar erros de tipo (número vs texto vs data)

Erros comuns e como corrigir

ProblemaSintomaCorreção típica
Campo numérico tratado como textoNão soma corretamente ou não permite operaçõesConverter/ajustar para número e usar IFNULL(campo, 0)
Concatenação com númeroErro ao usar CONCATConverter número para texto quando necessário (ou concatenar apenas dimensões textuais)
Divisão por zeroErro ou valores em branco inesperadosUsar SAFE_DIVIDE e, se necessário, IFNULL
CASE com retornos de tipos diferentesErro de validação no editorGarantir que todos os THEN e ELSE retornem o mesmo tipo (todos texto ou todos número)

Regra prática: em um CASE que cria uma dimensão, retorne sempre texto. Em um CASE que cria uma métrica, retorne sempre números (ex.: 0/1).

Exemplos guiados (do zero ao uso no gráfico)

1) KPI de Receita

  1. Crie o campo: Receita (segura) com IFNULL(revenue, 0).
  2. Insira um gráfico de KPI.
  3. Defina a métrica como Receita (segura) com agregação Soma.
  4. Valide com uma tabela por data para conferir se o total bate com o esperado.

2) Ticket Médio

  1. Crie o campo: Ticket Médio.
  2. Use a fórmula:
SAFE_DIVIDE(SUM(IFNULL(revenue, 0)), SUM(IFNULL(orders, 0)))
  1. Coloque em um KPI e também em uma tabela por canal para ver variações.
  2. Valide pegando um canal e conferindo: receita do canal / pedidos do canal.

3) Conversões por Sessão

  1. Crie o campo: Conversões por Sessão.
  2. Use:
SAFE_DIVIDE(SUM(IFNULL(conversions, 0)), SUM(IFNULL(sessions, 0)))
  1. Exiba em um gráfico de série temporal para acompanhar tendência.
  2. Teste um período curto e confira manualmente com os totais do mesmo recorte.

4) Categorização de canais (regras simples)

  1. Crie uma dimensão: Canal (agrupado).
  2. Use um CASE com LOWER() e um ELSE (modelo apresentado acima).
  3. Troque a dimensão do gráfico (ex.: tabela ou pizza) para Canal (agrupado).
  4. Valide filtrando por um valor de medium e verificando se caiu na categoria correta.

Recomendações de nomenclatura e documentação do cálculo

Padrões de nome

  • Comece com o tipo: KPI, Taxa, Dim, Flag (ex.: KPI Receita, Taxa Conversão, Dim Canal (agrupado)).
  • Inclua unidade quando fizer sentido: (R$), (%), (por sessão).
  • Evite nomes genéricos como “Novo campo”.

Documente a regra dentro do próprio relatório

  • Crie uma pequena tabela de “Dicionário” em uma página de apoio com: nome do campo, fórmula e observações.
  • Quando a regra tiver exceções (ex.: canais), registre a prioridade das condições do CASE.
  • Se houver versões, use sufixos controlados: Ticket Médio v2 apenas durante transição; depois, renomeie para manter um único campo oficial.

Agora responda o exercício sobre o conteúdo:

Qual abordagem é mais adequada para calcular o Ticket Médio em um gráfico, evitando distorções por granularidade e erros por nulos ou denominador zero?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O ticket médio deve ser calculado como raz33o agregada: SUM(receita) / SUM(pedidos). IFNULL previne problemas com nulos e SAFE_DIVIDE evita erro quando o denominador 33o 33.

Próximo capitúlo

Controles e filtros no Google Looker Studio: interatividade com segurança

Arrow Right Icon
Capa do Ebook gratuito Google Looker Studio: Relatórios e Painéis para Iniciantes
36%

Google Looker Studio: Relatórios e Painéis para Iniciantes

Novo curso

14 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.