Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi jendela FIRST_VALUE
Diberikan set baris yang teratur, FIRST_VALUE mengembalikan nilai ekspresi yang ditentukan sehubungan dengan baris pertama dalam bingkai jendela.
Untuk informasi tentang memilih baris terakhir dalam bingkai, lihatFungsi jendela LAST_VALUE.
Sintaksis
FIRST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Argumen
- ekspresi
-
Kolom target atau ekspresi tempat fungsi beroperasi.
- ABAIKAN NULLS
-
Ketika opsi ini digunakan dengan FIRST_VALUE, fungsi mengembalikan nilai pertama dalam bingkai yang bukan NULL (atau NULL jika semua nilai adalah NULL).
- RESPECT NULLS
-
Menunjukkan bahwa Amazon Redshift harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS.
- DI ATAS
-
Memperkenalkan klausa jendela untuk fungsi.
- PARTISI OLEH expr_list
-
Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi.
- PESANAN BERDASARKAN order_list
-
Mengurutkan baris dalam setiap partisi. Jika tidak ada klausa PARTITION BY yang ditentukan, ORDER BY mengurutkan seluruh tabel. Jika Anda menentukan klausa ORDER BY, Anda juga harus menentukan klausa frame_.
Hasil fungsi FIRST_VALUE tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:
-
Ketika tidak ada klausa ORDER BY yang ditentukan dan partisi berisi dua nilai berbeda untuk ekspresi
-
Ketika ekspresi mengevaluasi nilai berbeda yang sesuai dengan nilai yang sama dalam daftar ORDER BY.
-
- frame_klausa
-
Jika klausa ORDER BY digunakan untuk fungsi agregat, klausa frame eksplisit diperlukan. Klausa frame memurnikan kumpulan baris di jendela fungsi, termasuk atau mengecualikan kumpulan baris dalam hasil yang diurutkan. Klausa bingkai terdiri dari kata kunci ROWS dan penentu terkait. Lihat Ringkasan sintaks fungsi jendela.
Jenis pengembalian
Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe data Amazon Redshift primitif. Jenis pengembalian sama dengan tipe data ekspresi.
Contoh
Contoh berikut menggunakan tabel VENUE dari sampel data TICKIT. Untuk informasi selengkapnya, lihat Database sampel.
Contoh berikut mengembalikan kapasitas tempat duduk untuk setiap tempat di tabel VENUE, dengan hasil diurutkan berdasarkan kapasitas (tinggi ke rendah). Fungsi FIRST_VALUE digunakan untuk memilih nama tempat yang sesuai dengan baris pertama dalam bingkai: dalam hal ini, baris dengan jumlah kursi tertinggi. Hasilnya dipartisi berdasarkan negara, jadi ketika nilai VENUESTATE berubah, nilai pertama yang baru dipilih. Bingkai jendela tidak terbatas sehingga nilai pertama yang sama dipilih untuk setiap baris di setiap partisi.
Untuk California, Qualcomm Stadium memiliki jumlah kursi tertinggi (70561), jadi nama ini adalah nilai pertama untuk semua baris di CA partisi.
select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate;venuestate | venueseats | venuename | first_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium CA | 63026 | McAfee Coliseum | Qualcomm Stadium CA | 56000 | Dodger Stadium | Qualcomm Stadium CA | 45050 | Angel Stadium of Anaheim | Qualcomm Stadium CA | 42445 | PETCO Park | Qualcomm Stadium CA | 41503 | AT&T Park | Qualcomm Stadium CA | 22000 | Shoreline Amphitheatre | Qualcomm Stadium CO | 76125 | INVESCO Field | INVESCO Field CO | 50445 | Coors Field | INVESCO Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Dolphin Stadium FL | 73800 | Jacksonville Municipal Stadium | Dolphin Stadium FL | 65647 | Raymond James Stadium | Dolphin Stadium FL | 36048 | Tropicana Field | Dolphin Stadium ...
Contoh berikut menunjukkan penggunaan opsi IGNORE NULLS dan bergantung pada penambahan baris baru ke tabel VENUE:
insert into venue values(2000,null,'Stanford','CA',90000);
Baris baru ini berisi nilai NULL untuk kolom VENUENAME. Sekarang ulangi kueri FIRST_VALUE yang ditampilkan sebelumnya di bagian ini:
select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate;venuestate | venueseats | venuename | first_value -----------+------------+----------------------------+------------- CA | 90000 | NULL | NULL CA | 70561 | Qualcomm Stadium | NULL CA | 69843 | Monster Park | NULL ...
Karena baris baru berisi nilai VENUESEATS tertinggi (90000) dan VENUENAME-nya adalah NULL, fungsi FIRST_VALUE mengembalikan NULL untuk partisi. CA Untuk mengabaikan baris seperti ini dalam evaluasi fungsi, tambahkan opsi IGNORE NULLS ke argumen fungsi:
select venuestate, venueseats, venuename, first_value(venuename) ignore nulls over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venuestate='CA') order by venuestate;venuestate | venueseats | venuename | first_value ------------+------------+----------------------------+------------------ CA | 90000 | NULL | Qualcomm Stadium CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium ...