All Products
Search
Document Center

Hologres:Impor data dari tabel partisi MaxCompute

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara mengimpor data dari tabel partisi MaxCompute ke tabel partisi Hologres.

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. Untuk informasi selengkapnya, lihat Buat ruang kerja.

Latar Belakang

Menggunakan tabel eksternal di Hologres untuk mengakses data MaxCompute merupakan pola ingesti data yang umum. Untuk impor berulang, Anda dapat memanfaatkan kemampuan penjadwalan dan orkestrasi Pekerjaan yang andal dari DataWorks untuk mengonfigurasi satu Pekerjaan periodik yang mengotomatiskan alur kerja impor. Untuk informasi selengkapnya, lihat Contoh Pekerjaan DataWorks.

Karena Pekerjaan tersebut kompleks, Anda dapat menggunakan asisten migrasi DataWorks untuk mengimpor file contoh Pekerjaan ke dalam Proyek Anda. Hal ini menyediakan alur kerja siap pakai yang dapat Anda sesuaikan dengan mengubah parameter atau skrip agar sesuai dengan kebutuhan bisnis spesifik Anda. Untuk informasi selengkapnya, lihat Impor Pekerjaan DataWorks menggunakan asisten migrasi.

Catatan Penggunaan

  • Tabel temporary digunakan untuk menjamin atomicity. Data hanya disambungkan ke tabel partisi setelah impor selesai, sehingga menghindari kebutuhan operasi pembersihan manual seperti penghapusan tabel jika tugas impor gagal.

  • Saat memperbarui data di partisi anak, Anda harus menghapus tabel anak lama dan menyambungkan tabel temporary baru dalam satu transaksi untuk menjamin konsistensi transaksional.

  • Kondisi berikut harus dipenuhi untuk mengimpor Pekerjaan DataWorks menggunakan asisten migrasi:

    • Edisi DataWorks Anda harus Edisi Standar atau yang lebih baru. Untuk informasi selengkapnya, lihat Edisi DataWorks.

    • Ruang kerja DataWorks harus di-bind ke sumber data MaxCompute dan Hologres. Untuk informasi selengkapnya, lihat Konfigurasi ruang kerja.

