Tugas penjadwalan DataWorks memungkinkan Anda menetapkan waktu dan frekuensi transmisi data, sekaligus memastikan integritas data dan akurasi selama proses transmisi dan impor. Anda dapat mengimpor data dari tabel partisi MaxCompute ke tabel partisi di Hologres, sehingga menggabungkan keunggulan kedua platform untuk meningkatkan efisiensi dan keandalan pemrosesan data.
Prasyarat
Anda telah membeli dan mengaktifkan instans Hologres. Untuk informasi selengkapnya, lihat Beli instans Hologres.
Anda telah mengaktifkan MaxCompute dan membuat Proyek. Untuk informasi selengkapnya, lihat Aktifkan MaxCompute.
Anda telah mengaktifkan DataWorks dan membuat ruang kerja DataWorks. Untuk informasi selengkapnya, lihat Buat ruang kerja.
Catatan penting
Pastikan layanan Schema tidak diaktifkan di tingkat penyewa atau Proyek di MaxCompute. Untuk informasi selengkapnya tentang Schema, lihat Operasi Schema.
Persiapan data
Topik ini menggunakan tabel partisi dwd_product_movie_basic_info dalam set data public_data di MaxCompute sebagai contoh. Berikut adalah skema tabel untuk dwd_product_movie_basic_info.
-- DDL untuk tabel partisi MaxCompute
CREATE TABLE IF NOT EXISTS public_data.dwd_product_movie_basic_info(
movie_name STRING COMMENT 'Nama film',
director STRING COMMENT 'Sutradara',
scriptwriter STRING COMMENT 'Penulis naskah',
area STRING COMMENT 'Wilayah atau negara produksi',
actors STRING COMMENT 'Pemeran utama',
`type` STRING COMMENT 'Jenis',
movie_length STRING COMMENT 'Durasi film',
movie_date STRING COMMENT 'Tanggal rilis',
movie_language STRING COMMENT 'Bahasa',
imdb_url STRING COMMENT 'ID IMDb'
)
PARTITIONED BY (ds STRING) STORED AS ALIORC;Prosedur
Siapkan data MaxCompute.
Masuk ke Konsol DataWorks. Di Wilayah tujuan, pilih di panel navigasi sebelah kiri. Klik Go to Data Analytics. Lalu, di panel navigasi sebelah kiri, klik ikon
untuk membuka halaman SQL Query.Di halaman SQL Query, masukkan pernyataan SQL berikut untuk melihat data di partisi
20170112dari tabel partisi tersebut. Klik Run.SELECT * FROM public_data.dwd_product_movie_basic_info WHERE ds = '20170112';Hasil kueri ditampilkan pada gambar berikut.
Buat tabel eksternal di Hologres.
Buat tabel eksternal di Hologres untuk memetakan data dari tabel sumber MaxCompute. Urutan bidang dan tipe bidang pada tabel eksternal harus sesuai dengan tabel MaxCompute.
Masuk ke atau editor SQL Konsol HoloWeb.
Klik ikon
di bawah tab SQL Editor untuk membuka jendela Ad-hoc Query. Di bilah alat jendela kueri, pilih Instance Name dan Database untuk instans Hologres Anda.Di editor jendela Ad-hoc Query, masukkan pernyataan berikut lalu klik Run.
Pernyataan berikut menggunakan perintah
IMPORT FOREIGN SCHEMAuntuk membuat tabel eksternal Hologres bernama dwd_product_movie_basic_info.IMPORT FOREIGN SCHEMA public_data LIMIT TO (dwd_product_movie_basic_info) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'update');
Buat tabel terkelola (tabel internal) di Hologres.
Buat tabel internal di Hologres untuk menerima dan menyimpan data.
Di halaman pengembangan HoloWeb, klik Ad-hoc Query.
Di halaman Ad-hoc Query yang baru, pilih Instance Name dan Database. Lalu, masukkan pernyataan berikut di editor kueri SQL dan klik Run.
Contoh ini mengimpor tabel partisi MaxCompute ke Hologres. Oleh karena itu, tabel internal yang Anda buat di Hologres harus berupa tabel partisi.
CatatanPernyataan CREATE TABLE berikut hanya merupakan contoh sederhana. Buatlah pernyataan Data Definition Language (DDL) yang sesuai dengan kebutuhan Anda. Anda juga harus mengonfigurasi indeks yang sesuai untuk tabel guna mengoptimalkan performa kueri.
BEGIN; CREATE TABLE "public"."holo_dwd_product_movie_basic_info" ( "movie_name" TEXT, "director" TEXT, "scriptwriter" TEXT, "area" TEXT, "actors" TEXT, "type" TEXT, "movie_length" TEXT, "movie_date" TEXT, "movie_language" TEXT, "imdb_url" TEXT, "ds" TEXT ) PARTITION BY LIST (ds); CALL SET_TABLE_PROPERTY('"public"."holo_dwd_product_movie_basic_info"', 'orientation', 'column'); COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_name" IS 'Nama film'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."director" IS 'Sutradara'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."scriptwriter" IS 'Penulis naskah'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."area" IS 'Wilayah atau negara produksi'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."actors" IS 'Pemeran utama'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."type" IS 'Jenis'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_length" IS 'Durasi film'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_date" IS 'Tanggal rilis'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_language" IS 'Bahasa'; COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."imdb_url" IS 'ID IMDb'; COMMIT;
Kembangkan data untuk tabel anak partisi.
Langkah ini merupakan modul SQL Hologres yang menjadwalkan tabel partisi.
Masuk ke Konsol DataWorks. Buka halaman DataStudio dan buat node SQL Hologres. Untuk informasi selengkapnya, lihat Node SQL Hologres.
Di halaman pengeditan node, masukkan pernyataan berikut.
Hologres tidak mendukung penulisan data partisi langsung ke tabel induk partisi. Anda harus membuat tabel anak partisi di Hologres yang sesuai dengan nilai kunci partisi di tabel partisi MaxCompute. Kemudian, impor data partisi ke tabel anak partisi yang sesuai. Nilai kunci partisi dikendalikan oleh parameter ${bizdate}. Sistem penjadwalan akan secara otomatis menetapkan parameter ini untuk mengaktifkan penjadwalan berkala. Untuk informasi selengkapnya tentang parameter penjadwalan, lihat Format yang didukung untuk parameter penjadwalan.
CatatanData partisi yang diimpor harus sesuai dengan nilai kunci partisi. Dalam contoh ini, kunci partisi adalah ds. Jika tidak, terjadi error.
Bagian berikut menjelaskan dua skenario untuk mengimpor data partisi. Pilih skenario yang sesuai dengan logika bisnis Anda.
Skenario 1: Impor data partisi baru.
-- Buat tabel anak partisi temporary BEGIN; CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} ( "movie_name" TEXT, "director" TEXT, "scriptwriter" TEXT, "area" TEXT, "actors" TEXT, "type" TEXT, "movie_length" TEXT, "movie_date" TEXT, "movie_language" TEXT, "imdb_url" TEXT, "ds" TEXT ); COMMIT; -- Perbarui data tabel eksternal IMPORT FOREIGN SCHEMA public_data LIMIT TO (dwd_product_movie_basic_info) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'update'); -- Tunggu 30 detik sebelum mengimpor data ke Hologres untuk mencegah inkonsistensi data akibat pembaruan cache metadata Hologres yang lambat SELECT pg_sleep(30); -- Impor data MaxCompute ke tabel anak partisi temporary INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} SELECT "movie_name", "director", "scriptwriter", "area", "actors", "type", "movie_length", "movie_date", "movie_language", "imdb_url", "ds" FROM "public".dwd_product_movie_basic_info WHERE ds='${bizdate}'; -- Impor data partisi baru BEGIN; ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate}; -- Lampirkan tabel anak partisi temporary ke tabel induk partisi ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES IN ('${bizdate}'); COMMIT;Skenario 2: Segarkan ulang data partisi historis.
-- Buat tabel anak partisi temporary BEGIN; CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} ( "movie_name" TEXT, "director" TEXT, "scriptwriter" TEXT, "area" TEXT, "actors" TEXT, "type" TEXT, "movie_length" TEXT, "movie_date" TEXT, "movie_language" TEXT, "imdb_url" TEXT, "ds" TEXT ); COMMIT; -- Perbarui data tabel eksternal IMPORT FOREIGN SCHEMA public_data LIMIT TO (dwd_product_movie_basic_info) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'update'); -- Tunggu 30 detik sebelum mengimpor data ke Hologres untuk mencegah inkonsistensi data akibat pembaruan cache metadata Hologres yang lambat SELECT pg_sleep(30); -- Impor data MaxCompute ke tabel anak partisi temporary INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} SELECT "movie_name", "director", "scriptwriter", "area", "actors", "type", "movie_length", "movie_date", "movie_language", "imdb_url", "ds" FROM "public".dwd_product_movie_basic_info WHERE ds='${bizdate}'; -- Segarkan ulang data partisi historis BEGIN; ALTER TABLE IF EXISTS holo_dwd_product_movie_basic_info DETACH PARTITION holo_dwd_product_movie_basic_info_${bizdate}; DROP TABLE IF EXISTS holo_dwd_product_movie_basic_info_${bizdate}; ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate}; -- Lampirkan tabel anak partisi ke tabel induk partisi ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES IN ('${bizdate}'); COMMIT;
Konfigurasikan penjadwalan.
Di halaman pengeditan node Hologres SQL, klik Scheduling Configuration di panel kanan untuk mengonfigurasi properti penjadwalan node tersebut.
CatatanUbah hanya parameter berikut. Biarkan semua parameter lain pada nilai default-nya.
Properti dasar
Parameter
Nilai
Parameter
bizdate=${yyyymmdd}
Properti waktu

