Join function works differently in String Manipulation and Column Expression nodes. In first join with empty string results in empty string in second empty string is ignored. It would be nice to have same functionality like in Column Expression.
sorry I have some problems following. Could you provide an example with the difference? My first testing yields same behavior and codewise there is no difference of the join function. It could be some general behavior of the separate nodes though.
Sorry needs to be more precise. I meant join with missing value. Also, I added Column Combiner. Please see attached.
Missing String Joins.knwf (9.2 KB)
so I think what the problem here is:
When the String Manipulation encounters a missing value it automatically assumes that it cannot do anything with it and returns a missing value. However, for the Column Expression node we want to ensure that we could handle such cases, hence, we convert missing values to null, which is more or less the same in a scripting/coding language. This gives the opportunity to check if a value is missing and do alternative calculations if that’s the case (see function: isMissing(value) ). However, as this value will be translated to null it will internally use the toEmpty(null) and hende append an empty String.
However, (so far I understand it) there is still a conceptual difference between missing value and null. Null means there is actual no value for that specific cell, whereas missing indicates that there might be some missing data due to a sensory failure or something else.
It’s really hard to tell which of these two is the correct way to handle it. So it’s not really a bug but rather a feature.
Thank you, Moritz, for explanation. It is really 2 different concepts that is not a good idea for the same function. It is logical from the theory that comparison of unknown with something results unknown. But from the string manipulation content missing value is not present so has to be considered as empty string. Also, please look at Column Combiner its behavior looks as a nonsense. String join to missing value results string+?. It makes sense if you want to prohibit incomplete data processing but not content wise.
I’ve created a ticket where we can address that problem and properly discuss on how to handle it, without breaking previous functionality/behavior. One possibility is, that we allow missing values for the toEmpty() function, which isn’t ideal but at least the user then knows what happens. So you could wrap everything into the toEmpty() function if you don’t want to preserve missing values.
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.