Français

Données et feuilles de calcul · CSV Nettoyeur

Pourquoi les chaînes vides, les champs NULL et manquants ne sont pas la même chose dans CSV

· Pourquoi c'est important

csv json formats de données

Cellules CSV vides, un jeton NULL littéral et une ligne courte arrivant sous la forme d'entrées visibles différentes mais de sorties de chaîne
Illustration vectorielle originale de ToolAcre

CSV n'a aucun moyen de dire « aucune valeur » ; il ne contient que du texte. Cet article explique en quoi les champs vides, les chaînes vides entre guillemets, les valeurs littérales NULL et les lignes courtes diffèrent, pourquoi les chargeurs ne sont pas d'accord à leur sujet et comment la conversion en JSON force la question.

La même cellule vide devient NULL dans un système et une chaîne vide dans un autre - pourquoi cela change les jointures, les comptes et les moyennes

Les cellules source d'apparence vierge peuvent contenir plusieurs historiques, mais la sortie JSON de ToolAcre les réduit délibérément à une seule représentation. Un champ vide, un champ vide entre guillemets et une ligne courte complétée par l'analyseur deviennent tous la chaîne vide sous une clé présente. Aucune valeur nulle n'est déduite de l'apparence.

Cette cohérence n'est utile que lorsque le consommateur la connaît. Les tests de code spécifiquement pour null ne remplaceront pas la valeur par défaut pour "". Déterminez le contrat à valeur manquante à la limite de réception au lieu de supposer que le convertisseur a conservé les distinctions que la syntaxe CSV ou le modèle d'analyse choisi n'a pas conservé.

Dans ToolAcre, une cellule vide et une cellule manquante remplie deviennent toutes deux des chaînes vides à moins qu'un consommateur ne les réinterprète

CSV peut contenir deux délimiteurs sans rien entre eux, une chaîne vide explicitement citée, un texte littéral tel que NULL ou NA et une ligne se terminant avant la largeur de l'en-tête. ToolAcre analyse les deux premiers comme des chaînes vides et laisse les jetons littéraux intacts sous forme de texte ordinaire.

Pour une ligne courte, il émet un avertissement `RAGGED_ROW` et remplit les cellules de fin absentes avec des chaînes vides. Pour une longue ligne, il conserve les cellules supplémentaires dans le tableau, mais la conversion JSON n'a pas de clé d'en-tête pour elles et les omet. Cette asymétrie est la raison pour laquelle l’avertissement structurel nécessite une action avant la conversion.

Comment les chargeurs courants interprètent chacun : les différentes valeurs par défaut dans les feuilles de calcul, les bases de données et les bibliothèques de trames de données

Différents clients de base de données et bibliothèques d'analyse exposent leurs propres jetons nuls configurables et stratégies de champ vide. Ce référentiel ne peut pas établir ces valeurs par défaut, donc l'article ne prétend pas que toutes les feuilles de calcul ou chargeurs sont d'accord. Il documente la seule implémentation dont les sources et les tests sont disponibles.

Lorsque vous transmettez le fichier à un autre système, lisez les paramètres de cet importateur et créez des appareils pour ``, `""`, NULL et une ligne courte. Un contrat fiable est démontré à la limite réelle. Le folklore général sur ce que « CSV signifie normalement » est trop faible pour les valeurs manquantes.

Les valeurs par défaut du chargeur varient ; cet article documente ToolAcre plutôt que de généraliser le comportement des feuilles de calcul ou des bases de données

Le texte NULL est particulièrement dangereux car il peut s'agir d'un contenu authentique ou d'une sentinelle d'un expéditeur. ToolAcre n'a pas de liste de sentinelles configurée et la conserve donc sous la forme d'une chaîne de quatre caractères « NULL ». Il en va de même pour NA, N/A, zéro et tout autre jeton qu'un producteur pourrait utiliser.

Ne remplacez pas globalement ces chaînes sans une règle spécifique au champ. Une colonne de notes pourrait légitimement contenir « NULL » et une colonne de code pourrait utiliser NA. Résolvez le sens avec la documentation du producteur ou un schéma, puis transformez uniquement les colonnes appropriées en cours d'examen.

JSON vous fait décider — null, chaîne vide et clé absente sont trois choses différentes une fois le fichier converti

JSON distingue null, une chaîne vide et une propriété absente, mais ToolAcre choisit les clés présentes avec des valeurs de chaîne pour chaque colonne d'en-tête. Les cellules manquantes ou remplies deviennent "". Le convertisseur ne produit pas JSON null et n'omet pas de clé simplement parce qu'une cellule est vide.

Une cellule excédentaire est différente : sans en-tête correspondant, il n'y a pas de clé à attribuer, elle est donc absente des objets générés. L'avertissement de ligne vous indique qu'une perte est possible. Corrigez l'en-tête ou la largeur de la ligne avant le téléchargement plutôt que de lire l'absence comme une politique nulle significative.

ToolAcre émet des chaînes vides et des clés présentes, pas des clés nulles ou absentes

Utilisez les en-têtes id, note, code et quatre enregistrements : `1,,A`, `2,"",NULL`, `3,hello` et `4,world,B,extra`. Les deux premières notes deviennent des cordes vides ; le code de la deuxième ligne reste "NULL". La troisième ligne reçoit le code "" après le remplissage, tandis que la quatrième ligne avertit qu'une cellule supplémentaire n'a pas de clé.

Les objets résultants portent visiblement les trois mêmes clés pour les colonnes représentées. Ce cas concret est plus informatif qu'une capture d'écran de cellules vides car il connecte les avertissements d'analyse à la forme JSON. Cela montre également pourquoi les jetons littéraux nécessitent une décision de domaine distincte.

Ce que cela ne couvre pas : règles d'imputation et de gestion pour ce à quoi une valeur manquante devrait être par défaut

L'imputation est en dehors de l'itinéraire. Le convertisseur ne remplit pas les prix manquants, ne copie pas les valeurs précédentes et ne déduit pas les valeurs par défaut des lignes voisines. Ces changements dépendent de la signification commerciale et devraient se produire après qu'un schéma ait distingué des valeurs inconnues, inapplicables et intentionnellement vides.

Il ne préserve pas non plus la distinction syntaxique entre un champ vide sans guillemets et `""` ; les deux analysent la même chaîne de cellules. Si cette distinction est importante, CSV ne la transmet pas via le modèle de table de cet analyseur. Choisissez une représentation avec un état explicite ou conservez la source brute aux côtés des données dérivées.

Décidez ce que signifie le blanc avant de charger - comment la conversion CSV-to-JSON de ToolAcre CSV Cleaner rend la représentation visible

Décidez de ce que signifie le blanc avant de charger le JSON dans le code saisi. ToolAcre donne une base de référence transparente : valeurs de chaîne partout, chaînes vides pour les cellules représentées manquantes, mots sentinelles littéraux inchangés et avertissements lorsque la forme des lignes dépasse les clés disponibles.

Inspectez ces avertissements et documentez toute coercition ultérieure. Un convertisseur ne peut pas créer une sémantique de valeurs manquantes à partir du seul texte, mais il peut éviter de cacher ses propres choix. Ce comportement prévisible rend la prochaine frontière responsable de la politique qu’elle est réellement qualifiée pour appliquer.