2016-06-05 2 views
1

Comment l'échec de la recherche Ignorer fonctionne-t-il dans l'étape UPDATE de la transformation de la bouilloire? J'ai la transformation essayant de mettre à jour certaines données mais je vois le message d'erreur fréquent dans cette étape quand la recherche de clé ne correspond pas aux données de table.Mise à jour de la transformation Pentaho Kettle: comment utiliser l'échec de la recherche par ignorance

enter image description here

+1

Je n'ai jamais utilisé Pentaho mais pour le bénéfice de ceux qui le font, l'avez-vous actuellement coché? sinon, quand tu le cochez, que se passe-t-il? Quel est le message d'erreur? Maintenant, quand un expert Pentaho vient par là, il pourrait y avoir assez d'informations pour les aider. –

+0

Que se passe-t-il lorsque vous cochez la case? Je ne soupçonne rien, ce qui signifie que la ligne de recherche en échec est silencieusement jetée. Je n'utilise pas cette case à cocher moi-même parce que je gère toujours ces choses en amont, mais cela pourrait avoir du sens pour vous. –

Répondre

0

Par défaut, le Update step semble un enregistrement (base de données) en fonction de clés (ID) définies dans le panneau Keys to look up the values. Si aucun enregistrement n'est trouvé dans la table cible, l'étape échoue et renvoie une erreur à la console. Il échoue car il essaie de comparer les valeurs recherchées de la table cible avec les valeurs du flux d'enregistrement. Si elle ne trouve aucune ligne de la base de données cible pour la comparaison, elle échoue.

Lorsque vous vérifiez Ignore lookup failures?, l'étape n'échoue pas. Il ignore les échecs particuliers et continue à traiter les autres lignes entrantes du flux d'enregistrement.

Vous pouvez utiliser Flag field pour conserver une information indiquant si la recherche a échoué ou non. Vous pouvez l'utiliser pour suivre tous les ID qui ont échoué et les écrire sur la console ou le fichier. E.g: Cette étape est utile lorsque votre ETL charge des incréments quotidiens d'une source vers une base de données cible. La base de données source contient déjà des incréments quotidiens [IDs: 1,2,3,4,5,6] tandis que la cible contient uniquement ceux qui ont été chargés avant [IDs: 1,2,3,4]. Maintenant, lorsque vous exécutez une transformation qui charge des données à partir de la source et met à jour la cible (en utilisant Update step), elle échoue sur ID = 5. Il ne peut pas rechercher un tel enregistrement dans la base de données cible.

Une autre option importante est Skip lookup. Lorsqu'il est vérifié, il exécute directement les instructions de mise à jour sans rechercher les lignes dans la base de données cible et comparer les valeurs de table avec les valeurs entrantes provenant du flux d'enregistrement.