Fungsi PIVOT dalam BigQuery: Mengendalikan Nilai Suku Dinamik
Fungsi PIVOT BigQuery yang diperkenalkan baru-baru ini menawarkan cara yang mudah untuk mengubah data menjadi format jadual, memutar baris pada lajur yang ditentukan. Walau bagaimanapun, dalam senario dunia sebenar, kita sering menghadapi situasi di mana nilai lajur pangsi (mis. suku) tidak diketahui terlebih dahulu.
Untuk menangani cabaran ini, mari pertimbangkan pertanyaan berikut:
SELECT * FROM (SELECT * FROM Produce) PIVOT(SUM(sales) FOR quarter in (select distinct quarter from Produce))
Walaupun pertanyaan ini cuba memutar jadual Hasilkan pada lajur suku secara dinamik, ia gagal menghasilkan hasil yang diingini. Ramuan yang hilang ialah keperluan untuk membina klausa PIVOT secara dinamik.
Penyelesaian terletak pada penggunaan fungsi segera laksana SQL untuk melaksanakan pertanyaan yang dijana secara dinamik. Berikut ialah pertanyaan yang dipertingkatkan:
execute immediate ( select '''select * from (select * from `project.dataset.Produce`) pivot(sum(sales) for quarter in ("''' || string_agg(quarter, '", "') || '''")) ''' from (select distinct quarter from `project.dataset.Produce` order by quarter) );
Pertanyaan ini melaksanakan langkah berikut:
Dengan memanfaatkan fleksibiliti SQL, kita boleh mengatasi pengehadan lajur pangsi statik dan mengendalikan nilai dinamik dengan lancar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Data Secara Dinamik dalam BigQuery Menggunakan Fungsi PIVOT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!