J'ai fait un algorithme et j'ai eu beaucoup de colonnes avec le nom logique et suffixe numérique, je dois faire coalesce
mais je ne sais pas comment pour appliquer coalesce
avec un nombre différent de colonnes.
Exemple:
|id|logic_01|logic_02|logic_03|
|1 | null |a |null |
|2 | null |b |null |
|3 | c | null |null |
|4 | null | null |d |
Réponse:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
Un autre exemple:
|id|logic_01|logic_02|logic_03|logic_04|
|1 | null |a |null |null |
|2 | null | null |null |b |
|3 | c | null |null |null |
|4 | null | null |d |null |
Réponse:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
Merci de votre aide.
Recherchez d'abord toutes les colonnes que vous souhaitez utiliser dans le coalesce
:
val cols = df.columns.filter(_.startsWith("logic")).map(col(_))
Effectuez ensuite le coalesce
réel:
df.select($"id", coalesce(cols: _*).as("logic"))