Hologres utilise des tables externes pour accélérer les requêtes sur les données MaxCompute. Cette approche permet d'accéder directement aux données MaxCompute et de les analyser, améliorant ainsi l'efficacité des requêtes et simplifiant le flux de traitement des données.
Autorisations
Pour accélérer les requêtes sur les données MaxCompute, accordez aux utilisateurs les autorisations nécessaires pour accéder aux projets et aux tables MaxCompute. Pour plus d'informations, consultez la rubrique Gérer les autorisations des utilisateurs à l'aide de commandes.
Mappage des types de données
Les types de données MaxCompute correspondent un par un aux types de données Hologres. Lors de la création d'une table, reportez-vous à la rubrique Mappage des types de données entre MaxCompute et Hologres.
Méthodes
|
Méthode |
Cas d'utilisation |
Fonctionnalités clés |
|
Accélérer les requêtes sur les données MaxCompute avec CREATE FOREIGN TABLE |
Idéal pour accélérer un petit nombre de tables, interroger un sous-ensemble de colonnes ou travailler avec des structures de table stables. |
Créez manuellement des tables avec des définitions flexibles de colonnes et de commentaires. |
|
Accélérer les requêtes sur les données MaxCompute avec IMPORT FOREIGN SCHEMA |
Mappez toutes les tables au niveau du schéma ou de la base de données. |
Synchronisez automatiquement les structures de table pour un schéma entier. |
|
Accélérer les requêtes sur les données MaxCompute avec Auto Load |
Grand nombre de tables, ou tables dont la structure change fréquemment (par exemple, ajout, suppression ou modification de colonnes). |
Détecte automatiquement les modifications apportées aux tables source et prend en charge les chargements à la demande et complets. |
Accélérer les requêtes avec CREATE FOREIGN TABLE
Utilisez l'instruction CREATE FOREIGN TABLE pour créer des tables externes MaxCompute. Cette instruction permet de personnaliser les noms de table, de sélectionner des colonnes spécifiques et de définir des commentaires. Cette section fournit des exemples illustrant comment interroger des données provenant de tables MaxCompute non partitionnées et partitionnées à l'aide de CREATE FOREIGN TABLE.
Vous pouvez également utiliser HoloWeb pour créer une table visuellement. Pour plus d'informations, consultez la rubrique Créer une table externe MaxCompute dans HoloWeb .
Exemple 1 : Interroger une table non partitionnée
-
Créez une table non partitionnée dans MaxCompute et importez-y des données. Cet exemple utilise la table
customerissue du jeu de données publicBIGDATA_PUBLIC_DATASET.tpcds_10tde MaxCompute comme exemple de données.Exécutez la commande suivante pour afficher les données de la table exemple.
-- Query the table in MaxCompute to check for data. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.tpcds_10t.customer; -
Dans Hologres, créez une table externe mappée à la table source MaxCompute. Voici un exemple d'instruction :
SET hg_enable_convert_type_for_foreign_table = true; CREATE FOREIGN TABLE customer ( "c_customer_sk" int8, "c_customer_id" text, "c_current_cdemo_sk" int8, "c_current_hdemo_sk" int8, "c_current_addr_sk" int8, "c_first_shipto_date_sk" int8, "c_first_sales_date_sk" int8, "c_salutation" text, "c_first_name" text, "c_last_name" text, "c_preferred_cust_flag" text, "c_birth_day" int8, "c_birth_month" int8, "c_birth_year" int8, "c_birth_country" text, "c_login" text, "c_email_address" text, "c_last_review_date_sk" text) SERVER odps_server OPTIONS (project_name 'BIGDATA_PUBLIC_DATASET.tpcds_10t', table_name 'customer');Le tableau suivant décrit les paramètres.
Paramètre
Description
SERVER
Le serveur externe.
Vous pouvez utiliser odps_server, qui est un serveur externe préconfiguré dans Hologres. Pour plus d'informations sur les principes, consultez Postgres FDW.
project_name
-
Si votre projet MaxCompute utilise le modèle à trois couches, project_name spécifie le nom du projet MaxCompute et le nom du schéma au format
odps_project_name.odps_schema_name.
-
Si votre projet MaxCompute utilise un modèle à deux couches, project_name correspond au nom du projet MaxCompute.
Pour plus d'informations sur le modèle à trois couches, consultez la rubrique Opérations sur les schémas.
table_name
Le nom de la table MaxCompute que vous souhaitez interroger.
-
-
Après avoir créé la table externe, interrogez-la dans Hologres pour récupérer les données de MaxCompute. Voici un exemple d'instruction :
SELECT * FROM customer LIMIT 10;ImportantEn cas d'erreur de requête, vérifiez que le compte utilisé pour exécuter la requête dispose des autorisations requises, telles que l'autorisation Select, sur la table MaxCompute. Pour plus d'informations, consultez la rubrique Autorisations.
Exemple 2 : Interroger une table partitionnée
-
Préparez une table partitionnée dans MaxCompute et importez-y des données. Cet exemple utilise la table
ods_enterprise_share_trade_hissue du jeu de données publicBIGDATA_PUBLIC_DATASET.financede MaxCompute comme exemple de données.Exécutez la commande suivante pour afficher les données de la table exemple.
-- Query data from a specific partition in MaxCompute. SET odps.namespace.schema=true; SELECT * FROM BIGDATA_PUBLIC_DATASET.finance.ods_enterprise_share_trade_h WHERE ds = '20170113'; -
Dans Hologres, créez une table externe mappée à la table MaxCompute partitionnée. Voici un exemple d'instruction :
CREATE FOREIGN TABLE public.foreign_ods_enterprise_share_trade_h ( "code" text, "name" text, "industry" text, "area" text, "pe" text, "outstanding" text, "totals" text, "totalassets" text, "liquidassets" text, "fixedassets" text, "reserved" text, "reservedpershare" text, "eps" text, "bvps" text, "pb" text, "timetomarket" text, "undp" text, "perundp" text, "rev" text, "profit" text, "gpr" text, "npr" text, "holders_num" text, "ds" text ) SERVER odps_server OPTIONS (project_name 'BIGDATA_PUBLIC_DATASET#finance', table_name 'ods_enterprise_share_trade_h'); comment on foreign table public.foreign_ods_enterprise_share_trade_h is 'Historical stock trading information'; comment on column public.foreign_ods_enterprise_share_trade_h."code" is 'Stock symbol'; comment on column public.foreign_ods_enterprise_share_trade_h."name" is 'Name'; comment on column public.foreign_ods_enterprise_share_trade_h."industry" is 'Industry'; comment on column public.foreign_ods_enterprise_share_trade_h."area" is 'Region'; comment on column public.foreign_ods_enterprise_share_trade_h."pe" is 'Price-to-earnings ratio'; comment on column public.foreign_ods_enterprise_share_trade_h."outstanding" is 'Outstanding shares'; comment on column public.foreign_ods_enterprise_share_trade_h."totals" is 'Total shares (in 10,000s)'; comment on column public.foreign_ods_enterprise_share_trade_h."totalassets" is 'Total assets (in 10,000s)'; comment on column public.foreign_ods_enterprise_share_trade_h."liquidassets" is 'Liquid assets'; comment on column public.foreign_ods_enterprise_share_trade_h."fixedassets" is 'Fixed assets'; comment on column public.foreign_ods_enterprise_share_trade_h."reserved" is 'Reserve fund'; comment on column public.foreign_ods_enterprise_share_trade_h."reservedpershare" is 'Reserve per share'; comment on column public.foreign_ods_enterprise_share_trade_h."eps" is 'Earnings per share'; comment on column public.foreign_ods_enterprise_share_trade_h."bvps" is 'Book value per share'; comment on column public.foreign_ods_enterprise_share_trade_h."pb" is 'Price-to-book ratio'; comment on column public.foreign_ods_enterprise_share_trade_h."timetomarket" is 'Time to market'; comment on column public.foreign_ods_enterprise_share_trade_h."undp" is 'Undistributed profit'; comment on column public.foreign_ods_enterprise_share_trade_h."perundp" is 'Undistributed profit per share'; comment on column public.foreign_ods_enterprise_share_trade_h."rev" is 'YoY revenue (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."profit" is 'YoY profit (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."gpr" is 'Gross profit margin (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."npr" is 'Net profit margin (%)'; comment on column public.foreign_ods_enterprise_share_trade_h."holders_num" is 'Number of shareholders'; -
Interrogez la table MaxCompute partitionnée depuis Hologres.
-
Interrogez les 10 premières lignes de données. Voici un exemple d'instruction SQL :
SELECT * FROM foreign_ods_enterprise_share_trade_h limit 10; -
Interrogez les données d'une partition spécifique. Voici un exemple d'instruction SQL :
SELECT * FROM foreign_ods_enterprise_share_trade_h WHERE ds = '20170113';
ImportantEn cas d'erreur de requête, vérifiez que le compte utilisé pour exécuter la requête dispose des autorisations requises, telles que l'autorisation Select, sur la table MaxCompute. Pour plus d'informations, consultez la rubrique Autorisations.
-
Accélérer les requêtes avec IMPORT FOREIGN SCHEMA
Pour créer plusieurs tables externes MaxCompute, utilisez l'instruction IMPORT FOREIGN SCHEMA. Pour plus d'informations, consultez la rubrique IMPORT FOREIGN SCHEMA.
Accélérer les requêtes avec Auto Load
Si vous devez accélérer un grand nombre de tables externes, ou si les schémas des tables source dans MaxCompute changent fréquemment (par exemple, suppression de colonnes, réorganisation ou modification de leurs types de données), utilisez la fonctionnalité Auto Load. Cette fonctionnalité charge automatiquement les données de MaxCompute via des chargements à la demande ou complets. Elle élimine le besoin de modifier manuellement la structure de la table externe, améliorant ainsi l'efficacité des requêtes. Pour plus d'informations, consultez la rubrique Auto Load pour les tables externes.