Big Query - Mengubah urutan array menjadi kolom
Oct 14 2020
Kami memiliki tabel di Big Query seperti di bawah ini.
Tabel masukan:
Name | Interests
-----+----------
Bob | ["a"]
Sue | ["a","b"]
Joe | ["b","c"]
Kami ingin mengonversi tabel di atas ke format di bawah ini agar ramah BI / Visualisasi.
Tabel Target / Wajib:
+------------------+
| Name | a | b | c |
+------------------+
| Bob | 1 | 0 | 0 |
| Sue | 1 | 1 | 0 |
| Joe | 0 | 1 | 0 |
+------------------+
Catatan: Kolom Minat adalah tipe data array. Apakah transformasi semacam ini mungkin dilakukan di Big Query? Jika ya, Ada pertanyaan referensi?
Terima kasih sebelumnya!
Jawaban
1 MikhailBerlyant Oct 14 2020 at 11:38
Berikut adalah untuk BigQuery Standard SQL dan menggunakan fitur skrip 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
)
);
jika diterapkan ke data sampel dari pertanyaan Anda - keluarannya adalah
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'