Todos os produtos
Search
Central de documentação

Hologres:Periodically import MaxCompute data with DataWorks

Última atualização: Jul 20, 2026

As tarefas de agendamento do DataWorks importam dados periodicamente de uma tabela particionada do MaxCompute para uma tabela particionada do Hologres. Esse processo garante a integridade e a precisão dos dados, além de melhorar a eficiência do processamento.

Pré-requisitos

Observações de uso

Verifique se o service de schema não está habilitado para o tenant ou projeto do MaxCompute. Para mais informações sobre schemas, consulte schema operations.

Preparação de dados

Este tópico usa como exemplo a tabela particionada dwd_product_movie_basic_info do conjunto de dados públicos public_data do MaxCompute. O código a seguir mostra o schema da tabela.

-- DDL for the MaxCompute partitioned table
CREATE TABLE IF NOT EXISTS public_data.dwd_product_movie_basic_info(
  movie_name STRING COMMENT 'The name of the movie.',
  director STRING COMMENT 'The director.',
  scriptwriter STRING COMMENT 'The scriptwriter.',
  area STRING COMMENT 'The production region or country.',
  actors STRING COMMENT 'The actors.',
  `type` STRING COMMENT 'The genre.',
  movie_length STRING COMMENT 'The movie duration.',
  movie_date STRING COMMENT 'The release date.',
  movie_language STRING COMMENT 'The language.',
  imdb_url STRING COMMENT 'The IMDB ID.'
) 
PARTITIONED BY (ds STRING) STORED AS ALIORC;

