Big Query - เปลี่ยนอาร์เรย์เป็นคอลัมน์

Oct 14 2020

เรามีตารางใน Big Query ดังต่อไปนี้

ตารางอินพุต:

 Name | Interests
 -----+----------
 Bob  | ["a"]
 Sue  | ["a","b"]
 Joe  | ["b","c"]

เราต้องการแปลงตารางด้านบนเป็นรูปแบบด้านล่างเพื่อทำให้ BI / Visualization เป็นมิตร

เป้าหมาย / ตารางที่ต้องการ:

 +------------------+
 | Name | a | b | c |
 +------------------+
 | Bob  | 1 | 0 | 0 |
 | Sue  | 1 | 1 | 0 |
 | Joe  | 0 | 1 | 0 |
 +------------------+

หมายเหตุ:คอลัมน์ความสนใจเป็นประเภทข้อมูลอาร์เรย์ การเปลี่ยนแปลงประเภทนี้เป็นไปได้ไหมใน Big Query ถ้าใช่คำถามอ้างอิงใด ๆ

ขอบคุณล่วงหน้า!

คำตอบ

1 MikhailBerlyant Oct 14 2020 at 11:38

ด้านล่างนี้ใช้สำหรับ BigQuery Standard SQL และใช้คุณลักษณะการเขียนสคริปต์ของ BQ

#standardSQL
create temp table ttt as (
  select name, interest 
  from `project.dataset.table`, 
  unnest(interests) interest
);

EXECUTE IMMEDIATE (
  SELECT """
  SELECT name, """ || 
    STRING_AGG("""MAX(IF(interest = '""" || interest || """', 1, 0)) AS """ || interest, ', ') 
  || """
  FROM ttt 
  GROUP BY name
  """
  FROM (
    SELECT DISTINCT interest 
    FROM ttt
    ORDER BY interest
  )
);      

ถ้าจะนำไปใช้กับข้อมูลตัวอย่างจากคำถามของคุณ - ผลลัพธ์คือ