Pular para o conteúdo

Consultar um arquivo enviado via DuckDB

O tier Starter do Saiku Cloud suporta um caminho de dados por upload de arquivo. Você envia um parquet ou CSV; o Saiku armazena no R2; o engine consulta via DuckDB em processo. Sem precisar de data warehouse do cliente; sem firewall para configurar.

Este é o caminho mais simples de “quero ver o Saiku consultando algo” para avaliadores e cargas pequenas.

Impacto no tier: [Starter] — upload de arquivo é o caminho de dados do tier Starter. Clientes [Team] + [Business] geralmente têm seu próprio data warehouse e batem em um dos outros docs de conexão, embora o upload de arquivo funcione em todos os tiers.

Driver: o Saiku Cloud traz o driver JDBC oficial do DuckDB. Arquivos são consultados em processo — sem round-trip de rede no caminho dos dados.

O que você vai precisar

  • Um arquivo parquet, CSV ou JSON ≤ 5 GB.
  • Uma ideia de quais colunas são dimensões vs quais são medidas (nós inferimos automaticamente se você deixar).

Passo 1 — Envie o arquivo

  1. Faça login em https://cloud.saiku.bi/.

  2. Vá em Arquivos na barra lateral esquerda.

  3. Arraste e solte seu arquivo na área de upload, ou clique em Enviar arquivo e escolha pelo seu filesystem.

Enquanto o upload progride, o Saiku Cloud:

  1. Faz streaming do arquivo para o nosso bucket no R2 (um store S3-compatível).
  2. Sobe uma sessão DuckDB em processo contra o arquivo.
  3. Roda DESCRIBE para ler os tipos das colunas.
  4. Retorna o schema para o dashboard para revisão.

Para parquet e JSON, a inferência de schema é exata (o formato do arquivo carrega tipos de coluna). Para CSV nós farejamos as primeiras 10.000 linhas e adivinhamos — geralmente correto, mas você pode sobrescrever tipos na próxima etapa se algo sair errado.

Passo 2 — Revise o schema proposto

Após o upload, o Saiku te leva a uma tela de revisão de schema. As colunas são listadas com tipos inferidos:

  • INTEGER / BIGINT / DOUBLE → numérico. Proposta default: uma medida Sum.
  • VARCHAR / TEXT → categórico. Proposta default: uma dimensão.
  • TIMESTAMP / DATE → tempo. Proposta default: uma dimensão de hierarquia temporal com levels de ano/mês/dia.

Você pode:

  • Descartar colunas que não precisa (reduz o tempo de carga do cubo).
  • Mudar uma coluna numérica de Sum para Avg / Count / Min / Max.
  • Promover uma coluna string a uma hierarquia de dimensão se tiver levels naturais (região → país → cidade).
  • Adicionar uma medida calculada (expressão MDX do Mondrian — para usuários avançados).

Ou aceitar os defaults e clicar em Propor schema. A maioria dos avaliadores casuais faz exatamente isso.

Passo 3 — Abra o cubo

Após salvar, o Saiku te leva a Analyze. Seu arquivo enviado agora é um cubo consultável. Arraste dimensões para linhas/colunas, arraste medidas para valores, veja o resultado.

Atualizando os dados

Reenviar o mesmo arquivo (mesmo nome) substitui-o. O Saiku reroda a inferência de schema + sinaliza qualquer mudança de tipo de coluna. Se o novo arquivo tem colunas que não casam com o schema existente (você renomeou uma coluna, adicionou uma nova), você será solicitado a:

  • Repropor — gerar um schema novo. Perde quaisquer ajustes por coluna que tenha feito.
  • Manter + reconciliar — preserva seus ajustes; descarta referências a colunas que não existem mais.

Pegadinhas de formato de arquivo

CSV: inferência de tipo

CSV não carrega tipos de coluna. O Saiku Cloud fareja as primeiras 10.000 linhas e adivinha. Surpresas comuns:

  • Uma coluna que é majoritariamente inteiros mas tem um ocasional "NA" ou "-" é inferida como VARCHAR. Ou limpe os dados de origem, ou sobrescreva a coluna para INTEGER (o Saiku tratará valores não numéricos como NULL).
  • Datas em formato não-ISO (12/31/2025 em vez de 2025-12-31) são inferidas como VARCHAR. Mais limpo converter para ISO no pipeline de origem; o Saiku não detecta automaticamente formatos de data específicos de locale.

Parquet: prefira esse formato

Parquet carrega tipos de coluna + estatísticas nativamente. A inferência de schema é exata, o tamanho do arquivo geralmente é 1/4 do CSV equivalente e o DuckDB pode pular grupos de linha inteiros ao filtrar. Use parquet se tiver escolha.

JSON: campos aninhados

JSON-lines (um objeto por linha) é suportado. Estruturas profundamente aninhadas (objetos-dentro-de-arrays-dentro-de-objetos) são achatadas para nomes de coluna com pontos — customer.address.city vira uma coluna customer.address.city. Se seu aninhamento for muito profundo, o número de colunas explode; achate no pipeline de origem se tiver um.

Tamanho + retenção

O que você NÃO ganha com este fluxo

  • Joins multi-arquivo — cada upload é seu próprio cubo. Para juntar dois arquivos, faça no seu pipeline de origem antes do upload, ou use a cube-library + um schema Mondrian multi-arquivo (avançado).
  • Dados ao vivo — uploads são snapshots em ponto no tempo. Para dados ao vivo, conecte um data warehouse pelos fluxos BYOC.
  • Particionamento customizado — o DuckDB consulta o arquivo inteiro. Cubos acima de 1 GB ficam lentos na primeira consulta (as consultas subsequentes são cacheadas). Para cargas maiores, considere MotherDuck — veja Conectar MotherDuck.

Teste com FoodMart

Quer testar o Saiku Cloud com esse dialeto antes de conectar seus próprios dados? Baixe o dataset de exemplo FoodMart empacotado para DuckDB:

Dataset de exemplo FoodMart para DuckDB