Prosedur

  1. Siapkan data MaxCompute

    1. Login ke Konsol DataWorks, beralih ke Wilayah tujuan, lalu pada panel navigasi kiri, pilih Data Analysis and Service > Data Analysis. Klik Go to Data Analysis. Di panel navigasi kiri, klik ikon image untuk membuka halaman SQL Query.

    2. Di halaman SQL Query, masukkan pernyataan SQL berikut untuk membuat tabel partisi, lalu klik Run.

      DROP TABLE IF EXISTS odps_sale_detail;
      -- Create a partitioned table named sale_detail.
      CREATE TABLE IF NOT EXISTS odps_sale_detail 
      (
          shop_name STRING
          ,customer_id STRING
          ,total_price DOUBLE
      )
      PARTITIONED BY 
      (
          sale_date STRING
      )
      ;
    3. Di halaman SQL Query, masukkan pernyataan SQL berikut untuk mengimpor data ke tabel partisi, lalu klik Run.

      -- Add the 20210815 partition to the source table.
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210815')
      ;
      -- Write data to the partition.
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210815') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      -- Add the 20210816 partition to the source table.
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210816')
      ;
      -- Write data to the partition.
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210816') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      -- Add the 20210817 partition to the source table.
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210817')
      ;
      -- Write data to the partition.
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210817') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      -- Add the 20210818 partition to the source table.
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210818')
      ;
      -- Write data to the partition.
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210818') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
  2. Buat tabel di Hologres

    • Buat tabel eksternal

      1. Login ke database.

        1. Di halaman pengembangan HoloWeb, klik Metadata Management.

        2. Di halaman Metadata Management, klik ganda nama database yang telah Anda buat di pohon direktori sebelah kiri, lalu klik OK.Log in to the database

      2. Buat tabel eksternal

        1. Di halaman SQL Editor, klik ikon image di pojok kiri atas untuk membuat kueri SQL baru.

        2. Di halaman Ad-hoc Query yang baru, pilih Instance Name dan Database Anda. Di editor SQL, masukkan pernyataan berikut lalu klik Run.

          DROP FOREIGN TABLE IF EXISTS odps_sale_detail;
          -- Create a foreign table.
          IMPORT FOREIGN SCHEMA maxcompute_project LIMIT to
          (
              odps_sale_detail
          ) 
          FROM SERVER odps_server INTO public 
          OPTIONS(if_table_exist 'error',if_unsupported_type 'error');
    • Buat tabel partisi (tabel internal)

      1. Login ke database.

        1. Di halaman pengembangan HoloWeb, klik Metadata Management.

        2. Di halaman Metadata Management, klik ganda nama database yang telah Anda buat di pohon direktori sebelah kiri, lalu klik OK.Log in to the database

      2. Buat tabel partisi

        1. Di halaman SQL Editor, klik ikon image di pojok kiri atas untuk membuat kueri SQL baru.

        2. Di halaman Ad-hoc Query yang baru, pilih Instance Name dan Database Anda. Di editor SQL, masukkan pernyataan berikut lalu klik Run.

          DROP TABLE IF EXISTS holo_sale_detail;
          -- Create a Hologres partitioned table (internal table).
          BEGIN ;
          CREATE TABLE IF NOT EXISTS holo_sale_detail
          (
              shop_name TEXT
              ,customer_id TEXT 
              ,total_price FLOAT8
              ,sale_date TEXT
          )
          PARTITION BY LIST(sale_date);
          COMMIT;
  3. Impor data partisi ke tabel temporary Hologres

    Di halaman Ad-hoc Query, masukkan pernyataan berikut di editor SQL lalu klik Run.

    Pernyataan SQL ini mengimpor partisi 20210816 dari tabel partisi odps_sale_detail di Proyek MaxCompute hologres_test ke partisi 20210816 dari tabel partisi holo_sale_detail di Hologres.

    Catatan

    Hologres V2.1.17 dan versi lebih baru mendukung Serverless Computing. Untuk skenario seperti impor data offline skala besar, Pekerjaan ETL besar, dan kueri volume tinggi pada tabel eksternal, Anda dapat menggunakan Serverless Computing untuk menjalankan tugas-tugas tersebut. Fitur ini menggunakan sumber daya serverless tambahan alih-alih sumber daya instans Anda, sehingga meningkatkan stabilitas instans dan mengurangi kemungkinan error kehabisan memori (OOM). Anda tidak perlu menyediakan sumber daya komputasi tambahan untuk instans Anda, dan hanya dikenai biaya untuk tugas yang dijalankan. Untuk informasi selengkapnya tentang Serverless Computing, lihat Serverless Computing. Untuk petunjuk penggunaan Serverless Computing, lihat Use Serverless Computing.

    -- Clean up any potential temporary tables.
    BEGIN ;
    DROP TABLE IF EXISTS holo_sale_detail_tmp_20210816;
    COMMIT ;
    -- Create a temporary table.
    SET hg_experimental_enable_create_table_like_properties=on;
    BEGIN ;
    CALL HG_CREATE_TABLE_LIKE ('holo_sale_detail_tmp_20210816', 'select * from holo_sale_detail'); 
    COMMIT;
    -- (Optional) We recommend that you use Serverless Computing to run large-scale offline data imports and ETL jobs.
    SET hg_computing_resource = 'serverless';
    -- Insert data into the temporary table.
    INSERT INTO holo_sale_detail_tmp_20210816
    SELECT *
    FROM public.odps_sale_detail
    WHERE sale_date='20210816';
    -- Reset the configuration to ensure that non-essential SQL queries do not use serverless resources.
    RESET hg_computing_resource;
  4. Sambungkan tabel temporary ke tabel partisi Hologres

    Di halaman Ad-hoc Query, masukkan pernyataan berikut di editor SQL lalu klik Run.

    • Jika tabel anak lama ada, Anda harus menghapusnya terlebih dahulu, lalu menyambungkan tabel temporary ke tabel partisi Hologres.

      Pernyataan SQL ini menghapus tabel anak holo_sale_detail_20210816 dan meng-bind tabel temporary holo_sale_detail_tmp_20210816 ke partisi 20210816 dari tabel partisi holo_sale_detail.

      -- Replace the child table if it exists.
      BEGIN ;
      -- Delete the old child table.
      DROP TABLE IF EXISTS holo_sale_detail_20210816;
      -- Rename the temporary table.
      ALTER TABLE holo_sale_detail_tmp_20210816 RENAME TO holo_sale_detail_20210816;
      -- Attach the temporary table to the specified partitioned table.
      ALTER TABLE holo_sale_detail ATTACH PARTITION holo_sale_detail_20210816
      FOR VALUES IN ('20210816')
      ;
      COMMIT ;
    • Jika tidak ada tabel anak lama, sambungkan langsung tabel temporary ke tabel partisi Hologres.

      Pernyataan SQL ini meng-bind tabel temporary holo_sale_detail_tmp_20210816 ke partisi 20210816 dari tabel partisi holo_sale_detail.

      BEGIN ;
      -- Rename the temporary table.
      ALTER TABLE holo_sale_detail_tmp_20210816 RENAME TO holo_sale_detail_20210816;
      -- Attach the temporary table to the specified partitioned table.
      ALTER TABLE holo_sale_detail ATTACH PARTITION holo_sale_detail_20210816
      FOR VALUES IN ('20210816');
      COMMIT ;
  5. Jalankan ANALYZE pada tabel partisi Hologres

    Di halaman Ad-hoc Query, masukkan pernyataan berikut di editor SQL lalu klik Run.

    Pernyataan SQL ini menjalankan ANALYZE pada tabel partisi holo_sale_detail untuk mengumpulkan statistik, yang membantu planner kueri menghasilkan rencana eksekusi yang efisien. Saat menjalankan ANALYZE pada tabel partisi, Anda hanya perlu menjalankannya pada tabel induk.

    -- Run ANALYZE on the parent table of the partitioned table after a large data import.
    ANALYZE holo_sale_detail;
  6. Bersihkan partisi anak yang kedaluwarsa (opsional)

    Di lingkungan produksi, data memiliki siklus hidup, dan Anda harus membersihkan partisi yang melewati periode retensi.

    Di halaman Ad-hoc Query, masukkan pernyataan berikut di editor SQL lalu klik Run.

    Pernyataan SQL ini membersihkan partisi 20210630.

    DROP TABLE IF EXISTS holo_sale_detail_20210630;

Contoh Pekerjaan DataWorks

Dalam operasional harian, Anda sering perlu menjadwalkan pernyataan SQL di atas secara berkala. Anda dapat menggunakan DataWorks untuk penjadwalan dan orkestrasi, serta menggunakan satu Pekerjaan terjadwal untuk mencakup kedua skenario tersebut. Baca bagian berikut dengan cermat agar Anda dapat memperbarui parameter atau skrip agar sesuai dengan kebutuhan bisnis saat Anda mengimpor Pekerjaan DataWorks menggunakan asisten migrasi. Gambar berikut menunjukkan alur kerja keseluruhan.流程总览

Modul alur kerja

  • Parameter dasar

    Parameter dasar mengelola semua parameter yang digunakan dalam alur kerja. Parameter utama adalah sebagai berikut.

    Id

    Parameter

    Type

    Value

    Description

    1

    datepre31

    variable

    ${yyyymmdd-31}

    Parameter yang mengontrol pembersihan partisi kedaluwarsa. Nilai ini menentukan bahwa partisi dari 31 hari lalu akan dibersihkan.

    2

    datetime1

    variable

    $bizdate

    Parameter yang mengontrol pembuatan partisi.

    3

    holo_table_name

    constant

    holo_sale_detail

    Nama tabel partisi Hologres.

    4

    odps_project

    constant

    hologres_test

    Nama Proyek MaxCompute.

    5

    odps_table_name

    constant

    odps_sale_detail

    Nama tabel partisi MaxCompute.

    6

    partition_key

    constant

    sale_date

    Kunci partisi tabel MaxCompute.

  • Tulis data partisi ke tabel temporary

    Langkah ini merupakan modul SQL Hologres. Kode SQL-nya adalah sebagai berikut.

    Catatan

    Hologres V2.1.17 dan versi lebih baru mendukung Serverless Computing. Untuk skenario seperti impor data offline skala besar, Pekerjaan ETL besar, dan kueri volume tinggi pada tabel eksternal, Anda dapat menggunakan Serverless Computing untuk menjalankan tugas-tugas tersebut. Fitur ini menggunakan sumber daya serverless tambahan alih-alih sumber daya instans Anda, sehingga meningkatkan stabilitas instans dan mengurangi kemungkinan error kehabisan memori (OOM). Anda tidak perlu menyediakan sumber daya komputasi tambahan untuk instans Anda, dan hanya dikenai biaya untuk tugas yang dijalankan. Untuk informasi selengkapnya tentang Serverless Computing, lihat Serverless Computing. Untuk petunjuk penggunaan Serverless Computing, lihat Use Serverless Computing.

    -- Clean up any potential temporary tables.
    BEGIN ;
    DROP TABLE IF EXISTS ${holo_table_name}_tmp_${datetime1};
    COMMIT ;
    -- Create a temporary table.
    SET hg_experimental_enable_create_table_like_properties=on;
    BEGIN ;
    CALL HG_CREATE_TABLE_LIKE ('${holo_table_name}_tmp_${datetime1}', 'select * from ${holo_table_name}'); 
    COMMIT;
    -- (Optional) We recommend that you use Serverless Computing to run large-scale offline data imports and ETL jobs.
    SET hg_computing_resource = 'serverless';
    -- Insert data into the temporary table.
    INSERT INTO ${holo_table_name}_tmp_${datetime1}
    SELECT *
    FROM public.${odps_table_name}
    WHERE ${partition_key}='${datetime1}';
    -- Reset the configuration to ensure that non-essential SQL queries do not use serverless resources.
    RESET hg_computing_resource;

    Anda harus meng-bind parameter dasar sebagai input hulu untuk modul ini. Dalam konfigurasi Node Context untuk node ini, bagian Input Parameters of This Node berisi lima parameter: datetime1, holo_table_name, odps_project, odps_table_name, dan partition_key. Sumber nilai untuk semua parameter adalah node hulu holo_doc_test.501890067_out. Tambahkan secara manual. Bagian Output Parameters of This Node kosong.

  • Ganti tabel anak

    Langkah ini merupakan modul SQL Hologres yang mengganti tabel anak yang sudah ada. Operasi dilakukan dalam satu transaksi untuk menjamin atomicity. Kode SQL-nya adalah sebagai berikut.

    -- Replace the child table if it exists.
    BEGIN ;
    -- Delete the existing child table.
    DROP TABLE IF EXISTS ${holo_table_name}_${datetime1};
    -- Rename the temporary table.
    ALTER TABLE ${holo_table_name}_tmp_${datetime1} RENAME TO ${holo_table_name}_${datetime1};
    -- Attach the temporary table to the specified partitioned table.
    ALTER TABLE ${holo_table_name} ATTACH PARTITION ${holo_table_name}_${datetime1}
    FOR VALUES IN ('${datetime1}');
    COMMIT ;

    Anda harus meng-bind parameter dasar sebagai input hulu untuk modul ini. Di Node Context, di bawah Input Parameters of This Node, tambahkan secara manual parameter datetime1 dan holo_table_name. Atur sumber nilainya ke output node hulu hologres_doc_test.502282431_out:datetime1 dan hologres_doc_test.502282431_out:holo_table_name, masing-masing.

  • Kumpulkan statistik untuk tabel partisi

    Langkah ini merupakan modul SQL Hologres yang mengumpulkan statistik untuk tabel induk. Kode SQL-nya adalah sebagai berikut.

    -- Run ANALYZE on the parent table of the partitioned table after a large data import.
    ANALYZE ${holo_table_name};

    Anda harus meng-bind parameter dasar sebagai input hulu untuk modul ini. Di panel Node Context, di bagian Input Parameters of This Node, klik Add dan tambahkan secara manual parameter holo_table_name. Atur sumber nilainya ke holo_doc_test.501890067_out:holo_table_name.

  • Bersihkan tabel anak yang kedaluwarsa

    Di lingkungan produksi, data memiliki siklus hidup, dan Anda harus membersihkan partisi yang melewati periode retensi.

    Contoh ini menunjukkan cara menyimpan hanya partisi 31 hari terakhir di Hologres. Karena parameter diatur ke datepre31=${yyyymmdd-31}, kode SQL untuk menghapus tabel anak kedaluwarsa adalah sebagai berikut. Sebelum menghapus tabel anak dari tabel partisi fisik, Anda harus terlebih dahulu melepaskannya dari tabel induk (DETACH PARTITION), lalu menjalankan DROP TABLE. Jika tidak, tabel anak tetap terikat ke tabel induk.

    -- Clean up expired child tables: Detach the child partition first, and then drop the table.
    BEGIN ;
    ALTER TABLE ${holo_table_name} DETACH PARTITION ${holo_table_name}_${datepre31};
    DROP TABLE IF EXISTS ${holo_table_name}_${datepre31};
    COMMIT ;

    Sebagai contoh, jika bizdate adalah 20200309, maka datepre31 adalah 20200207. Hal ini mengatur tanggal pembersihan partisi dengan benar.

    Anda juga harus meng-bind parameter dasar sebagai input hulu untuk modul ini. Di panel Node Context, di bagian Input Parameters of This Node, klik Add dan tambahkan secara manual dua parameter: nama parameter datepre31 dengan sumber nilai diatur ke output node hulu holo_doc_test.501890067_out:datepre31; dan nama parameter holo_table_name dengan sumber nilai diatur ke output node hulu holo_doc_test.501890067_out:holo_table_name.

