Topik ini menjelaskan kompatibilitas antara pekerjaan dan data status yang digunakan untuk memulai pekerjaan setelah Anda memodifikasi kueri deduplikasi untuk pekerjaan tersebut.
Modifikasi yang kompatibel
Sepenuhnya kompatibel: Modifikasi kunci non-partisi dalam bidang terpilih untuk kueri deduplikasi berdasarkan urutan menaik dari bidang proctime.
-- Pernyataan SQL asli: SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Sepenuhnya kompatibel: Tambahkan d ke bidang terpilih. SELECT a, b, c, d FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Sepenuhnya kompatibel: Hapus b dari bidang terpilih. SELECT a, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Sepenuhnya kompatibel: Ubah bidang terpilih dari c menjadi substring(c, 1, 5). SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) AS rk FROM (SELECT a, b, SUBSTRING(c,1,5) as c, proctime FROM MyTable)) WHERE rk = 1;Sepenuhnya kompatibel: Modifikasi urutan kunci partisi.
-- Pernyataan SQL asli: SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a, b, c ORDER BY proctime ASC) as rk FROM MyTable) WHERE rk = 1; -- Sepenuhnya kompatibel: Modifikasi urutan kunci partisi. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY c, a, b ORDER BY proctime ASC) as rk FROM MyTable) WHERE rk = 1;Sepenuhnya kompatibel: Modifikasi bidang tanpa mengubah skema dalam kueri deduplikasi berdasarkan bidang rowtime atau urutan menurun dari bidang proctime.
-- Pernyataan SQL asli: SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1 AND c > 10; -- Sepenuhnya kompatibel: Hapus bidang yang tidak mengubah skema. SELECT a, b FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1 AND c > 10;
Modifikasi yang tidak kompatibel
Tambah, hapus, atau modifikasi kunci partisi, atau modifikasi logika perhitungan bidang yang termasuk dalam kunci partisi.
-- Pernyataan SQL asli: SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Tambahkan d sebagai kunci partisi. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a,d ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Hapus a dari kunci partisi. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Ubah kunci partisi dari a menjadi a + 1. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY proctime ASC) AS rk FROM (SELECT a + 1 AS a, b, c, proctime FROM MyTable)) WHERE rk = 1;Modifikasi 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 proctime ASC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Ubah bidang yang digunakan untuk pengurutan dari proctime menjadi ts. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY ts ASC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Ubah urutan pengurutan dari menaik menjadi menurun. SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1;Tambah, hapus, atau modifikasi bidang yang mengubah skema dalam kueri deduplikasi berdasarkan bidang rowtime atau urutan menurun dari bidang proctime.
-- Pernyataan SQL asli: SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Tambahkan d ke bidang terpilih. SELECT a, b, c, d FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Hapus c dari bidang terpilih. SELECT a, b FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM MyTable) WHERE rk = 1; -- Tidak kompatibel: Ubah bidang terpilih dari c menjadi substring(c, 1, 5). SELECT a, b, c FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY a ORDER BY proctime DESC) AS rk FROM (select a, b, substring(c, 1, 5) as c, ts from MyTable)) WHERE rk = 1;