Belum ada cara yang bagus untuk melakukan ini di BigQuery, tetapi Anda dapat melakukannya dengan mengikuti ide di bawah ini
Langkah 1
Jalankan kueri di bawah ini
SELECT 'SELECT [group], ' +
GROUP_CONCAT_UNQUOTED(
'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
)
+ ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)
Hasilnya - Anda akan mendapatkan string seperti di bawah ini (diformat di bawah ini agar mudah dibaca)
SELECT
[group],
SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
SUM(IF([date] = "date2", value, NULL)) AS [d_date2]
FROM YourTable
GROUP BY [group]
ORDER BY [group]
Langkah 2
Jalankan saja kueri yang disusun di atas
Hasilnya akan seperti di bawah ini
group d_date1 d_date2
group1 15 30
Catatan 1 :Langkah 1 sangat membantu jika Anda memiliki banyak grup untuk diputar sehingga terlalu banyak pekerjaan manual. Dalam hal ini - Langkah 1 membantu Anda membuat kueri
Catatan 2 :langkah-langkah ini mudah diterapkan di setiap klien pilihan Anda atau Anda dapat menjalankannya di UI Web BigQuery
Anda dapat melihat lebih banyak tentang pivot di postingan saya yang lain.
Bagaimana cara menskalakan Pivoting di BigQuery?
Harap diperhatikan – ada batasan 10K kolom per tabel - jadi Anda dibatasi dengan 10K organisasi.
Anda juga dapat melihat di bawah ini sebagai contoh yang disederhanakan (jika yang di atas terlalu rumit/verbose):
Bagaimana cara mentranspos baris ke kolom dengan data dalam jumlah besar di BigQuery/SQL?
Bagaimana cara membuat kolom variabel dummy untuk ribuan kategori di Google BigQuery?
Pivot kolom berulang di BigQuery