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
)
);
ถ้าจะนำไปใช้กับข้อมูลตัวอย่างจากคำถามของคุณ - ผลลัพธ์คือ