Procedimento

  1. Prepare os dados do MaxCompute.

    1. Faça logon no console do DataWorks, mude para a região de destino e, no painel de navegação à esquerda, escolha Data Analysis and Service > Data Analysis. Clique em Go to Data Analysis. No painel de navegação à esquerda, clique no ícone image para acessar a página SQL Query.

    2. Na página SQL Query, insira a seguinte instrução SQL para visualizar os dados na partição 20170112 e clique em Run.

      SELECT * FROM public_data.dwd_product_movie_basic_info WHERE ds = '20170112';

  2. Crie uma tabela externa no Hologres.

    A ordem das colunas e os tipos de dados da tabela externa devem corresponder aos da tabela do MaxCompute.

    1. Faça logon na página HoloWeb SQL Editor.

    2. Abaixo da aba SQL Editor, clique no ícone image para abrir uma janela de Ad-hoc Query. Na barra de ferramentas da janela de consulta, selecione o Instance Name e o Database da sua instância do Hologres.

    3. No editor de Ad-hoc Query, insira a seguinte instrução e clique em Run.

      A instrução abaixo usa o comando IMPORT FOREIGN SCHEMA para criar uma tabela externa do Hologres chamada 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');
  3. Crie uma tabela interna no Hologres.

    Crie uma tabela interna no Hologres para receber e armazenar os dados importados.

    1. Na página de desenvolvimento do HoloWeb, clique em Ad-hoc Query.

    2. Na nova janela de Ad-hoc Query, selecione seu Instance Name e Database. Em seguida, insira a seguinte instrução no editor SQL e clique em Run.

      Como este exemplo importa dados de uma tabela particionada do MaxCompute, a tabela de destino no Hologres também deve ser particionada.

      Nota

      A instrução DDL a seguir é um exemplo simples. Para obter o melhor desempenho de consulta, defina índices apropriados com base nos requisitos do seu negócio.

      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 'The name of the movie.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."director" IS 'The director.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."scriptwriter" IS 'The scriptwriter.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."area" IS 'The production region or country.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."actors" IS 'The actors.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."type" IS 'The genre.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_length" IS 'The movie duration.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_date" IS 'The release date.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_language" IS 'The language.';
      COMMENT ON COLUMN "public"."holo_dwd_product_movie_basic_info"."imdb_url" IS 'The IMDB ID.';
      COMMIT;
  4. Desenvolva a tarefa de importação de dados.

    Nesta etapa, crie um nó SQL do Hologres para executar jobs agendados na tabela particionada.

    1. Faça logon no console do DataWorks, acesse a página Data Development e crie um nó SQL do Hologres. Para mais informações, consulte Hologres SQL node.

    2. No editor de nós, insira as seguintes instruções.

      Não é possível gravar dados particionados diretamente em uma tabela particionada pai no Hologres. Crie primeiro uma tabela particionada filha correspondente ao valor da chave de partição da tabela source do MaxCompute e, depois, importe os dados para essa tabela filha. O parâmetro ${bizdate} controla o valor da chave de partição. O sistema de agendamento atribui esse parâmetro automaticamente para permitir o agendamento periódico. Para mais informações sobre parâmetros de agendamento, consulte Supported formats of scheduling parameters.

      Nota

      Os dados da partição importada devem corresponder ao valor da chave de partição (neste exemplo, ds). Caso contrário, ocorrerá um erro.

      Os dois cenários a seguir demonstram abordagens diferentes. Escolha uma com base nas necessidades do seu negócio.

      • Cenário 1: Importar novos dados de partição.

        -- Create a temporary child partitioned table.
        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;
        -- Refresh the foreign table schema.
        IMPORT FOREIGN SCHEMA public_data LIMIT TO (dwd_product_movie_basic_info) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'update');
        -- Wait for 30 seconds before importing data to Hologres to prevent synchronization failures caused by slow metadata cache updates in Hologres.
        SELECT pg_sleep(30); 
        -- Import data from MaxCompute to the temporary child partitioned table.
        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}';
        -- Import the new partition data.
        BEGIN;
        ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate};
        -- Attach the new child partitioned table to the parent partitioned table.
        ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES IN ('${bizdate}');
        COMMIT;
                                            
      • Cenário 2: Atualizar dados históricos de partição.

        -- Create a temporary child partitioned table.
        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;
        -- Refresh the foreign table schema.
        IMPORT FOREIGN SCHEMA public_data LIMIT TO (dwd_product_movie_basic_info) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'update');
        -- Wait for 30 seconds before importing data to Hologres to prevent synchronization failures caused by slow metadata cache updates in Hologres.
        SELECT pg_sleep(30); 
        -- Import data from MaxCompute to the temporary child partitioned table.
        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}';
        -- Refresh the historical partition data.
        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};
        -- Attach the child partitioned table to the parent partitioned table.
        ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES IN ('${bizdate}');
        COMMIT;
  5. Configure as propriedades de agendamento.

    Na página do editor de nós Hologres SQL, clique em Configure Scheduling no painel à direita para configurar as propriedades de agendamento do nó.

    Nota

    Modifique os parâmetros a seguir e mantenha os demais com seus valores padrão.

    • Propriedades básicas

      Parameter

      Value

      Parameters

      bizdate=${yyyymmdd}

    • Propriedades de tempo: Na seção Time Properties, defina Scheduling Type como Normal Scheduling, mantenha o Validity Period padrão (1970-01-01 a 9999-01-01), defina Scheduling Cycle como Day, configure Timeout para System Default e desmarque Depends on Previous Cycle.

      Parameter

      Value

      Instance generation mode

      Immediately After Deployment

      Rerun

      Allow upon Failure Only

      Scheduled time

      00:05

    • Dependências de agendamento

      Defina a dependência para o nó raiz ou um nó pai existente conforme as necessidades do seu negócio. Primeiro, defina Automatic Parsing como On e clique em Parse Lineage. O sistema analisa automaticamente o nó raiz. Depois, defina Automatic Parsing como Off.

  6. Publique o nó de agendamento.

    1. Na página do editor de nós Hologres SQL, clique no ícone 保存 na barra de ferramentas para salvar o nó.

    2. Clique no ícone 提交 na barra de ferramentas para enviar o nó.

    3. Na caixa de diálogo Submit New Version, insira uma Change description.

    4. Clique em OK.

  7. Execute o nó no Operation Center.

    1. Na página do editor de nós Hologres SQL, clique em O&M no canto superior direito.

    2. No painel de navegação à esquerda da página Operation Center, escolha Auto Triggered Nodes Maintenance > Recurring Job.

    3. Na página Recurring Job, clique com o botão direito no nó e escolha Backfill Data > Current Node.

    4. No painel de navegação à esquerda, escolha Assistant > Data Backfill para visualizar a tarefa em execução e seu status.

  8. Visualize os dados.

    Após a execução da tarefa, o Hologres cria automaticamente uma tabela particionada filha para os dados da partição.

    1. Crie um nó SQL do Hologres na página Data Development. Para mais informações, consulte Hologres SQL node.

    2. Na página do editor de nós, insira as seguintes instruções para consultar os dados.

      • Visualize os dados na tabela particionada filha.

        SELECT * FROM holo_dwd_product_movie_basic_info_20170112;
      • Visualize o número total de linhas na tabela particionada pai.

        SELECT COUNT (*) FROM holo_dwd_product_movie_basic_info;