Inférence de schéma
Comment Scrydon détermine les types de colonnes à partir d'un fichier lors de la première arrivée des données — échantillonnage, règles de typage, remplacements.
Lorsque vous uploadez un fichier, Scrydon infère un schéma en échantillonnant les données et en classifiant le type de chaque colonne. Cette page documente les règles pour que vous puissiez anticiper le comportement avec vos données — et remplacer le résultat lorsque l'heuristique est erronée.
Échantillonnage
L'inférence s'exécute sur un échantillon du fichier :
- CSV / JSONL — premières N lignes (par défaut 10 000). Configurable par upload.
- JSON — le document entier s'il s'agit d'un tableau ; sinon les clés de niveau supérieur.
Les fichiers plus volumineux que l'échantillon sont quand même ingérés intégralement une fois le schéma validé — l'échantillon sert uniquement à décider du schéma.
Règles de typage
Pour chaque colonne, l'inférence parcourt une liste de priorités et sélectionne le type le plus spécifique que toutes les valeurs échantillonnées correspondent :
| Priorité | Type | Règle de correspondance |
|---|---|---|
| 1 | BOOLEAN | Toutes les valeurs sont true/false/yes/no/0/1 (insensible à la casse) |
| 2 | BIGINT | Toutes les valeurs correspondent à ^-?\d+$ et tiennent sur 64 bits |
| 3 | DOUBLE | Toutes les valeurs sont des doubles IEEE-754 valides |
| 4 | DATE | Toutes les valeurs correspondent à un format de date reconnu (YYYY-MM-DD, DD/MM/YYYY, …) |
| 5 | DATETIME | Toutes les valeurs correspondent à un format datetime / ISO 8601 reconnu |
| 6 | JSON | Toutes les valeurs peuvent être analysées comme des objets ou tableaux JSON |
| 7 | STRING | Repli — tout le reste, y compris les colonnes de types mixtes |
Les valeurs vides / null / NA sont ignorées lors de l'inférence du type — elles ne forcent pas une colonne à STRING. Elles marquent en revanche la colonne comme nullable.
Nullabilité
Une colonne est nullable si au moins une valeur échantillonnée est vide, null, NA ou NaN. Sinon, elle est marquée non-null. Vous pouvez modifier cela manuellement à l'étape de confirmation du schéma.
Gestion des noms de colonnes
Les en-têtes sont préservés sans perte. Le nom physique de la colonne est assaini pour satisfaire les règles des identifiants SQL ; l'en-tête original est stocké comme nom d'affichage. Consultez Noms de colonnes pour la table d'assainissement complète.
Remplacements
Une fois l'inférence effectuée, une étape de confirmation du schéma vous est présentée. Depuis celle-ci, vous pouvez :
- Modifier le type d'une colonne (ex. forcer un
STRINGenBIGINTsi l'échantillon contenait une valeur aberrante). - Basculer la nullabilité d'une colonne.
- Marquer une colonne comme clé primaire pour la prise en charge de l'upsert.
- Définir la classification d'une colonne — publique / interne / confidentielle / restreinte. Consultez Classification et masquage.
- Renommer le nom d'affichage d'une colonne sans modifier le nom physique.
Les remplacements s'appliquent aux ré-uploads ultérieurs de la même structure de fichier.
Ré-upload d'un fichier
Ré-uploader la même structure de fichier vers une table existante est le comportement standard. La plateforme traduit automatiquement les noms d'affichage en noms physiques, vous permettant de conserver les en-têtes CSV originaux dans votre fichier source sans avoir à les renommer.
Si le nouveau fichier ajoute des colonnes, elles sont ajoutées comme nullable. S'il en supprime, les colonnes existantes restent. S'il renomme une colonne, la colonne renommée est traitée comme nouvelle — la plateforme ne devinera pas que « AncienNom » est devenu « NouveauNom ».
Quand l'inférence échoue
Les modes d'échec les plus courants :
| Symptôme | Quoi vérifier |
|---|---|
Colonne numérique inférée comme STRING | Une seule valeur non numérique dans l'échantillon. Augmentez la taille de l'échantillon ou nettoyez les données. |
Colonne de dates inférée comme STRING | Le format de date n'est pas dans la liste reconnue. Remplacez le type par DATE et fournissez une chaîne de format. |
Colonne de devises mixtes inférée comme STRING | Les décimaux portent un préfixe de devise. Soit supprimez le préfixe à la source, soit acceptez le type STRING. |
Colonne voulue en BOOLEAN obtenue en BIGINT | Les valeurs sont 0 et 1 — BIGINT a remporté la priorité. Remplacez par BOOLEAN à l'étape de confirmation. |
Liens connexes
- Tables gérées — cycle de vie et modes d'écriture.
- Noms de colonnes — assainissement des en-têtes.
- Classification et masquage — gouvernance par colonne.