Join recipie null values

Solved!
Tuong-Vi
Level 3
Join recipie null values

Bonjour,

J'ai constaté un bug récurrent lors de jointures entre datasets qui utilisent des valeurs dont le résultat peut être vide (null ou blank value). Le job va être exécuté correctement en OK mais l'output ne va pas correspondre au résultat attendu car les lignes avec la clé null seront automatiquement supprimées sans warning....

Idem dans les pré/post computing join , si je fais l'erreur de mal caster le champs calculé (formula en string au lieu de double par exemple), le job va s'exécuter en OK mais dataset de sortie vide, sans warning sur l'erreur de cast.

Quelqu'un a y-il déjà observé cette erreur ? (je l'avais avec la version 5, mais je constate la même chose avec la V8.0.2),

Merci par avance,

Tuong-Vi

 

 

1 Solution
AllanF
Dataiker

Bonjour,

Le standard SQL considère que null n'est égale à aucune autre valeur car considérée comme valeur inconnue. De fait `null = null` est considéré comme faux et les lignes concernées ne sont pas sélectionnées lors d'un join.

Le plus simple est donc, comme il a été mentionné, de remplacer les valeurs null par une valeur "neutre" comme "N/A" ou "Empty".

Vous trouverez une discussion plus complète sur le sujet ici (en anglais).

View solution in original post

3 Replies
jack
Level 3

Bonjour, 
Même problème de mon côté. 2 solutions alternatives trouvées:
-faire un prepare avant le join qui remplace les cellules vides par un "VIDE" dans toutes les tables en entrée
-faire dans le join en "pre-computed column" un concat de toutes les colonnes qui forme ainsi une chaine de caractères comprenant les clés null

Existe t-il d'autres solutions, plus "propres" ?

Merci

Tuong-Vi
Level 3
Author

Bonjour,

Effectivement à part le prepare recipie en amont ou créer des champs calculés, je n'ai pas d'autres solutions en visuel. En coding, un spark sql ou python peut résoudre le problème facilement en une étape mais... c'est du script. Ce point sur les types m'a l'air propre au join recipie car j'ai le même problème de chargement de données si je me trompe de type sur un pré/post computed column :

Capture.PNG

Je n'aurai aucun warning pendant le run mais en output une table vide....

0 Kudos
AllanF
Dataiker

Bonjour,

Le standard SQL considère que null n'est égale à aucune autre valeur car considérée comme valeur inconnue. De fait `null = null` est considéré comme faux et les lignes concernées ne sont pas sélectionnées lors d'un join.

Le plus simple est donc, comme il a été mentionné, de remplacer les valeurs null par une valeur "neutre" comme "N/A" ou "Empty".

Vous trouverez une discussion plus complète sur le sujet ici (en anglais).