Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengubah Baris ke Lajur dalam BigQuery Tanpa Fungsi Pangsi Asli?

Bagaimana untuk Mengubah Baris ke Lajur dalam BigQuery Tanpa Fungsi Pangsi Asli?

Barbara Streisand
Lepaskan: 2025-01-03 14:34:40
asal
775 orang telah melayarinya

How to Pivot Rows into Columns in BigQuery Without Native Pivot Functionality?

Pindahkan Baris ke Lajur dalam BigQuery (Pelaksanaan Pangsi)

Dalam tutorial BigQuery ini, kami berhasrat untuk menangani keperluan lazim untuk transformasi data: menukar baris kepada lajur sambil mengekalkan pasangan nilai kunci. Teknik ini, yang dikenali sebagai pivoting, digunakan secara meluas dalam analisis dan pelaporan data. Walau bagaimanapun, tidak seperti sistem pangkalan data konvensional yang menyokong operasi pangsi secara asli, BigQuery pada masa ini tidak mempunyai fungsi ini.

Mengasing dengan Lajur Pengumpulan Tambahan

Untuk mengatasi had ini, kami membentangkan penyelesaian penyelesaian yang melibatkan lajur tambahan dalam data input, yang berfungsi untuk mengumpulkan baris yang harus digabungkan menjadi satu baris dalam keluaran. Begini cara pendekatan ini berfungsi:

Langkah 1: Bina Pertanyaan Pangsi

Kami mulakan dengan mencipta pertanyaan yang akan menjana pertanyaan pangsi sebenar. Pertanyaan ini secara dinamik membina kod yang diperlukan untuk melaksanakan operasi berputar berdasarkan set data input.

SELECT 'SELECT id, ' + 
   GROUP_CONCAT_UNQUOTED(
      'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']'
   ) 
   + ' FROM yourTable GROUP BY id ORDER BY id'
FROM (
  SELECT key 
  FROM yourTable
  GROUP BY key
  ORDER BY key
) 
Salin selepas log masuk

Pertanyaan ini mengenal pasti semua nilai kunci unik dalam data input dan menjana rentetan yang, apabila dilaksanakan sebagai pertanyaan berasingan , akan melakukan operasi berputar.

Langkah 2: Laksanakan Pangsi Dijana Pertanyaan

Hasil pertanyaan pertama ialah rentetan yang mentakrifkan pertanyaan pangsi sebenar. Kami hanya perlu menyalin rentetan ini dan menjalankannya sebagai pertanyaan BigQuery biasa. Hasilnya ialah set data yang ditukar dengan kunci sebagai nama lajur dan nilai sebagai nilai lajur.

Contoh Input dan Output

Pertimbangkan jadual input berikut:

id Key Value
1 channel_title Mahendra Guru
1 youtube_id ugEGMG4-MdA
1 channel_id UCiDKcjKocimAO1tV
1 examId 72975611-4a5e-11e5
1 postId 1189e340-b08f
2 channel_title Ab Live
2 youtube_id 3TNbtTwLY0U
2 channel_id UCODeKM_D6JLf8jJt
2 examId 72975611-4a5e-11e5
2 postId 0c3e6590-afeb

Data data terpivot yang terhasil akan muncul seperti berikut:

id channel_id channel_title examId postId youtube_id
1 UCiDKcjKocimAO1tV Mahendra Guru 72975611-4a5e-11e5 1189e340-b08f ugEGMG4-MdA
2 UCODeKM_D6JLf8jJt Ab Live 72975611-4a5e-11e5 0c3e6590-afeb 3TNbtTwLY0U

Batasan dan Alternatif

Walaupun pendekatan ini meniru tingkah laku berputar secara berkesan, pendekatan ini disertakan dengan pengehadan. Paling ketara, BigQuery mengenakan had 10,000 lajur bagi setiap jadual, yang boleh menghalang pemusingan set data besar dengan banyak kunci unik. Dalam senario sedemikian, pertimbangkan untuk meneroka penyelesaian alternatif seperti pangsi luaran menggunakan Python atau R atau menggunakan pendekatan pertanyaan bersekutu dengan sistem pangkalan data yang menyokong pangsi secara asli.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Baris ke Lajur dalam BigQuery Tanpa Fungsi Pangsi Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan