CREATE FOREIGN TABLE mappe une table externe dans Hologres vers une table située dans une source de données connectée, telle que MaxCompute, Object Storage Service (OSS), Data Lake Formation (DLF) ou une autre instance Hologres. Vous pouvez ainsi interroger ces données via SQL standard sans avoir à les importer au préalable.
Le serveur distant odps_server est préconfiguré dans Hologres. Il n'est pas nécessaire de le créer.
Syntaxe
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name (
{ column_name data_type }
[, ... ]
)
SERVER odps_server
OPTIONS (
project_name '<odps_project_name>[#<odps_schema_name>]',
table_name '<odps_table_name>'
)
Paramètres
Paramètres obligatoires
| Paramètre | Description |
|---|---|
table_name |
Nom de la table distante à créer dans Hologres. |
SERVER odps_server |
Serveur distant permettant la connexion à MaxCompute. La valeur odps_server est préconfigurée dans Hologres ; ne la modifiez pas. Pour plus d'informations sur l'implémentation sous-jacente, consultez la documentation Postgres FDW. |
OPTIONS |
Paires clé-valeur identifiant la table source MaxCompute. Consultez la section OPTIONS ci-dessous pour plus de détails. |
OPTIONS
Le format de la valeur project_name dépend du modèle utilisé par votre projet MaxCompute : deux couches ou trois couches.
Modèle à deux couches (projet → table) :
| Clé | Valeur |
|---|---|
project_name |
Nom du projet MaxCompute. Exemple : 'my_project' |
table_name |
Nom de la table MaxCompute à interroger. Exemple : 'my_table' |
Modèle à trois couches (projet → schéma → table) :
| Clé | Valeur |
|---|---|
project_name |
Nom du projet MaxCompute et nom du schéma, séparés par #. Exemple : 'my_project#my_schema' |
table_name |
Nom de la table MaxCompute à interroger. Exemple : 'my_table' |
Les types de données de toutes les colonnes de la table distante Hologres doivent correspondre aux types de données des colonnes correspondantes dans la table MaxCompute.
Notes d'utilisation
Le modèle à trois couches nécessite Hologres V1.3 ou une version ultérieure. Si la version de votre instance est antérieure à la V1.3, mettez-la à niveau avant de créer des tables distantes pour les projets utilisant ce modèle. En cas d'échec de la mise à niveau, consultez la rubrique Erreurs courantes lors de la préparation d'une mise à niveau ou contactez le support via le groupe DingTalk Hologres.
L'utilisation de la syntaxe du modèle à deux couches sur un projet fonctionnant avec le modèle à trois couches génère l'erreur suivante :
failed to import foreign schema:Table not found - table_xxxSi la table MaxCompute contient une colonne dont le type de données n'est pas pris en charge, vous pouvez toujours interroger les autres colonnes prises en charge, à condition de ne pas sélectionner la colonne non prise en charge.
Le type
DATETIMEutilise le fuseau horaire UTC+8. La plage de valeurs s'étend du 1er janvier 0000 au 31 décembre 9999, avec une précision à la milliseconde.Le type
TIMESTAMPTZinclut un décalage de fuseau horaire. La plage de valeurs s'étend de 4713 av. J.-C. à 294276 apr. J.-C., avec une précision à la microseconde.
Exemples
Interroger directement les données depuis une table distante
Créez une table distante et interrogez les données MaxCompute sans les importer.
Modèle à deux couches :
CREATE FOREIGN TABLE src_pt (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>', table_name '<odps_table>');
SELECT * FROM src_pt;
Modèle à trois couches :
CREATE FOREIGN TABLE src_pt (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>#<odps_schema>', table_name '<odps_table>');
SELECT * FROM src_pt;
Pour plus d'informations, consultez la rubrique Accélérer les requêtes sur les données MaxCompute à l'aide de tables distantes.
Importer les données puis les interroger
Importez d'abord les données MaxCompute dans une table interne Hologres, puis effectuez vos requêtes.
-- Step 1: Create a foreign table pointing to the MaxCompute source
CREATE FOREIGN TABLE src_pt_odps (
id text,
pt text
)
SERVER odps_server
OPTIONS (project_name '<odps_project>', table_name '<odps_table>');
-- Step 2: Create an internal Hologres table to hold the imported data
BEGIN;
CREATE TABLE src_pt (
id text,
pt text
);
COMMIT;
-- Step 3: Import data from MaxCompute into the internal table
INSERT INTO src_pt SELECT * FROM src_pt_odps;
Pour plus d'informations, consultez la rubrique Importer des données depuis MaxCompute à l'aide de SQL.
Mappage des types de données
Pour consulter le mappage complet entre les types de données MaxCompute et Hologres, reportez-vous à la rubrique Mappage des types de données entre MaxCompute et Hologres.