Pular para o conteúdo

Import, DirectQuery, cache, refresh incremental

Aula 10 de 128 minOperarAtualizada em 2026-10-04

Vídeo em produção

A gravação desta aula está no lote de produção. O objetivo, o exercício e a documentação já valem. Duração-alvo: 8 min.

Objetivo: Decidir modo por frescor × custo

Selo de estado: Preview (teto atual do produto) · Curso ACD-330 — Dashboards: visuais, filtros, interações e design · Aula 10 de 12 · Atualizado em 2026-10-04.

Objetivo#

Ao final desta aula você vai decidir modo por frescor × custo.

Vídeo#

Identificador: acd-330-10-import-directquery-cache · Duração-alvo: 8 min · Tela: /dashboards.

Roteiro (capítulos):

  1. 0:00–1:30 — Import (snapshot) (/dashboards/[id]) — refresh agendado, custo zero na visualização.
  2. 1:30–3:00 — DirectQuery (ao vivo) (/dashboards/[id]) — consulta ao vivo com cache, cobrança no cache-miss.
  3. 3:00–4:00 — cache de consulta — por que a 2ª leitura costuma sair de graça.
  4. 4:00–5:15 — refresh incremental (/dashboards/[id]) — recalcular só o período recente.
  5. 5:15–6:30 — guarda de custo (FinOps) — teto de bytes faturáveis em toda consulta.
  6. 6:30–8:00 — o advisor e a decisão frescor × custo (/dashboards/[id]) — o que ele sugere, e por que nunca troca por conta própria.

Conteúdo#

Dois modos, a mesma pergunta: frescor vale o custo?

Como no Power BI, todo dashboard tem um modo de dados. O ingestia.bi oferece dois: Import (o painel lê um snapshot materializado, com custo zero por acesso) e DirectQuery (o painel consulta a base ao vivo, com cache para reduzir custo). A decisão entre os dois não é estética — é uma troca explícita entre frescor (o quão atual o número precisa ser) e custo (quanto cada consulta ao BigQuery pesa no orçamento do workspace).

Como aparece no produto

Em Import, o motor materializa um snapshot em refresh agendado: até 1.000 linhas por gráfico e 5.000 por tabela, 1 crédito debitado por refresh, gravado no Storage (gzip) ou inline. A partir daí, abrir o painel não gera custo novo — você está lendo um arquivo já pronto, não reconsultando o datalake. O Δ% vs período anterior (aula 3) lê o snapshot bom anterior, sem nova consulta. É o modo padrão para painéis executivos que não precisam de tempo real.

Em DirectQuery, o painel consulta a base a cada visualização — mas com um cache de 10 minutos (Redis) entre o painel e o BigQuery: a cobrança só acontece no cache-miss (a primeira leitura depois do cache expirar); leituras dentro da janela de 10 minutos saem do cache, sem custo novo. Se um widget falhar, ele vira um card de erro sem derrubar o restante do painel. Sem Redis configurado, o cache cai num fallback em memória (não compartilhado entre instâncias) — ainda funciona, só perde o compartilhamento entre servidores.

O refresh incremental ataca um problema específico do Import: recalcular anos de histórico todo santo dia é caro e lento quando só os últimos dias realmente mudaram. Ativado por visual, ele recalcula só a janela recente (recentDays, no fuso do painel) — mas a elegibilidade é restritiva: o motor só assume o caminho incremental quando garante que o resultado é idêntico ao de um refresh completo (mesmas linhas, mesma ordem); na menor dúvida, ele faz o refresh completo por segurança do número.

Em qualquer modo, toda consulta passa por uma guarda de custo: maximumBytesBilled (1 GiB por padrão) limita o que uma única consulta pode faturar, maxRows é travado em 50.000 (nunca ilimitado), e existe um custo mínimo por consulta (10 MB) convertido para reais. Isso é o que torna o modo DirectQuery seguro de habilitar sem medo de uma consulta fugir do controle.

Para ajudar na decisão entre Import e DirectQuery, o produto tem um advisor: ele compara o padrão de uso e o orçamento do workload e sugere o modo mais adequado para aquele painel especificamente — mas a decisão final é sempre sua, porque o advisor nunca troca o modo por conta própria. O mesmo mecanismo foi testado em volumes sintéticos de 10 milhões, 100 milhões e 1 bilhão de linhas (gerador determinístico, percentis calculados de forma consistente) para garantir que a recomendação não quebra em escala — a execução real desses volumes em nuvem de produção é Preview.

