Topik ini menjelaskan kompatibilitas antara pekerjaan dan data status yang digunakan untuk memulai pekerjaan setelah Anda memodifikasi kueri Top-N untuk pekerjaan tersebut.
Modifikasi yang kompatibel
Sepenuhnya kompatibel: Modifikasi urutan kunci partisi.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a, b order by c) as rk from MyTable) where rk < 3; -- Sepenuhnya kompatibel: Modifikasi urutan kunci partisi. select a, b, c from ( select *, row_number() over (partition by b, a order by c) as rk from MyTable) where rk < 3;Sepenuhnya kompatibel: Menambah atau menghapus bidang yang menentukan posisi peringkat dari hasil kueri.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Sepenuhnya kompatibel: Sertakan bidang rk dalam hasil kueri. select a, b, c, rk from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3;
Modifikasi yang tidak kompatibel
Gunakan algoritma UpdateFastRank untuk peringkat dan ubah kunci upsert upstream.
Menambah, menghapus, atau memodifikasi kunci partisi atau logika komputasi bidang yang termasuk dalam kunci partisi.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Tambah d sebagai kunci partisi. select a, b, c from ( select *, row_number() over (partition by a, d order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Hapus a dari kunci partisi. select a, b, c from ( select *, row_number() over (order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Ubah kunci partisi dari a menjadi a + 1. select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from (select a + 1 as a, b, c from MyTable)) where rk < 3;Memodifikasi bidang atau urutan yang ditentukan dalam klausa ORDER BY.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Ubah bidang yang digunakan untuk pengurutan dari c menjadi b. select a, b, c from ( select *, row_number() over (partition by a order by b) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Ubah bidang yang digunakan untuk pengurutan dari c menjadi substring(c, 1, 5). select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from (select a, b, substring(c, 1, 5) as c from MyTable)) where rk < 3; -- Tidak kompatibel: Ubah urutan pengurutan dari naik menjadi turun. select a, b, c from ( select *, row_number() over (partition by a order by c desc) as rk from MyTable) where rk < 3;Memodifikasi nilai N. Dalam kueri Top-N, N menentukan jumlah hasil peringkat teratas yang akan dikembalikan.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Ubah nilai N dari 3 menjadi 5. select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 5;Menambah, menghapus, atau memodifikasi bidang terpilih untuk kueri Top-N.
-- Pernyataan SQL asli: select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Tambah d ke bidang terpilih. select a, b, c, d from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Hapus b dari bidang terpilih. select a, c from ( select *, row_number() over (partition by a order by c) as rk from MyTable) where rk < 3; -- Tidak kompatibel: Ubah bidang terpilih dari b menjadi b + 1. select a, b, c from ( select *, row_number() over (partition by a order by c) as rk from (select a, b + 1 as b, c from MyTable)) where rk < 3;