Tous les produits
Search
Centre de documentation

Hologres:Import data from a MaxCompute partitioned table

Dernière mise à jour :Aug 24, 2026

Cette rubrique explique comment importer des données d'une table partitionnée MaxCompute vers une table partitionnée Hologres.

Prérequis

  • Vous avez acheté et activé une instance Hologres. Pour plus d'informations, consultez la section Acheter une instance Hologres.

  • Vous avez activé MaxCompute et créé un projet. Pour plus d'informations, consultez la section Activer MaxCompute.

  • Vous avez activé DataWorks et créé un espace de travail. Pour plus d'informations, consultez la section Créer un espace de travail.

Contexte

L'utilisation d'une table externe dans Hologres pour accéder aux données MaxCompute constitue un modèle courant d'ingestion de données. Pour les importations récurrentes, vous pouvez exploiter les puissantes capacités d'ordonnancement et d'orchestration des tâches de DataWorks afin de configurer une tâche périodique unique qui automatise le workflow d'importation. Pour plus d'informations, consultez l'Exemple de tâche DataWorks.

Étant donné la complexité de la tâche, vous pouvez utiliser l'assistant de migration DataWorks pour importer le fichier d'exemple de tâche dans votre projet. Cela vous fournit un workflow prêt à l'emploi que vous pouvez ensuite personnaliser en modifiant les paramètres ou les scripts selon vos besoins métier spécifiques. Pour plus d'informations, consultez la section Importer la tâche DataWorks à l'aide de l'assistant de migration.

Remarques d'utilisation

  • Une table temporaire est utilisée pour garantir l'atomicité. Les données sont rattachées à la table partitionnée uniquement une fois l'importation terminée. Cette approche évite les opérations de nettoyage manuel, telles que la suppression de tables, en cas d'échec d'une tâche d'importation.

  • Lorsque vous mettez à jour les données dans une sous-partition, vous devez supprimer l'ancienne table enfant et attacher la nouvelle table temporaire au sein d'une seule transaction afin d'assurer la cohérence transactionnelle.

  • Les conditions suivantes doivent être remplies pour importer une tâche DataWorks à l'aide de l'assistant de migration :

    • Votre édition DataWorks doit être l'édition Standard ou ultérieure. Pour plus d'informations, consultez la section Éditions DataWorks.

    • L'espace de travail DataWorks doit être lié aux sources de données MaxCompute et Hologres. Pour plus d'informations, consultez la section Configurer un espace de travail.

    • L'espace de travail DataWorks doit encore utiliser l'ancien DataStudio. L'assistant de migration ne prend pas en charge les espaces de travail ayant été mis à niveau vers le nouveau Data Studio. Dans un espace de travail mis à niveau, l'importation du package de ressources échoue lors de la vérification avec le message suivant : The migration assistant does not support workspaces that use the new Data Studio. Dans ce cas, créez la tâche manuellement en suivant la Procédure décrite dans cette rubrique.

Procédure

  1. Préparer les données MaxCompute

    1. Connectez-vous à la console DataWorks, basculez vers la région de destination et, dans le volet de navigation de gauche, choisissez Data Analysis and Service > Data Analysis. Cliquez sur Go to Data Analysis. Dans le volet de navigation de gauche, cliquez sur l'icône imageimage pour accéder à la page SQL Query.

    2. Sur la page SQL Query, saisissez l'instruction SQL suivante pour créer une table partitionnée, puis cliquez sur 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. Sur la page SQL Query, saisissez l'instruction SQL suivante pour importer des données dans la table partitionnée, puis cliquez sur 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. Créer des tables dans Hologres

    • Créer une table externe

      1. Se connecter à la base de données.

        1. Sur la page de développement HoloWeb, cliquez sur Metadata Management.

        2. Sur la page Metadata Management, double-cliquez sur le nom de la base de données que vous avez créée dans l'arborescence de gauche, puis cliquez sur OK.Se connecter à la base de donnéesLog in to the database

      2. Créer une table externe

        1. Sur la page SQL Editor, cliquez sur l'icône imageimage située dans le coin supérieur gauche pour créer une nouvelle requête SQL.

        2. Sur la nouvelle page Ad-hoc Query, sélectionnez votre Instance Name et votre Database. Dans l'éditeur SQL, saisissez l'instruction suivante et cliquez sur 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');
    • Créer une table partitionnée (table interne)

      1. Se connecter à la base de données.

        1. Sur la page de développement HoloWeb, cliquez sur Metadata Management.

        2. Sur la page Metadata Management, double-cliquez sur le nom de la base de données que vous avez créée dans l'arborescence de gauche, puis cliquez sur OK.Se connecter à la base de donnéesLog in to the database

      2. Créer une table partitionnée

        1. Sur la page SQL Editor, cliquez sur l'icône imageimage située dans le coin supérieur gauche pour créer une nouvelle requête SQL.

        2. Sur la nouvelle page Ad-hoc Query, sélectionnez votre Instance Name et votre Database. Dans l'éditeur SQL, saisissez l'instruction suivante et cliquez sur 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. Importer les données de partition vers une table temporaire Hologres

    Sur la page Ad-hoc Query, saisissez l'instruction suivante dans l'éditeur SQL et cliquez sur Run.

    Cette instruction SQL importe la partition 20210816 de la table partitionnée odps_sale_detail du projet hologres_test de MaxCompute vers la partition 20210816 de la table partitionnée holo_sale_detail dans Hologres.

    Remarque

    Hologres V2.1.17 et versions ultérieures prennent en charge Serverless Computing. Pour des scénarios tels que l'importation de données hors ligne à grande échelle, les tâches ETL volumineuses et les requêtes à fort volume sur des tables externes, vous pouvez utiliser Serverless Computing pour exécuter ces tâches. Cette fonctionnalité utilise des ressources serverless supplémentaires au lieu des ressources de votre instance, ce qui améliore la stabilité de l'instance et réduit la probabilité d'erreurs de mémoire insuffisante (OOM). Vous n'avez pas besoin de réserver des ressources de calcul supplémentaires pour votre instance et vous êtes facturé uniquement pour les tâches que vous exécutez. Pour plus d'informations sur Serverless Computing, consultez la section Serverless Computing. Pour obtenir des instructions sur l'utilisation de Serverless Computing, consultez la section Utiliser 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. Attacher la table temporaire à la table partitionnée Hologres

    Sur la page Ad-hoc Query, saisissez l'instruction suivante dans l'éditeur SQL et cliquez sur Run.

    • Si une ancienne table enfant existe, vous devez d'abord la supprimer, puis attacher la table temporaire à la table partitionnée Hologres.

      Cette instruction SQL supprime la table enfant holo_sale_detail_20210816 et lie la table temporaire holo_sale_detail_tmp_20210816 à la partition 20210816 de la table partitionnée 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 ;
    • Si aucune ancienne table enfant n'existe, attachez directement la table temporaire à la table partitionnée Hologres.

      Cette instruction SQL lie la table temporaire holo_sale_detail_tmp_20210816 à la partition 20210816 de la table partitionnée 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. Exécuter ANALYZE sur la table partitionnée Hologres

    Sur la page Ad-hoc Query, saisissez l'instruction suivante dans l'éditeur SQL et cliquez sur Run.

    Cette instruction SQL exécute ANALYZE sur la table partitionnée holo_sale_detail pour collecter des statistiques, ce qui aide le planificateur de requêtes à générer des plans d'exécution efficaces. Lorsque vous exécutez ANALYZE sur une table partitionnée, il suffit de l'exécuter sur la table parente.

    -- Run ANALYZE on the parent table of the partitioned table after a large data import.
    ANALYZE holo_sale_detail;
  6. Nettoyer les sous-partitions expirées (facultatif)

    Dans un environnement de production, les données ont un cycle de vie et vous devez nettoyer les partitions dont la période de rétention est dépassée.

    Sur la page Ad-hoc Query, saisissez l'instruction suivante dans l'éditeur SQL et cliquez sur Run.

    Cette instruction SQL nettoie la partition 20210630.

    DROP TABLE IF EXISTS holo_sale_detail_20210630;

Initialisation complète et mises à jour incrémentielles

La fonctionnalité d'importation de données MaxCompute en un clic dans HoloWeb ne propose qu'une liste déroulante Partition Field et un sélecteur unique Business Date. Par conséquent, elle ne permet d'importer qu'une seule partition à la fois et ne peut pas importer toutes les partitions historiques en une seule opération. La procédure décrite précédemment crée une table externe MaxCompute dans Hologres, utilise des instructions SQL pour écrire les données dans une table temporaire (ce qui garantit l'atomicité de l'importation), puis attache cette table temporaire à la table partitionnée (table interne) ; vous pouvez également synchroniser les données directement via Data Integration de DataWorks sans écrire de code SQL. Pour importer toutes les données des partitions historiques et maintenir des mises à jour incrémentielles quotidiennes, suivez ces deux phases.

