Nous avons deux tables d'abord contenant un code pour chaque tâche à chaque exécution. La 2e table contient des codes de toutes les tâches à chaque exécution. Comment exécuter une étincelle SQL diviser la colonne dans la 2e table en fonction d'un délimiteur et l'utiliser dans et dans l'instruction dans la première table
Les tables ressemblent à ceci p>
Table F1 P> xxx pré>
Table F2 P>
+-------+-----+ | runid | tid | +-------+-----+ | 1a | cb4 | | 1a | hb5 | | 1a | hb6 | | 1b | gh6 | | 1b | gh7 | +-------+-----+
3 Réponses :
Utiliser Vue latérale code> avec
EXPLODE CODE> Pour obtenir une personne par ligne, puis utilisez-le pour
Joindre code>.
with exploded_f2 as
(select runid,tid,expl_tid
from f2
lateral view explode(split(tid,',')) tbl as expl_tid
)
select f1.*
from f1
join exploded_f2 f2 on f1.tid = f2.expl_tid
Voici une autre version: puis rejoindre df1 et df3 p>
df2=f1.join(f2_alter,["runid","tid"]).show() +-----+---+ |runid|tid| +-----+---+ | 1a|cb4| | 1a|hb5| | 1a|hb6| | 1b|gh6| | 1b|gh7| +-----+---+