Parameter
Nilai
Metode pembuatan instans
Generate immediately after publishing
Jalankan ulang properti
Cannot re-run after successful execution. Can re-run after failed execution
Waktu terjadwal
00:05
Dependensi penjadwalan
Tetapkan node root sebagai dependensi penjadwalan. Anda juga dapat memilih node induk yang sudah ada berdasarkan logika bisnis Anda. Pertama, atur Code Parsing ke Yes. Lalu, klik Code Parsing untuk mengurai node root secara otomatis. Terakhir, atur Code Parsing ke No.
Publikasikan tugas penjadwalan.
Di halaman pengeditan Hologres SQL, klik ikon
di bilah alat untuk menyimpan node.Klik ikon
di bilah alat untuk mengirimkan node.Di kotak dialog Submit New Version, masukkan deskripsi perubahan di bidang Change Description.
Klik OK.
Publikasikan di Operation Center.
Di halaman pengeditan Hologres SQL, klik O&M di ujung kanan bilah alat.
Buka halaman Operation Center. Di panel navigasi sebelah kiri, pilih Scheduled Task O&M > Scheduled Tasks.
Di halaman Scheduled Tasks, klik kanan node tersebut lalu pilih Backfill Data > Current Node.

Di panel navigasi sebelah kiri, pilih O&M Assistant > Backfill Data untuk melihat tugas yang sedang berjalan dan statusnya.
Lihat data.
Setelah tugas berhasil dijalankan, Hologres secara otomatis membuat tabel anak partisi untuk data partisi yang sesuai.
Buka halaman DataStudio dan buat node SQL Hologres. Untuk informasi selengkapnya, lihat Node SQL Hologres.
Di halaman pengeditan node, masukkan pernyataan berikut untuk mengkueri data.
Kueri data di tabel anak partisi.
SELECT * FROM holo_dwd_product_movie_basic_info_20170112;Kueri jumlah total baris di tabel induk partisi.
SELECT COUNT (*) FROM holo_dwd_product_movie_basic_info;