Avant de commencer, assurez-vous que votre espace de travail DataWorks est lié aux sources de données MaxCompute et Hologres. Pour plus d'informations, consultez la section Remarques sur l'utilisation de cette rubrique.

  1. Initialisation complète : Dans la console HoloWeb, accédez à Data Integration de DataWorks via l'entrée Data Migration and Synchronization. Créez une tâche de synchronisation par lots. Sélectionnez la table partitionnée MaxCompute comme source et la table Hologres cible comme destination. Définissez la condition de filtre sur 1=1 pour importer toutes les données des partitions historiques en une seule opération. Soumettez et exécutez cette tâche de synchronisation pour terminer l'initialisation complète. La durée de cette opération dépend du volume de données des partitions historiques. Une fois l'importation terminée, exécutez ANALYZE sur la table parente de la table partitionnée pour mettre à jour ses statistiques de performance.

  2. Mises à jour incrémentielles : Dans un environnement de production, les nouvelles partitions sont importées en continu selon une planification récurrente. Configurez la planification récurrente de cette tâche de synchronisation en utilisant le paramètre bizdate pour n'importer que la partition du jour chaque jour. La tâche doit être publiée avant son démarrage, et vous pouvez consulter son statut dans les détails d'exécution. Pour une orchestration plus complète des tâches planifiées (incluant les tables de paramètres et le nettoyage des partitions expirées), consultez la section suivante Exemple de tâche DataWorks.

Exemple de tâche DataWorks

Lors des opérations quotidiennes, il est souvent nécessaire de planifier l'exécution récurrente des instructions SQL précédentes. Vous pouvez utiliser DataWorks pour la planification et l'orchestration, et couvrir les deux scénarios avec une seule tâche planifiée. Lisez attentivement les sections suivantes afin de pouvoir mettre à jour les paramètres ou les scripts pour les adapter à vos besoins métier lorsque vous importez la tâche DataWorks à l'aide de l'assistant de migration. La figure suivante illustre le flux de travail global.流程总览

Modules du flux de travail

  • Paramètres de base

    Les paramètres de base gèrent tous les paramètres utilisés dans le flux de travail. Les principaux paramètres sont les suivants.

    Id

    Parameter

    Type

    Value

    Description

    1

    datepre31

    variable

    ${yyyymmdd-31}

    Un paramètre qui contrôle le nettoyage des partitions expirées. Cette valeur spécifie que les partitions datant de 31 jours sont nettoyées.

    2

    datetime1

    variable

    $bizdate

    Un paramètre qui contrôle la création de partitions.

    3

    holo_table_name

    constant

    holo_sale_detail

    Le nom de la table partitionnée Hologres.

    4

    odps_project

    constant

    hologres_test

    Le nom du projet MaxCompute.

    5

    odps_table_name

    constant

    odps_sale_detail

    Le nom de la table partitionnée MaxCompute.

    6

    partition_key

    constant

    sale_date

    La clé de partition de la table MaxCompute.

  • Écriture des données partitionnées dans une table temporaire

    Cette étape correspond à un module SQL Hologres. Le code SQL est le suivant.

    Remarque

    Hologres V2.1.17 et versions ultérieures prennent en charge Serverless Computing. Pour des scénarios tels que l'importation de données hors ligne à grande échelle, les tâches ETL volumineuses et les requêtes à fort volume sur des tables externes, vous pouvez utiliser Serverless Computing pour exécuter ces tâches. Cette fonctionnalité utilise des ressources serverless supplémentaires au lieu des ressources de votre instance, ce qui améliore la stabilité de l'instance et réduit la probabilité d'erreurs de mémoire insuffisante (OOM). Vous n'avez pas besoin de réserver des ressources de calcul supplémentaires pour votre instance, et vous êtes facturé uniquement pour les tâches que vous exécutez. Pour plus d'informations sur Serverless Computing, consultez Serverless Computing. Pour obtenir des instructions sur l'utilisation de Serverless Computing, consultez Utiliser 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;

    Vous devez lier les paramètres de base en tant qu'entrée amont pour ce module. Dans la configuration Node Context de ce nœud, la section Input Parameters of This Node contient cinq paramètres : datetime1, holo_table_name, odps_project, odps_table_name et partition_key. La source de valeur pour tous les paramètres est le nœud amont holo_doc_test.501890067_out. Ajoutez-les manuellement. La section Output Parameters of This Node est vide.

  • Remplacement d'une table enfant

    Cette étape correspond à un module SQL Hologres qui remplace une table enfant existante. Les opérations sont effectuées au sein d'une transaction pour garantir l'atomicité. Le code SQL est le suivant.

    -- 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 ;

    Vous devez lier les paramètres de base en tant qu'entrée amont pour ce module. Dans Node Context, sous Input Parameters of This Node, ajoutez manuellement les paramètres datetime1 et holo_table_name. Définissez leurs sources de valeur respectivement sur les sorties du nœud amont hologres_doc_test.502282431_out:datetime1 et hologres_doc_test.502282431_out:holo_table_name.

  • Collecte des statistiques pour la table partitionnée

    Cette étape correspond à un module SQL Hologres qui collecte les statistiques de la table parente. Le code SQL est le suivant.

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

    Vous devez lier les paramètres de base en tant qu'entrée amont pour ce module. Dans Node Context, sous Input Parameters of This Node, cliquez sur Add et ajoutez manuellement le paramètre holo_table_name. Définissez sa source de valeur sur holo_doc_test.501890067_out:holo_table_name.

  • Nettoyage des tables enfants expirées

    Dans les environnements de production, les données ont un cycle de vie et vous devez nettoyer les partitions dont la période de rétention est dépassée.

    Cet exemple montre comment conserver uniquement les partitions des 31 derniers jours dans Hologres. Étant donné que le paramètre est défini sur datepre31=${yyyymmdd-31}, le code SQL pour supprimer les tables enfants expirées est le suivant. Avant de supprimer une table enfant d'une table partitionnée physique, vous devez d'abord la détacher de la table parente (DETACH PARTITION), puis exécuter DROP TABLE. Sinon, la table enfant reste attachée à la table parente.

    -- 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 ;

    Par exemple, si bizdate est 20200309, alors datepre31 est 20200207. Cela définit correctement la date pour le nettoyage des partitions.

    Vous devez également lier les paramètres de base en tant qu'entrée amont pour ce module. Dans le panneau Node Context, dans la section Input Parameters of This Node, cliquez sur Add et ajoutez manuellement deux paramètres : nom du paramètre datepre31 avec la source de valeur définie sur la sortie du nœud amont holo_doc_test.501890067_out:datepre31 ; et nom du paramètre holo_table_name avec la source de valeur définie sur la sortie du nœud amont holo_doc_test.501890067_out:holo_table_name.

