IBM PureData System for Analytics, Version 7.1

Analyse des lignes

Lors du chargement, les lignes sont analysées une à une à partir du fichier de données externes, puis converties en enregistrements internes dans la table externe. Au cours de l'analyse de chaque ligne ou colonne, des erreurs peuvent être détectées. Par exemple, une valeur de colonne peut être erronée en raison d'un délimiteur manquant. Des erreurs peuvent également se produire au cours de la conversion des données du format externe en enregistrements internes dans la table externe, par exemple un caractère alphabétique utilisé dans une colonne de type entier au format texte délimité.

Chaque erreur est consignée dans un fichier nzlog, et les lignes erronées sont stockées dans un fichier nzbad. Le contenu de ces fichiers permettent d'identifier les lignes erronées dans le fichier de données externe et de les corriger avant d'effectuer un nouveau chargement. En fonction des options de chargement de table externe spécifiées, une ligne erronée est ignorée ou entraîne l'abandon de la totalité du chargement. De même, si une ligne ou une colonne est erronée, le reste de la ligne peut être ignoré ; si une récupération est possible, le chargement continue à analyser les colonnes suivantes de la ligne.

Si une erreur d'expression de projet est détectée dans les colonnes de table externe, le chargement est arrêté et la transaction abandonnée. Les erreurs de ce type ne sont pas consignées dans les fichiers nzbad ou nzlog, car elles ne font pas partie du périmètre du mécanisme de chargement de table externe. Lorsque le traitement atteint le moteur SQL, la table externe est traitée comme une table normale.

Contrairement à une table externe dont les lignes externes sont classées par séquences ordonnées, les tables utilisateur ne disposent pas d'ordre de ligne implicite autre que les colonnes cachées RowID. Il est donc impossible d'identifier une ligne erronée dans un moteur SQL si vous n'utilisez pas RowID. Dans ce cas, le système IBM® Netezza spécifie qu'une colonne a généré une erreur, mais n'identifie pas la ligne erronée. C'est donc comme si la requête effectuait la sélection à partir d'une table normale et l'insertion dans une autre table normale, certaines lignes générant l'erreur au cours de l'insertion.



Commentaires | Copyright IBM Corporation 2013 | Dernière mise à jour : 2013-07-31