Les schémas permettent de classer les tables, les ressources et les fonctions d'un projet MaxCompute dans des namespaces plus fins, offrant un contrôle plus précis de l'organisation des données et des accès au sein d'un même projet.
Fonctionnement des schémas
Dans MaxCompute, un schéma s'intercale entre un projet et ses objets. La hiérarchie des objets est la suivante : project → schema → tables/resources/functions.
Une fois la fonctionnalité de schéma activée, tous les objets accessibles via un objet d'entrée MaxCompute sont placés dans le schéma nommé DEFAULT. Pour travailler avec des objets situés dans un autre schéma, spécifiez le schéma cible lors de l'initialisation de l'objet d'entrée ou lors de l'appel d'une méthode.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Activé la fonctionnalité de schéma pour votre projet MaxCompute. Pour plus de détails, consultez la section Opérations liées aux schémas.
-
Configuré un environnement d'exécution. PyODPS s'exécute sur un nœud PyODPS dans DataWorks ou sur une machine locale :
DataWorks : Créez un nœud PyODPS 2 ou un nœud PyODPS 3. Pour plus de détails, consultez la section Utiliser PyODPS dans DataWorks.
Machine locale : Installez PyODPS et initialisez l'objet d'entrée MaxCompute.
Créer un schéma
schema = o.create_schema("schema_name")
print(schema)
Supprimer un schéma
schema = o.delete_schema("schema_name")
Lister les schémas
Pour lister tous les schémas du projet actuel :
for schema in o.list_schemas():
print(schema)
Travailler avec des objets dans un schéma spécifique
Initialiser l'objet d'entrée pour un schéma
Pour agir sur des objets situés dans un schéma autre que DEFAULT, transmettez le paramètre schema lors de l'initialisation de l'objet d'entrée ODPS.
import os
from odps import ODPS
# Store your credentials in environment variables — do not hardcode AccessKey ID or AccessKey Secret.
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='<your-default-project>',
endpoint='<your-end-point>',
schema='<your-schema-name>',
)
Remplacez les espaces réservés suivants par vos valeurs réelles :
|
Espace réservé |
Description |
|
|
Le nom de votre projet MaxCompute. |
|
|
L'endpoint de votre projet MaxCompute, selon la région et la méthode de connexion réseau sélectionnées. Pour plus de détails, consultez la section Endpoints. Un endpoint invalide provoque une erreur lors de l'accès à MaxCompute. |
|
|
Le nom du schéma. |
Spécifier un schéma pour des opérations individuelles
Transmettez directement schema aux méthodes pour cibler un schéma spécifique sans réassocier l'objet d'entrée.
# List all tables in test_schema.
for table in o.list_tables(schema='schema_name'):
print(table)
Spécifier un schéma par défaut pour les instructions SQL
Transmettez default_schema à execute_sql pour définir le contexte de schéma d'une seule instruction SQL.
o.execute_sql("SELECT * FROM dual", default_schema="schema_name")