Aller au contenu

Interroger un fichier téléversé via DuckDB

Le niveau Starter de Saiku Cloud prend en charge un chemin de données par téléversement de fichier. Vous téléversez un parquet ou un CSV ; Saiku le stocke dans R2 ; le moteur l’interroge via un DuckDB in-process. Pas besoin d’entrepôt client ; pas de pare-feu à configurer.

C’est le chemin le plus simple « je veux voir Saiku interroger quelque chose » pour les évaluateurs et les petites charges.

Impact niveau : [Starter] — le téléversement de fichier est le chemin de données du niveau Starter. Les clients [Team] + [Business] ont généralement leur propre entrepôt et utilisent donc l’un des autres documents de connexion, bien que le téléversement de fichier fonctionne sur tous les niveaux.

Pilote : Saiku Cloud embarque le pilote JDBC officiel de DuckDB. Les fichiers sont interrogés in-process — aucun aller-retour réseau sur le chemin de données.

Ce dont vous aurez besoin

  • Un fichier parquet, CSV ou JSON ≤ 5 Go.
  • Une idée de quelles colonnes sont des dimensions et lesquelles sont des mesures (nous inférerons automatiquement si vous nous laissez faire).

Étape 1 — Téléversez le fichier

  1. Connectez-vous à https://cloud.saiku.bi/.

  2. Naviguez vers Fichiers dans la barre latérale gauche.

  3. Glissez-déposez votre fichier dans la zone de téléversement, ou cliquez sur Téléverser un fichier et choisissez-le depuis votre système de fichiers.

Pendant que le téléversement progresse, Saiku Cloud :

  1. Stream le fichier vers notre bucket R2 (un stockage compatible S3).
  2. Lance une session DuckDB in-process contre le fichier.
  3. Exécute DESCRIBE pour lire les types de colonnes.
  4. Renvoie le schema au dashboard pour revue.

Pour parquet et JSON, l’inférence de schema est exacte (le format de fichier transporte les types de colonnes). Pour CSV, nous reniflons les 10 000 premières lignes et devinons — généralement correct, mais vous pouvez remplacer les types à l’étape suivante si quelque chose sort de travers.

Étape 2 — Passez en revue le schema proposé

Après le téléversement, Saiku vous navigue vers un écran de revue de schema. Les colonnes sont listées avec les types inférés :

  • INTEGER / BIGINT / DOUBLE → numérique. Proposition par défaut : une mesure Sum.
  • VARCHAR / TEXT → catégoriel. Proposition par défaut : une dimension.
  • TIMESTAMP / DATE → temporel. Proposition par défaut : une dimension de hiérarchie temporelle avec les niveaux année/mois/jour.

Vous pouvez :

  • Abandonner les colonnes dont vous n’avez pas besoin (réduit le temps de chargement du cube).
  • Changer une colonne numérique de Sum à Avg / Count / Min / Max.
  • Promouvoir une colonne chaîne en hiérarchie de dimension si elle a des niveaux naturels (région → pays → ville).
  • Ajouter une mesure calculée (expression MDX Mondrian — pour les utilisateurs avancés).

Ou acceptez les valeurs par défaut et cliquez sur Proposer le schema. La plupart des évaluateurs occasionnels font exactement cela.

Étape 3 — Ouvrez le cube

Après enregistrement, Saiku vous navigue vers Analyze. Votre fichier téléversé est maintenant un cube interrogeable. Faites glisser les dimensions sur les lignes/colonnes, faites glisser les mesures dans les valeurs, voyez le résultat.

Rafraîchir les données

Re-téléverser le même fichier (même nom) le remplace. Saiku réexécute l’inférence de schema + signale tout changement de type de colonne. Si le nouveau fichier a des colonnes qui ne correspondent pas au schema existant (vous avez renommé une colonne, ajouté une nouvelle), il vous sera demandé de :

  • Re-proposer — générer un schema neuf. Perd toutes les retouches par colonne que vous avez faites.
  • Conserver + réconcilier — préserve vos retouches ; supprime les références aux colonnes qui n’existent plus.

Pièges des formats de fichier

CSV : inférence de type

CSV ne transporte pas de types de colonnes. Saiku Cloud renifle les 10 000 premières lignes et devine. Surprises courantes :

  • Une colonne qui contient principalement des entiers mais avec l’occasionnel "NA" ou "-" est inférée comme VARCHAR. Soit nettoyez les données source, soit forcez la colonne en INTEGER (Saiku traitera les valeurs non numériques comme NULL).
  • Les dates au format non ISO (12/31/2025 au lieu de 2025-12-31) sont inférées comme VARCHAR. Plus propre de convertir en ISO dans votre pipeline source ; Saiku ne détecte pas automatiquement les formats de date selon la locale.

Parquet : préférez ce format

Parquet transporte les types de colonnes + statistiques nativement. L’inférence de schema est exacte, la taille de fichier est typiquement 1/4 de l’équivalent CSV, et DuckDB peut sauter des groupes de lignes entiers lors du filtrage. Utilisez parquet si vous avez le choix.

JSON : champs imbriqués

JSON-lines (un objet par ligne) est pris en charge. Les structures profondément imbriquées (objets-dans-tableaux-dans-objets) sont aplaties en noms de colonnes pointés — customer.address.city devient une colonne customer.address.city. Si votre imbrication est très profonde, le nombre de colonnes explose ; aplatissez dans votre pipeline source si vous en avez un.

Taille + rétention

Ce que vous N’OBTENEZ PAS avec ce flux

  • Jointures multi-fichiers — chaque téléversement est son propre cube. Pour joindre deux fichiers, faites-le dans votre pipeline source avant le téléversement, ou utilisez la bibliothèque de cubes + un schema Mondrian multi-fichiers (avancé).
  • Données en direct — les téléversements sont des snapshots ponctuels. Pour des données en direct, connectez plutôt un entrepôt via les flux BYOC.
  • Partitionnement personnalisé — DuckDB interroge le fichier entier. Les cubes au-delà de 1 Go sont lents à la première requête (les requêtes suivantes sont mises en cache). Pour des charges plus importantes, envisagez plutôt MotherDuck — voir Connexion de MotherDuck.

Essayer avec FoodMart

Vous voulez tester Saiku Cloud avec ce dialecte avant de connecter vos propres données ? Téléchargez le jeu de données d’exemple FoodMart packagé pour DuckDB :

Jeu de données d’exemple FoodMart pour DuckDB