Rumah >pangkalan data >tutorial mysql >Bagaimanakah Operator UNPIVOT BigQuery Boleh Menstruktur Semula Data Jadual?

Bagaimanakah Operator UNPIVOT BigQuery Boleh Menstruktur Semula Data Jadual?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 01:48:09461semak imbas

How Can BigQuery's UNPIVOT Operator Restructure Tabular Data?

Memindahkan Data dalam BigQuery Menggunakan Operator UNPIVOT

Menyusun semula data daripada struktur jadual kepada format yang lebih fleksibel dan boleh digunakan selalunya diperlukan. Dalam BigQuery, pengendali UNPIVOT menyediakan penyelesaian yang berkuasa untuk transformasi ini.

Pertimbangkan contoh berikut:

Struktur Jadual Asal:

product Q1 Q2 Q3 Q4
Kale 51 23 45 3
Apple 77 0 25 2

Meja yang Diingini Struktur:

product sales quarter
Kale 51 Q1
Kale 23 Q2
Kale 45 Q3
Kale 3 Q4
Apple 77 Q1
Apple 0 Q2
Apple 25 Q3
Apple 2 Q4

Pertanyaan SQL Menggunakan UNPIVOT:

SELECT product, value AS sales, OFFSET AS quarter
FROM UNNEST(FLATTEN(
  ARRAY(
    STRUCT('Q1' AS OFFSET, Q1 AS value),
    STRUCT('Q2' AS OFFSET, Q2 AS value),
    STRUCT('Q3' AS OFFSET, Q3 AS value),
    STRUCT('Q4' AS OFFSET, Q4 AS value)
  )
)) AS UNNESTED
ORDER BY product, quarter;

Pertanyaan ini menggunakan fungsi ARRAY dan STRUCT untuk mencipta tatasusunan sementara struct untuk setiap baris dalam jadual asal. Fungsi FLATTEN kemudiannya digunakan untuk mengekstrak medan struct (jualan dan suku) daripada setiap struct dalam tatasusunan. Akhir sekali, operator UNNEST digunakan untuk mengekstrak nilai individu daripada ARRAY.

Jadual yang terhasil akan berada dalam format yang diingini, dengan lajur untuk produk, jualan dan suku tahun.

Atas ialah kandungan terperinci Bagaimanakah Operator UNPIVOT BigQuery Boleh Menstruktur Semula Data Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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