Exemplo na Aurora Varejo

O painel "Comercial — Aurora" (executivo, atualizado uma vez por dia) é um bom caso de Import: refresh agendado de madrugada, custo zero durante o dia inteiro de consultas da diretoria. Um painel operacional de "pedidos em aberto agora", por outro lado, pede DirectQuery — mesmo pagando o cache-miss ocasional, o frescor de poucos minutos vale o custo. Ative o refresh incremental na linha mensal de Receita (aula 4): o histórico 2024–2026 fica fixo, e só os últimos 7 dias são recalculados a cada refresh.

Erros comuns de design

  • DirectQuery em painel executivo sem necessidade. Se o número só precisa ser de "ontem", Import é mais barato e igualmente útil — reserve DirectQuery para o que realmente precisa de minutos, não de dias.
  • Confiar no cache como garantia de custo zero. Fora da janela de 10 minutos, a próxima leitura é cache-miss e cobra de novo — o cache reduz custo, não o zera.
  • Ignorar a sugestão do advisor sem entender o motivo. O advisor nunca decide por você, mas ignorar a recomendação sem saber por que ela foi feita é desperdiçar a análise.
  • Ativar incremental em visual que não qualifica. Se a consulta não é particionável por período e ordenada ascendentemente, o motor cai para full de qualquer forma — ativar o toggle não força o incremental contra a segurança do número.
  • Achar que o snapshot é tempo real. Em Import, o painel reflete a última atualização agendada — não o estado atual da base; isso é lembrado explicitamente no rótulo de frescor do painel.

Estado atual (Preview)

Rollups Gold/roteador semântico/refresh incremental (C07.4) e o advisor Import/DirectQuery com budgets por workload (C07.6) estão em Preview: a lógica (elegibilidade restritiva, identidade incremental==completo, advisor que nunca troca sozinho, budget fail-closed) é coberta por suíte determinística — mas a execução real desses mecanismos no BigQuery de produção, em escala, é NÃO MEDIDO nesta documentação. O motor de Import em si é GA-candidato, mas a execução end-to-end com BigQuery e billing reais não tem teste de integração — funcionamento em produção também é NÃO MEDIDO. Sem GCP configurado, a plataforma roda em modo demonstração (3 linhas fixas SP/RJ/MG), declarado como tal.

Aviso

maximumBytesBilled e maxRows valem em toda consulta, nos dois modos — é a guarda que faz DirectQuery seguro de habilitar sem supervisão manual de cada consulta.

PerguntaModo recomendado
"O painel pode esperar até a próxima madrugada?"Import
"Preciso do estado de agora, aceitando custo no cache-miss?"DirectQuery
"Anos de histórico, só os últimos dias mudam?"Import + refresh incremental
"Não sei qual escolher"Consultar o advisor — ele sugere, você decide

Faça você mesmo#

No workspace de treino Aurora Varejo (abra /dashboards no console):

  1. Abra o painel "Comercial — Aurora" e confirme que ele está em modo Import.
  2. Dispare um refresh manual e confirme, na auditoria, o débito de 1 crédito.
  3. Abra o painel de novo sem disparar refresh e confirme que não houve novo custo.
  4. Num painel de teste, mude o modo de um visual para DirectQuery e abra-o duas vezes em menos de 10 minutos — confirme que a 2ª leitura não gera custo novo.
  5. Ative o refresh incremental na linha mensal de Receita e confirme que o número bate com o do refresh completo.
  6. Consulte o advisor para o painel "Comercial — Aurora" e anote a recomendação (Import ou DirectQuery) e o motivo.
  7. Decida, com base na recomendação, se mantém o painel em Import ou muda — e registre por quê.

Você terminou quando: você sabe explicar, para esse painel específico, por que Import (ou DirectQuery) é a escolha certa, com o advisor consultado e a guarda de custo confirmada na auditoria.

Checagem rápida#

Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.

Documentação relacionada#

Capacidades ensinadas#

C07.4 · C07.6 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".

Carregando seu progresso…