Kueri Window Top-N mendukung lebih sedikit modifikasi yang kompatibel karena harus mengikuti aturan modifikasi dari fungsi nilai tabel berbasis jendela (TVF) dan kueri Top-N. Topik ini menjelaskan kompatibilitas antara pekerjaan dan data status yang digunakan untuk memulai pekerjaan setelah Anda memodifikasi kueri Window Top-N untuk pekerjaan tersebut.
Modifikasi yang kompatibel
Sepenuhnya kompatibel: Menambah atau menghapus atribut jendela.
-- Pernyataan SQL asli: select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3; -- Sepenuhnya kompatibel: Menambahkan bidang window_end dalam hasil kueri. select a, b, c, window_start, window_end from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3;Sepenuhnya kompatibel: Memasukkan atau mengecualikan bidang yang menentukan posisi peringkat dalam hasil kueri.
-- Pernyataan SQL asli: select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3; -- Sepenuhnya kompatibel: Memasukkan bidang rk dalam hasil kueri. select a, b, c, window_start, rk from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3;Sepenuhnya kompatibel: Mengubah urutan kunci partisi.
-- Pernyataan SQL asli: select a, b, c, window_start from ( select *, row_number() over (partition by a, b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, b, window_start, window_end) ) where rk < 3; -- Sepenuhnya kompatibel: Mengubah urutan kunci partisi. select a, b, c, window_start from ( select *, row_number() over (partition by b, a, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, b, window_start, window_end) ) where rk < 3;
Modifikasi yang tidak kompatibel
Mengubah atribut terkait jendela, seperti tipe jendela, ukuran jendela, atau atribut waktu.
Untuk informasi tentang contoh modifikasi, lihat Modifikasi yang menyebabkan ketidaksesuaian penuh.
Menambah, menghapus, atau memodifikasi bidang dalam klausa group by atau memodifikasi logika komputasi dari bidang-bidang tersebut.
Untuk informasi tentang contoh modifikasi, lihat Modifikasi yang menyebabkan ketidaksesuaian penuh.
Menambah, menghapus, atau memodifikasi bidang agregat atau mengubah input kueri TOP-N.
-- Pernyataan SQL asli: select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3; -- Tidak kompatibel: Menambahkan min(d) sebagai d, yang merupakan bidang agregat. -- Modifikasi ini mengakibatkan perubahan pada input kueri TOP-N. select a, b, c, d, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, min(d) as d, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, window_start, window_end) ) where rk < 3;Menambah, menghapus, atau memodifikasi kunci partisi atau memodifikasi logika komputasi dari bidang yang termasuk dalam kunci partisi.
Untuk informasi tentang contoh modifikasi, lihat Modifikasi yang tidak kompatibel.
Memodifikasi bidang atau urutan yang ditentukan untuk klausa order by.
Untuk informasi tentang contoh modifikasi, lihat Modifikasi yang tidak kompatibel.
Memodifikasi nilai N. Dalam kueri Top-N, N menentukan jumlah hasil peringkat teratas yang akan dikembalikan.
Untuk informasi tentang contoh modifikasi, lihat Modifikasi yang tidak kompatibel.
Hanya memodifikasi urutan bidang terkait TVF jendela dalam klausa group by atau hanya memodifikasi urutan bidang lain dalam klausa group by.
-- Pernyataan SQL asli: select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, b, window_start, window_end) ) where rk < 3; -- Tidak kompatibel: Hanya memodifikasi urutan bidang terkait TVF jendela dalam klausa group by. -- Modifikasi ini mengakibatkan perubahan pada hasil peringkat berbasis jendela. select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by a, b, window_end, window_start) ) where rk < 3; -- Tidak kompatibel: Hanya memodifikasi urutan bidang lain dalam klausa group by. select a, b, c, window_start from ( select *, row_number() over (partition by b, window_start, window_end order by c) as rk from ( select a, sum(b) as b, max(c) as c, window_start, window_end from table (tumble(table MyTable, descriptor(ts), interval '1' minute)) group by b, a, window_start, window_end) ) where rk < 3;