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
-
Faça login em
https://cloud.saiku.bi/. -
Vá em Arquivos na barra lateral esquerda.
-
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:
- Faz streaming do arquivo para o nosso bucket no R2 (um store S3-compatível).
- Sobe uma sessão DuckDB em processo contra o arquivo.
- Roda
DESCRIBEpara ler os tipos das colunas. - 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 medidaSum.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
SumparaAvg/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 comoVARCHAR. Ou limpe os dados de origem, ou sobrescreva a coluna paraINTEGER(o Saiku tratará valores não numéricos comoNULL). - Datas em formato não-ISO (
12/31/2025em vez de2025-12-31) são inferidas comoVARCHAR. 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: