Thème
Ingest & mapping
Objectif
Cet écran alimente toutes les données de coût de la plateforme. Il importe des fichiers de facturation (CUR AWS, exports Azure/GCP, CSV/XLSX/JSON), propose un mapping de colonnes assisté par IA, puis charge les lignes normalisées dans le schéma unifié fact_cost. C'est le point d'entrée d'un onboarding de bout en bout.
Qui l'utilise
Analyste FinOps, administrateur billing, équipe data en onboarding.
| Action | Permission RBAC |
|---|---|
| Voir l'ingestion et les jobs | billing:ingest:read |
| Uploader, mapper et lancer un ingest | billing:ingest:write |
Prérequis
- Au moins un connecteur cloud configuré et actif pour les sources automatisées (voir Connecteurs cloud).
- Un fichier d'export de facturation, ou un bucket (S3 / Azure Blob / GCS) alimenté régulièrement.
- Permission
billing:ingest:writepour lancer un chargement.
Accès
- Menu Data & integration → Ingest & mapping
- URL :
\/ingest

Éléments de l'interface
| Zone UI | Description | Action possible |
|---|---|---|
| Carte Upload cost file | Sélecteur provider hint (AWS/Azure/GCP/Custom) + champ fichier | Charger un fichier |
| Bouton Stage upload | Charge et propose un mapping IA à valider | Prévisualiser avant ingest |
| Bouton Upload + AI auto-run | Charge, mappe et lance en une étape | Ingestion automatique |
| Carte AI mapping preview | Nom, format, job ID, provider détecté, confiance, mapping JSON | Vérifier / corriger |
| Boutons Re-run AI mapping / Run ingest / Clear workflow | Actions sur le job en cours | Régénérer / charger / réinitialiser |
| Carte Cloud file sources | Création de source (nom, type S3/Blob/GCS, provider) + Sync | Automatiser les imports |
| Listes Ingest sources / Ingest jobs | Statut, dates, actions | Suivre l'avancement |
| Saved ingest profiles | Profils de mapping réutilisables | Réappliquer un mapping |
Workflow pas à pas
A. Import manuel d'un fichier
- Data & integration → Ingest & mapping (
/ingest). - Dans Upload cost file, choisissez le provider hint et le fichier (
.csv,.xlsx,.xls,.json,.jsonl). - Cliquez Stage upload (recommandé la première fois) pour vérifier le mapping avant de charger.
- Contrôlez la carte AI mapping preview : colonnes source → champs Finoptika, champs requis marqués
*. - Corrigez les associations incorrectes ; au besoin Re-run AI mapping.
- Vérifiez la présence des champs requis (coût, service, période, compte).
- Cliquez Run ingest et attendez le statut
completed.
B. Source cloud automatisée
- Dans Cloud file sources : nom (
CUR AWS prod), type (AWS S3 drop,Azure Blob drop,GCS drop), provider → Add source. - Cliquez Sync sur la source : un job d'ingest est créé ou mis en file.
- Suivez-le dans Ingest jobs.
C. Valider et rafraîchir
- Attendez le job en
completed(nombre de lignes chargées affiché). - Allez sur Executive, FinOps cockpit ou Cost explorer.
- Réglez Period end / Cloud, puis cliquez Refresh Data.
Statuts des jobs
| Statut | Signification |
|---|---|
queued | En attente du worker |
running | Traitement en cours |
completed | Succès — lignes chargées (nombre affiché) |
failed | Échec — ouvrir le job, vérifier mapping ou fichier |
Formules & définitions
- Mapping — correspondance entre colonnes du fichier et le schéma unifié de coûts.
- Profil d'ingest — mapping sauvegardé, réutilisable pour les imports du même type (ex. CUR AWS standard).
fact_cost— table canonique ligne à ligne ; c'est le chemin de lecture de tous les coûts (billing/services/cost_reads.py).- Coût effectif — montant normalisé après remises, crédits, amortissements. 💶 Toujours en décimal, jamais en float.
Bonnes pratiques FinOps
- Première fois : Stage upload pour vérifier le mapping avant de charger.
- Enregistrez un profil par type d'export pour fiabiliser les imports récurrents.
- Vérifiez que le cost center est dérivable des tags pour l'allocation (voir Tags).
- Fichiers > ~100 Mo : préférez une source cloud (bucket) plutôt qu'un upload HTTP.
Limitations & disclaimers
- Les dashboards ne se rafraîchissent pas seuls : cliquez Refresh après un ingest.
- Un fichier mal mappé produit un job
failed: rien n'est chargé tant que les champs requis manquent. - 🕒 La fraîcheur affichée (
Synced) reflète la dernière ingestion réussie, pas l'heure de la facture. - Multi-devises : pas d'agrégation sans conversion explicite (voir taux de change plateforme).
Dépannage
| Symptôme | Cause probable | Résolution |
|---|---|---|
| « Fichier trop volumineux » | Limite upload HTTP | Source S3/Azure/GCS, ou fichier < 100 Mo |
Job failed après Run ingest | Mapping incomplet / colonnes invalides | Ouvrir le job → corriger mapping → Run ingest |
| Dashboards vides après ingest OK | Filtre provider ou période | Refresh ; vérifier provider hint et Period end |
| « Job n'existe plus » | Base réinitialisée (dev) | Nouveau Stage upload |
| Provider mal détecté | Colonnes non standard | Ajuster le provider hint + corriger le mapping |