Impor Pekerjaan DataWorks dengan asisten migrasi

  • Karena Pekerjaan tersebut kompleks, Anda dapat menggunakan asisten migrasi DataWorks untuk mengimpor paket Pekerjaan yang disediakan ke dalam Proyek Anda. Hal ini memberikan Pekerjaan DataWorks yang telah dikonfigurasi sebelumnya seperti yang dijelaskan dalam topik ini, yang dapat Anda sesuaikan dengan mengubah parameter atau skrip agar sesuai dengan kebutuhan bisnis spesifik Anda.

  • Unduh paket Pekerjaan berikut: Paket Pekerjaan DataWorks.

  1. Buka asisten migrasi DataWorks. Untuk informasi selengkapnya, lihat Open the migration assistant.

  2. Di panel navigasi kiri asisten migrasi, klik Migration in DataWorks > DataWorks import.

  3. Di halaman DataWorks import, klik Create Import Task di pojok kanan atas.

  4. Di kotak dialog Create Import Task, konfigurasi parameter.

    Parameter

    Description

    Import Package Name

    Nama kustom. Nama impor dapat berisi huruf kapital, huruf kecil, karakter Tionghoa, angka, garis bawah (_), dan titik (.).

    Upload Method

    Metode untuk mengunggah file.

    • Upload Local File: Gunakan metode ini untuk mengunggah file paket ekspor berukuran 30 MB atau kurang ke ruang kerja DataWorks.

    • OSS Endpoint: Jika file paket ekspor berukuran lebih dari 30 MB, unggah file tersebut ke OSS lalu masukkan URL file di ruang kerja DataWorks Anda. Untuk mendapatkan URL file, buka halaman detail file di Konsol OSS, temukan bagian File Url, lalu salin URL-nya. Untuk informasi selengkapnya tentang cara mengunggah file, lihat Upload files. Untuk informasi selengkapnya tentang cara mendapatkan tautan unduh OSS, lihat Share files.

    Remarks

    Deskripsi singkat tentang tugas impor.

  5. Klik OK untuk membuka halaman Import Task Settings, lalu konfigurasi pemetaan.

  6. Klik Start Import di pojok kiri bawah, lalu di kotak dialog Confirm, klik OK.

    1. Setelah impor berhasil, Pekerjaan terjadwal yang dijelaskan di atas muncul di modul Data Development Anda.

    2. Pernyataan DDL terkait juga muncul di alur kerja manual Anda.