2016-12-20 4 views
2

Wie werden One-to-Many-Beziehungen mit komplexen Hive-Typen behandelt? beispielsweise zwei Tabellen angegeben:Komplexer Hive-Typ, um eine oder viele Beziehungen zu behandeln

artist: artist_id, first_name, last_name 
song: song_id, song_name, song_date, artist_id 

Wie schreibt hiveql oder SQL Sammlung von Songs in einzigartige Künstler gehören das heißt

z.B.

112, drew, jackson, {10: [hill, 1992], 13: [away, 2011], .... } 
113, maria,mcmillan, {25: [denial, 2000], 26: [fly, 1990], .... } 
+0

nicht klar. Suchen Sie nach einer Tabellendefinition? Eine Abfrage, um die Daten von einem Format in ein anderes zu transformieren? –

+0

Ja, Abfrage, um die Daten aus den beiden Tabellen in das Beispiel zu transformieren – DevEx

Antwort

2
select  a.artist_id, a.first_name, a.last_name 
      ,s.songs 

from     artist as a 

      left join (select  artist_id 
            ,concat('{',concat_ws(',',collect_list(concat(cast(song_id as string),':[',song_name,',',cast(song_date as string),']'))),'}') as songs 

         from  song as s 

         group by artist_id 
         ) s 

      on   s.artist_id = 
         a.artist_id 
; 
Verwandte Themen