Pengisian ulang data historis umumnya memerlukan loop yang menjalankan kueri SQL yang sama untuk setiap hari, sehingga menambahkan logika orkestrasi ke setiap pipeline. Time Window SQL menghilangkan kebutuhan akan loop tersebut: komponen ini menjalankan kueri SQL yang sama terhadap setiap hari dalam rentang tanggal tertentu secara paralel, dengan secara otomatis membuat satu subtugas per tanggal. Kasus penggunaan umumnya adalah mengekstraksi data fitur harian dari tujuh hari terakhir untuk melakukan pengisian ulang pada mesin rekomendasi.
Cara kerja
Saat Anda menjalankan pipeline dengan Time Window SQL, komponen ini membuat satu subtugas per tanggal dalam jendela waktu eksekusi. Setiap subtugas menerima skrip SQL yang sama, tetapi variabel sistem ${pai.system.cycledate} diselesaikan menjadi data date yang berbeda untuk setiap subtugas—yaitu tanggal data yang diproses oleh subtugas tersebut, bukan waktu saat subtugas dijalankan.
Sebagai contoh, dengan Business base date 20230210 dan Execution time window (-4,-2],0, tiga subtugas dijalankan secara paralel:
| Subtask | ${pai.system.cycledate} (dengan format yyyyMMdd) | Data yang diproses |
|---|---|---|
| 1 | 20230207 | 7 Feb 2023 |
| 2 | 20230208 | 8 Feb 2023 |
| 3 | 20230210 | 10 Feb 2023 |
Tanggal 9 Februari (offset -1) tidak termasuk karena jendela (-4,-2] mencakup offset -4 hingga -2 (inklusif di sisi kanan), dan 0 menambahkan tanggal dasar itu sendiri.
Batasan
Eksekusi multi-date loop hanya mendukung pengisian ulang data tingkat hari. Interval yang lebih detail (per jam, per minggu) tidak didukung.
Sebelum menggunakan Periodic Scheduling untuk menjadwalkan pipeline Anda di lingkungan produksi, nonaktifkan eksekusi multi-date loop. Jika dibiarkan aktif, komponen akan menghasilkan subtugas pengisian ulang tambahan pada setiap eksekusi terjadwal.
Pengaturan Maximum number of concurrent pada tab Parameters Setting hanya berlaku untuk node tempat pengaturan tersebut dikonfigurasi. Jika pipeline Anda memiliki beberapa node Time Window SQL, pertimbangkan total konkurensi yang didukung oleh sumber daya Proyek Anda.
Catatan penggunaan
Time Window SQL menerima hingga empat input dan menghasilkan satu output. Perhatikan hal-hal berikut.
Variabel input dan output
Saat Anda menghubungkan komponen hulu ke Time Window SQL, port input yang Anda pilih menentukan nama variabel yang dipetakan ke tabel input tersebut. Rujuk tabel input dalam skrip SQL Anda menggunakan ${t1}, ${t2}, ${t3}, dan ${t4}. Rujuk tabel output menggunakan ${o1}.
Variabel lifecycle
Gunakan ${lifecycle} dalam skrip SQL Anda untuk mendapatkan pengaturan siklus hidup tabel temporary di ruang kerja. Nilai default-nya adalah 28 hari. Untuk mengubah nilai ini, lihat Manage workspaces.
Konfigurasi komponen di Machine Learning Designer
Buka pipeline Anda di Machine Learning Designer dan konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Business base date | Tanggal acuan untuk jendela waktu. Masukkan tanggal secara langsung (misalnya, 20230210) atau rujuk variabel global. Lihat Global variable. |
| Whether to open multi-date loop execution | Diaktifkan secara default. Saat dinonaktifkan, komponen berperilaku sama seperti komponen SQL script dan menjalankan satu eksekusi SQL. |
| Execution time window | Menentukan tanggal-tanggal yang akan diproses, dinyatakan sebagai offset relatif terhadap Business base date. Menerima bilangan bulat dan interval setengah terbuka, dipisahkan koma. Sistem menghasilkan satu subtugas per tanggal. Maksimal 100 subtugas dapat dijalankan per eksekusi pipeline. Lihat Sintaks jendela waktu di bawah. |
| Maximum number of concurrent | Jumlah maksimum subtugas yang dijalankan secara bersamaan. Pertahankan nilai ini rendah untuk menghindari konflik sumber daya. |
| Date format | Mengontrol format ${pai.system.cycledate}. Opsi: yyyyMMdd (default), yyyy-MM-dd, yyyy/MM/dd. |
| Whether the system adds a create table statement | Saat diaktifkan, pernyataan terakhir dalam skrip SQL Anda harus berupa pernyataan SELECT. Sistem secara otomatis membuat tabel temporary untuk menyimpan hasilnya. Saat dinonaktifkan, buat tabel output ${o1} secara eksplisit dalam SQL Anda. |
| SQL Script | Kueri SQL yang dijalankan untuk setiap tanggal. Gunakan ${pai.system.cycledate} di tempat Anda membutuhkan tanggal data. Variabel lain (${t1}–${t4}, ${o1}, ${lifecycle}) juga tersedia. |
Sintaks jendela waktu
Nilai Execution time window adalah daftar offset dan interval setengah terbuka yang dipisahkan koma, relatif terhadap tanggal dasar bisnis. Bilangan bulat positif merupakan offset masa depan; bilangan bulat negatif merupakan offset masa lalu.
| Sintaks | Makna | Tanggal yang dihasilkan (tanggal dasar: 20230210) |
|---|---|---|
(-4,-2],0 | Tiga hingga dua hari lalu, ditambah tanggal dasar | 20230207, 20230208, 20230210 |
Referensi kurung:
[/]— batas inklusif(/)— batas eksklusif
Contoh skrip SQL
Dengan Business base date 20230210, Execution time window (-4,-2],0, dan Date format yyyy-MM-dd, skrip SQL berikut dijalankan tiga kali:
SELECT * FROM ${t1} WHERE dt = ${pai.system.cycledate}Ketiga subtugas mengeksekusi:
-- Subtask 1
SELECT * FROM ${t1} WHERE dt = 2023-02-07
-- Subtask 2
SELECT * FROM ${t1} WHERE dt = 2023-02-08
-- Subtask 3
SELECT * FROM ${t1} WHERE dt = 2023-02-10Tip: Untuk memvalidasi konfigurasi jendela waktu Anda sebelum menjalankan penuh, atur Execution time window ke 0 (hanya tanggal dasar). Ini menjalankan satu subtugas sehingga Anda dapat memverifikasi logika SQL dan substitusi variabel tanpa memproses seluruh rentang tanggal.Langkah selanjutnya
SQL script — jalankan satu eksekusi SQL tanpa looping tanggal
Global variable — rujuk nilai bersama di seluruh node pipeline
Manage workspaces — konfigurasi pengaturan siklus hidup tabel temporary