Importer une tâche DataWorks avec l'assistant de migration

Remarque

Cette section s'appuie sur l'assistant de migration DataWorks et s'applique uniquement aux espaces de travail qui utilisent encore l'ancien DataStudio. Si votre espace de travail a été mis à niveau vers le nouveau Data Studio, l'importation du package de ressources échoue lors de la vérification. Créez la tâche manuellement en suivant la Procédure de cette rubrique.

  • Étant donné que la tâche est complexe, vous pouvez utiliser l'assistant de migration DataWorks pour importer le package de tâches fourni dans votre projet. Cela fournit une tâche DataWorks préconfigurée décrite dans cette rubrique, que vous pouvez ensuite personnaliser en modifiant les paramètres ou les scripts pour les adapter à vos besoins métier spécifiques.

  • Téléchargez le package de tâches suivant : Package de tâches DataWorks.

  1. Ouvrez l'assistant de migration DataWorks. Pour plus d'informations, consultez Ouvrir l'assistant de migration.

  2. Dans le volet de navigation de gauche de l'assistant de migration, cliquez sur Migration in DataWorks > DataWorks import.

  3. Sur la page DataWorks import, cliquez sur Create Import Task dans le coin supérieur droit.

  4. Dans la boîte de dialogue Create Import Task, configurez les paramètres.

    Parameter

    Description

    Import Package Name

    Un nom personnalisé. Le nom d'importation peut contenir des lettres majuscules, des lettres minuscules, des caractères chinois, des chiffres, des traits de soulignement (_) et des points (.).

    Upload Method

    La méthode de téléchargement du fichier.

    • Upload Local File : Utilisez cette méthode pour télécharger un fichier de package d'exportation de 30 Mo ou moins dans l'espace de travail DataWorks.

    • OSS Endpoint : Si un fichier de package d'exportation est supérieur à 30 Mo, téléchargez le fichier sur OSS, puis saisissez l'URL du fichier dans votre espace de travail DataWorks. Pour obtenir l'URL du fichier, accédez à la page des détails du fichier dans la console OSS, trouvez la section File Url et copiez l'URL. Pour plus d'informations sur le téléchargement de fichiers, consultez Télécharger des fichiers. Pour plus d'informations sur l'obtention d'un lien de téléchargement OSS, consultez Partager des fichiers.

    Remarks

    Une brève description de la tâche d'importation.

  5. Cliquez sur OK pour accéder à la page Import Task Settings, puis configurez les mappages.

  6. Cliquez sur Start Import dans le coin inférieur gauche, et dans la boîte de dialogue Confirm, cliquez sur OK.

    1. Une fois l'importation réussie, la tâche planifiée décrite ci-dessus apparaît dans votre module Data Development.

    2. Les instructions DDL associées apparaissent également dans votre flux de travail manuel.