Tous les produits
Search
Centre de documentation

MaxCompute:Guide d'utilisation du SDK CatalogAPI

Dernière mise à jour :Aug 10, 2026

Gérez par programmation les resources de métadonnées MaxCompute à l'aide du SDK CatalogAPI pour Java et Python.

Version du produit : v0.2.2 Dépôt SDK :aliyun/aliyun-odps-openapi-sdk

Présentation

Le SDK CatalogAPI est un SDK open source dédié à la gestion du catalogue de données MaxCompute. Il offre un accès programmatique aux resources de métadonnées telles que Project, Schema, Table, Connection, Role, Taxonomy, DataPolicy, DataScan et Model.

Fonctionnalités

Principales capacités :

  • Gestion des tables

    Créez et mettez à jour des tables internes et externes. Consultez et supprimez des tables internes, des tables externes, des vues, des vues matérialisées et des tables snapshot.

  • Gestion des connexions

    Gérez les configurations de Connection pour accéder à des sources de données externes telles qu'OSS et OTS.

  • Gestion des autorisations

    Mettez en œuvre un contrôle d'accès granulaire via Role et Policy.

  • Sécurité des données

    Implémentez un contrôle d'accès au niveau des colonnes grâce à Taxonomy et Policy Tag, ainsi qu'un masquage dynamique des données via DataPolicy.

  • Exploration des métadonnées

    Découvrez et explorez automatiquement les métadonnées provenant de sources de données externes à l'aide de DataScan.

  • Gestion des modèles

    Gérez les métadonnées des modèles d'apprentissage automatique avec prise en charge multiversion.

  • Recherche de resources

    Effectuez des recherches sur diverses entités de métadonnées au sein d'un namespace.

Modèle de resource

CatalogAPI suit un style de conception RESTful. La hiérarchie centrale des resources se présente comme suit :

Namespace (primary account UID)
├── Connection          # External data source connection
├── Role                # Custom role
├── Taxonomy            # Policy tag classification
│   └── PolicyTag       # Policy tag
├── DataPolicy          # Data policy (masking rules)
├── DataScan            # Metadata crawling task
│   └── ScanJob         # Crawling job
Project             # MaxCompute project
    └── Schema          # Namespace (directory)
        ├── Table       # Data table
        │   └── Partition # Partition
        └── Model       # Machine learning model
Remarque

L'ID du namespace correspond à l'UID du compte principal Alibaba Cloud.

Démarrage rapide

Installation du SDK

Le SDK CatalogAPI est disponible en Java et en Python, et hébergé sur le dépôt GitHub d'Alibaba Cloud.

// Add dependency in Maven project
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>catalog-api</artifactId>
    <version>0.2.2</version>
</dependency>
pip install pyodps-catalog

Initialisation du client

Initialisez le client CatalogAPI à l'aide d'une paire AccessKey.

Important

Ne codez pas en dur les paires AccessKey dans votre code. Utilisez des variables d'environnement ou des fichiers de configuration pour gérer vos identifiants.

import com.aliyun.odps.catalog.Client;
import com.aliyun.odps.models.Config;

public class CatalogDemo {
    public static void main(String[] args) throws Exception {
        // Initialize configuration
        Config config = new Config();
        config.setAccessKeyId(System.getenv("ALIBABACLOUD_ACCESS_KEY_ID"));
        config.setAccessKeySecret(System.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET"));
        // Set the MaxCompute endpoint. The SDK automatically discovers the CatalogAPI endpoint through the routing API.
        // Replace cn-shanghai with your actual region.
        config.setOdpsEndpoint("service.cn-shanghai.maxcompute.aliyun.com");
        
        // Create client
        Client client = new Client(config);
        
        // Use client to call APIs
    }
}
import os
from pyodps_catalog.client import Client
from maxcompute_tea_openapi.models import Config

# Initialize configuration
config = Config(
    access_key_id=os.environ.get('ALIBABACLOUD_ACCESS_KEY_ID'),
    access_key_secret=os.environ.get('ALIBABACLOUD_ACCESS_KEY_SECRET'),
    # Method 1 (recommended): Set odps_endpoint. The SDK automatically discovers the CatalogAPI endpoint through the routing API.
    odps_endpoint='service.cn-shanghai.maxcompute.aliyun.com'
    # Method 2: Directly specify the CatalogAPI endpoint.
    # endpoint='catalogapi.cn-shanghai.maxcompute.aliyun.com'
)

# Create client
client = Client(config)

# Use client to call APIs

Exemple : liste des tables

Cet exemple répertorie toutes les tables d'un schema spécifié :

import com.aliyun.odps.catalog.models.ListTablesResponse;
import com.aliyun.odps.catalog.models.Table;

ListTablesResponse response = client.listTables(
    "my_project",    // projectId
    "default",       // schemaName
    100,             // pageSize
    ""               // pageToken. Pass empty string for the first call
);

if (response.getTables() != null) {
    for (Table table : response.getTables()) {
        System.out.println("Table: " + table.getTableName());
    }
}

// If more pages exist, use nextPageToken to continue
String nextToken = response.getNextPageToken();
response = client.list_tables(
    project_id="my_project",
    schema_name="default",
    page_size=100,
    page_token=""
)

if response.tables:
    for table in response.tables:
        print(f"Table: {table.table_name}")

# If more pages exist, use next_page_token to continue
next_token = response.next_page_token

Authentification

Identifiants d'accès

CatalogAPI requiert une paire de clés AccessKey Alibaba Cloud pour l'authentification. Nous vous recommandons d'utiliser une paire de clés AccessKey associée à un utilisateur RAM et de respecter le principe du moindre privilège.

Liste des autorisations

Le tableau ci-dessous répertorie les autorisations requises pour chaque opération API :

Cliquez pour afficher la liste complète des autorisations

Resource

Operation

Required permission

Connection

Create

CreateConnection

Connection

List

ListConnection

Connection

Get

GetConnection

Connection

Update

UpdateConnection

Connection

Delete

DeleteConnection

Connection

SetPolicy

SetConnectionPolicy

Connection

GetPolicy

GetConnectionPolicy

Role

Create

CreateRole

Role

List

ListRole

Role

Get

GetRole

Role

Update

UpdateRole

Role

Delete

DeleteRole

Role

SetPolicy

SetRolePolicy

Role

GetPolicy

GetRolePolicy

Taxonomy

Create

CreateTaxonomy

Taxonomy

List

ListTaxonomy

Taxonomy

Get

GetTaxonomy

Taxonomy

Update

UpdateTaxonomy

Taxonomy

Delete

DeleteTaxonomy

Taxonomy

SetPolicy

SetTaxonomyPolicy

Taxonomy

GetPolicy

GetTaxonomyPolicy

PolicyTag

Create

UpdateTaxonomy

PolicyTag

List

GetTaxonomy

PolicyTag

Get

GetTaxonomy

PolicyTag

Update

UpdateTaxonomy

PolicyTag

Delete

UpdateTaxonomy

DataPolicy

Create

CreateDataPolicy

DataPolicy

List

ListDataPolicy

DataPolicy

Get

GetDataPolicy

DataPolicy

Delete

DeleteDataPolicy

DataPolicy

SetPolicy

SetDataPolicyPolicy

DataPolicy

GetPolicy

GetDataPolicyPolicy

Project

Get

ConnectProject

Schema

Create

CreateSchema

Schema

List

ListSchema

Schema

Get

GetSchema

Schema

Update

UpdateSchema

Schema

Delete

DeleteSchema

Schema

SetPolicy

SetSchemaPolicy

Schema

GetPolicy

GetSchemaPolicy

Table

Create

CreateTable

Table

List

List Table

Table

Get

Describe Table

Table

Update

Alter Table

Table

Delete

Drop Table

Table

SetPolicy

SetTablePolicy

Table

GetPolicy

GetTablePolicy

Table

GetDataToken

Select Table+UseConnection

Partition

List

Describe Table

Model

Create

CreateModel

Model

List

List Model

Model

Get

Describe Model

Model

Update

Alter Model

Model

Delete

Drop Model

Model

SetPolicy

SetModelPolicy

Model

GetPolicy

GetModelPolicy

ModelVersion

Create

Alter Model

ModelVersion

Delete

Alter Model

ModelVersion

List

Describe Model

DataScan

Create

CreateDataScan

DataScan

List

ListDataScan

DataScan

Get

GetDataScan

DataScan

Update

UpdateDataScan

DataScan

Delete

DeleteDataScan

DataScan

Trigger

TriggerDataScan

ScanJob

List

ListDataScanJob

Search

Search

SearchNamespace. Si la recherche inclut une condition de projet, l'autorisation SearchProject est requise pour ces projets

Politique et rôle

CatalogAPI prend en charge le contrôle d'accès basé sur les politiques. Une politique se compose d'un ensemble de liaisons (Bindings), où chaque liaison attribue un rôle à un ensemble de membres.

  • Modèle de politique

    {
      "etag": "string",
      "bindings": [
        {
          "role": "string",
          "members": ["string"]
        }
      ]
    }
    • etag : utilisé pour la validation de la cohérence lecture-modification-écriture

    • bindings : liste des liaisons de rôles

      • role : nom du rôle

      • members : liste des membres au format user:{userId}

  • Exemple de définition de politique

    import com.aliyun.odps.catalog.models.*;
    
    // Construct SetPolicyRequest
    Policy policy = new Policy();
    Binding binding = new Binding();
    // The role field requires the full resource path format: namespaces/{namespaceId}/roles/{roleName}
    binding.setRole("namespaces/{namespaceId}/roles/odps.admin");
    binding.setMembers(Arrays.asList("user:123456789"));
    policy.setBindings(Arrays.asList(binding));
    policy.setEtag("fetch_with_get_policy");
    SetPolicyRequest request = new SetPolicyRequest();
    request.setPolicy(policy);
    
    // Set table Policy
    client.setTablePolicy(table, request);

Modèles de données

Champs communs

Field

Type

Description

name

string

Nom complet de la resource REST, unique à l’échelle du domaine. Le SDK utilise ce nom pour construire les URL des requêtes REST. Il s’agit généralement d’un champ en sortie seule.

Types de données

Outre les types JSON standard, les marqueurs de type de données spéciaux suivants sont utilisés :

Data types

Description

enum

Type d’énumération sémantique, représenté sous forme de chaîne au format JSON

int64

Entier 64 bits, transmis sous forme de chaîne

Modèle de table

La table est l’une des ressources principales de CatalogAPI.

{
  "etag": "string",
  "name": "string",
  "projectId": "string",
  "schemaName": "string",
  "tableName": "string",
  "type": "enum(TableType)",
  "description": "string",
  "tableSchema": { "object(TableFieldSchema)" },
  "clustering": { "object(Clustering)" },
  "tableConstraints": { "object(TableConstraints)" },
  "partitionDefinition": { "object(PartitionDefinition)" },
  "tableFormatDefinition": { "object(TableFormatDefinition)" },
  "externalDataConfiguration": { "object(ExternalDataConfiguration)" },
  "maxLakeConfiguration": { "object(MaxLakeConfiguration)" },
  "externalCatalogTableOptions": { "object(ExternalCatalogTableOptions)" },
  "expirationOptions": { "object(ExpirationOptions)" },
  "createTime": "string (int64 format)",
  "lastModifiedTime": "string (int64 format)",
  "labels": { "map<string, string>" }
}

Cliquez pour afficher les détails des champs

Field

Type

Required

Description

etag

string

No

Utilisé pour valider la cohérence lors des opérations de lecture-modification-écriture

name

string

No

Chemin d’accès complet de la table, par exemple projects/{projectId}/schemas/{schemaName}/tables/{tableName}. Champ en sortie seule

projectId

string

Yes

ID du projet auquel appartient la table

schemaName

string

Condition

Nom du schéma auquel appartient la table. Obligatoire dans le modèle à trois niveaux ; ne doit pas être spécifié dans le modèle à deux niveaux

tableName

string

Yes

Nom de la table

type

enum(TableType)

No

Type de table. Valeurs valides : TABLE (table interne), EXTERNAL (table externe), VIEW (vue), MATERIALIZED_VIEW (vue matérialisée), SNAPSHOT (table snapshot)

description

string

No

Description de la table, équivalente au commentaire dans l’instruction DDL SQL

tableSchema

TableFieldSchema

No

Définition du schéma de colonnes de la table

clustering

Clustering

No

Définition de l’attribut de clustering. Disponible uniquement pour les tables clusterisées

tableConstraints

TableConstraints

No

Définition de la contrainte de clé primaire. Disponible uniquement pour les tables delta

partitionDefinition

PartitionDefinition

No

Définitions des colonnes de partition. Disponible uniquement pour les tables partitionnées

tableFormatDefinition

TableFormatDefinition

No

Disponible uniquement pour les tables internes. Le format de table standard est utilisé par défaut

externalDataConfiguration

ExternalDataConfiguration

No

Configuration de la table externe. Applicable uniquement aux tables externes

maxLakeConfiguration

MaxLakeConfiguration

No

Configuration de la table de lac géré

externalCatalogTableOptions

ExternalCatalogTableOptions

No

Informations sur le catalogue externe

expirationOptions

ExpirationOptions

No

Configuration d’expiration pour les données de la table et des partitions

createTime

string (int64)

No

Date de création de la table, en millisecondes. Champ en sortie seule

lastModifiedTime

string (int64)

No

Date de dernière modification de la table, en millisecondes. Champ en sortie seule

labels

map<string, string>

No

Libellés appliqués à la table

Modèle TableFieldSchema

Types de données pris en charge (FieldDataType) : TINYINT, SMALLINT, INT, BIGINT, BINARY, FLOAT, DOUBLE, DECIMAL, VARCHAR, CHAR, STRING, DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ, BOOLEAN, STRUCT, ARRAY, MAP

{
  "fieldName": "string",
  "sqlTypeDefinition": "string",
  "typeCategory": "enum(FieldDataType)",
  "mode": "enum(FieldMode)",
  "fields": [{ "object(TableFieldSchema)" }],
  "description": "string",
  "policyTags": { "object(PolicyTags)" },
  "maxLength": "string (int64 format)",
  "precision": "string (int64 format)",
  "scale": "string (int64 format)",
  "defaultValueExpression": "string"
}

Cliquez pour afficher les détails des champs

Field

Type

Description

fieldName

string

Nom de colonne (colonne de niveau supérieur) ou nom de champ struct. Absent du tableSchema au niveau de la table

sqlTypeDefinition

string

Champ en sortie seule. Définition sous forme de chaîne représentant le type de colonne dans les instructions DDL SQL. Affiché uniquement pour les colonnes de table

typeCategory

enum(FieldDataType)

Type de champ

mode

enum(FieldMode)

REQUIRED (ne peut pas être NULL) ou NULLABLE (peut être NULL)

fields

TableFieldSchema[]

Sous-champs d’un type STRUCT

description

string

Commentaire de colonne

policyTags

PolicyTags

Facultatif. Tag de politique associé à la colonne, utilisé pour le contrôle d’accès au niveau des colonnes et le masquage des données. L’absence de ce champ indique qu’aucun tag de politique n’est appliqué. Pour les types imbriqués, les tags de politique peuvent uniquement être appliqués aux nœuds feuilles. Les tags de politique ne peuvent pas être appliqués aux colonnes de partition

policyTags.names

string[]

Facultatif. Liste des noms de resource de tag de politique. Actuellement, chaque colonne prend en charge un seul tag de politique

maxLength

string (int64)

Longueur maximale pour les types CHAR/VARCHAR

precision

string (int64)

Précision pour le type DECIMAL

scale

string (int64)

Échelle pour le type DECIMAL

defaultValueExpression

string

Facultatif. Chaîne d’expression pour la valeur par défaut

Modèle de connexion

La connexion sert à configurer les informations d'accès aux sources de données externes, telles qu'OSS et OTS.

{
  "name": "string",
  "connectionName": "string",
  "description": "string",
  "creationTime": "string (int64 format)",
  "lastModifiedTime": "string (int64 format)",
  "connectionType": "enum(ConnectionType)",
  "cloudResource": { "object(CloudResourceOptions)" },
  "region": "string"
}

Cliquez pour afficher les détails des champs

Field

Type

Required

Description

name

string

No

Nom de resource globalement unique : namespaces/{namespace_ID}/connections/{connectionName}. Champ en sortie uniquement.

connectionName

string

Yes

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 32] octets

description

string

No

Facultatif. Maximum 1 Ko

creationTime

string (int64)

No

Heure de création de la connexion en millisecondes. Champ en sortie uniquement.

lastModifiedTime

string (int64)

No

Dernière heure de modification en millisecondes

connectionType

enum(ConnectionType)

Yes

Type de connexion. Valeurs valides : CLOUD_RESOURCE (type de cloud resource, tel qu'OSS et OTS)

cloudResource

CloudResourceOptions

Condition

Défini uniquement lorsque connectionType est CLOUD_RESOURCE

  • delegatedAccount

    Type STRING. Nom du compte délégué, enregistré automatiquement comme compte principal du créateur lors de la création. Champ en sortie uniquement.

  • ramRoleArn

    Type STRING, obligatoire. ARN du rôle RAM autorisé pour le service MaxCompute.

region

string

No

Région à laquelle cette connexion appartient. Champ en sortie uniquement

Modèle de rôle

Le rôle sert à définir des rôles personnalisés.

{
  "name": "string",
  "roleName": "string",
  "description": "string",
  "includedPermissions": ["string"],
  "etag": "string",
  "deleted": false
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Nom de resource globalement unique : namespaces/{namespace_ID}/roles/{roleName}. Champ en sortie uniquement

roleName

string

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets

description

string

Facultatif. Maximum 1 Ko

includedPermissions

string[]

Liste des permissions incluses dans le rôle

etag

string

Champ en sortie uniquement pour l'instant. Servira à l'avenir pour la cohérence lecture-modification-écriture

deleted

boolean

Champ en sortie uniquement. Indique si l'élément a été supprimé

Énumération RoleView

Valeurs d'énumération

Description

BASIC

Ne renvoie pas includedPermissions. Il s'agit de la valeur par défaut

FULL

Renvoie tous les champs

Modèle de taxonomie

La taxonomie sert à gérer le système de classification des balises de stratégie (Policy Tag).

{
  "name": "string",
  "taxonomyName": "string",
  "description": "string",
  "activatedPolicyTypes": ["enum(PolicyType)"],
  "policyTagCount": 0,
  "createTime": "string (int64 format)",
  "lastModifiedTime": "string (int64 format)"
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Champ en sortie uniquement. Format : namespaces/{namespace_ID}/taxonomies/{ID}, où ID est un identifiant unique attribué par le système

taxonomyName

string

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets

description

string

Facultatif. Maximum 2 000 octets

activatedPolicyTypes

PolicyType[]

Facultatif. Liste des types de stratégies activés sous cette taxonomie. La valeur par défaut est POLICY_TYPE_UNSPECIFIED

policyTagCount

integer

Champ en sortie uniquement. Nombre de balises de stratégie dans cette taxonomie

createTime

string (int64)

Champ en sortie uniquement. Horodatage de création de la taxonomie en millisecondes UTC

lastModifiedTime

string (int64)

Champ en sortie uniquement. Dernier horodatage de modification de la taxonomie en millisecondes UTC

Énumération PolicyType

Valeurs d'énumération

Description

POLICY_TYPE_UNSPECIFIED

Type non spécifié

FINE_GRAINED_ACCESS_CONTROL

Activer le contrôle d'accès au niveau des colonnes

Remarque

Lorsqu'une taxonomie spécifie explicitement FINE_GRAINED_ACCESS_CONTROL, ou que toute balise de stratégie sous la taxonomie dispose d'une stratégie de données configurée, toutes les balises de stratégie sous cette taxonomie sont considérées comme ayant le contrôle d'accès au niveau des colonnes activé.

Modèle PolicyTag

PolicyTag est une balise de stratégie associée à une taxonomie, utilisée pour mettre en œuvre le contrôle d'accès au niveau des colonnes.

{
  "name": "string",
  "policyTagName": "string",
  "description": "string",
  "parentPolicyTag": "string",
  "childPolicyTags": ["string"]
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Chemin complet de PolicyTag : namespaces/{namespace_ID}/taxonomies/{TID}/policyTags/{ID}, où ID est un identifiant unique attribué par le système

policyTagName

string

Unique au sein de la taxonomie parente. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets

description

string

Facultatif. Maximum 2 000 octets

parentPolicyTag

string

Nom du nœud parent. Une valeur vide indique le nœud racine. La valeur par défaut est vide

childPolicyTags

string[]

Champ en sortie uniquement. Liste des noms de nœuds enfants

Modèle DataPolicy

Le modèle DataPolicy sert à définir les règles de masquage des données.

{
  "name": "string",
  "dataPolicyName": "string",
  "policyTag": "string",
  "dataPolicyType": "enum(DataPolicyType)",
  "dataMaskingPolicy": { "object(DataMaskingPolicy)" }
}

Cliquez pour afficher les détails des champs

Champ

Type

Description

name

string

namespaces/{namespace_ID}/dataPolicies/{dataPolicyName}. Champ en lecture seule

dataPolicyName

string

Nom de la politique de données spécifié par l'utilisateur, unique au niveau du compte

policyTag

string

Nom complet de la ressource du tag de politique associé à cette politique de données

dataPolicyType

enum(DataPolicyType)

Actuellement, seul DATA_MASKING_POLICY (masquage des données au niveau des colonnes) est pris en charge

dataMaskingPolicy

DataMaskingPolicy

Règles de masquage définies dans cette politique de données

  • DataMaskingPolicy

    Champ

    Type

    Description

    predefinedExpression

    enum(PredefinedExpression)

    Type de stratégie de masquage prédéfinie

    parameters

    string[]

    Paramètres de la stratégie de masquage prédéfinie

  • Stratégies de masquage prédéfinies (PredefinedExpression)

    Valeurs d'énumération

    Description

    SHA256

    Hachage SHA256

    SHA512

    Hachage SHA512

    ALWAYS_NULL

    Renvoie toujours NULL

    DEFAULT_MASKING_VALUE

    Valeur de masquage par défaut

    DATE_YEAR

    Conserve uniquement l'année

    POINT_RESERVE

    Conserve la virgule décimale

    STRING_MASKED_BA

    Masquage de chaîne (avant)

    STRING_UNMASKED_BA

    Démasquage de chaîne (avant)

    MD5

    Hachage MD5

    SM3

    Hachage SM3

    REPLACE_RANDOM

    Remplacement aléatoire

    REPLACE_RANDOM_BA

    Remplacement aléatoire (avant)

    REPLACE_FIXED

    Remplacement par une valeur fixe

Modèle DataScan

Le modèle DataScan permet de configurer les tâches d'exploration des métadonnées.

{
  "name": "string",
  "scanName": "string",
  "type": "string",
  "creator": "string",
  "customerId": "string",
  "namespaceId": "string",
  "description": "string",
  "scanId": "string",
  "creationTime": 0,
  "lastModifiedTime": 0,
  "lastTriggeredTime": 0,
  "lastSuccessfulScheduleTime": 0,
  "lastTriggeredBy": "string",
  "schedulingStatus": "string",
  "source": { "object(DataScanSource)" },
  "target": { "object(DataScanTarget)" },
  "properties": { "object(DataScanProperties)" },
  "schedulerMode": "string",
  "schedulerInterval": "string",
  "scheduledCount": 0
}

Cliquez pour afficher les détails des champs

Champ

Type

Description

name

string

Nom de ressource globalement unique : namespaces/{namespaceID}/dataScans/{dataScanName}

scanName

string

Nom de la tâche d'exploration spécifié par l'utilisateur

type

string

Valeurs valides : TABLE_DISCOVERY (découverte de tables), SCHEMA_DISCOVERY (découverte de schémas)

creator

string

Créateur du dataScan

customerId

string

ID client

namespaceId

string

Espace de noms auquel appartient le dataScan

description

string

Description définie par l'utilisateur

scanId

string

ID d'analyse généré par le système. Champ d'affichage en lecture seule

creationTime

int64

Date de création, horodatage UTC

lastModifiedTime

int64

Date de la dernière modification, horodatage UTC

lastTriggeredTime

int64

Date du dernier déclenchement de la tâche d'exploration (heure de début de planification), horodatage UTC. La valeur par défaut est 0 si la tâche n'a jamais été déclenchée

lastSuccessfulScheduleTime

int64

Heure d'exécution du dernier DatascanJob réussi. La valeur par défaut est 0

lastTriggeredBy

string

Source ayant déclenché la planification actuelle : un utilisateur spécifique ou le planificateur

schedulingStatus

string

État de la planification. Valeurs valides : IDLE / IMMEDIATE / PENDING / SCHEDULING. L'état initial est IDLE. Définissez sur IMMEDIATE pour exécuter immédiatement après la création

source

DataScanSource

Source d'exploration et de découverte des métadonnées

target

DataScanTarget

Paramètres contrôlant la manière dont les résultats de la découverte sont écrits

properties

DataScanProperties

Paramètres optionnels pour la tâche d'exploration

schedulerMode

string

manual (déclenchement manuel) / periodic (déclenchement automatique périodique)

schedulerInterval

string

Lorsque schedulerMode est periodic, intervalle maximal entre deux tâches d'exploration. Plage valide : [1h-7d]

scheduledCount

int64

Nombre total de fois où ce dataScan a été planifié

  • DataScanSource

    Champ

    Type

    Description

    location

    string

    Adresse de l'emplacement. Prend en charge OSS, DLF et Holo

    connection

    string

    Nom de la connexion. Fournit l'identité et les informations réseau requises pour accéder à la source. Authentification nécessaire

    ignores

    string[]

    Chemins à ignorer. Prend en charge les expressions régulières

  • DataScanTarget

    Champ

    Type

    Description

    project

    string

    Nom du projet dans lequel les résultats sont écrits

    schema

    string

    Lorsque dataScan.type est table, schéma dans lequel les tables sont écrites

    namePrefix

    string

    Préfixe pour les noms de tables/schémas générés automatiquement par la tâche d'exploration, afin d'éviter les conflits de nommage

    properties

    string

    Attributs de table/schéma que les utilisateurs peuvent spécifier pour la sortie finale

  • DataScanProperties

    Champ

    Type

    Description

    formatFilter

    string

    AUTO/PARQUET/ORC/JSON/CSV. Explore uniquement les données au format spécifié. Si spécifié, les fichiers d'autres formats sont ignorés. AUTO active la détection automatique du format

    scanMode

    enum

    SAMPLE / TOTAL. La valeur par défaut est SAMPLE

    enableStats

    boolean

    Indique si les statistiques sont utilisées pour l'optimisation des requêtes

    options

    string

    Configurations optionnelles supplémentaires, telles que des options supplémentaires pour le format CSV

    pattern

    string

    Modèle de reconnaissance du chemin de partition, tel que {table}/{part1}={value1}/{part2}={value2}

    updatePolicy

    string

    Politique de gestion des modifications des métadonnées de table : APPEND_ONLY / OVERWRITE / IGNORE

    syncRemove

    boolean

    Indique s'il faut supprimer automatiquement les tables lorsqu'elles sont retirées de la source

    autoCommit

    boolean

    false indique que la tâche d'exploration produit uniquement des résultats sans valider le DDL

    inventoryLocation

    string

    Spécifie l'emplacement de stockage des journaux OSS Inventory, utilisé pour l'analyse incrémentielle

Model

Le modèle sert à gérer les métadonnées des modèles d'apprentissage automatique.

{
  "name": "string",
  "modelName": "string",
  "versionName": "string",
  "defaultVersion": "string",
  "createTime": "string",
  "updateTime": "string",
  "versionCreateTime": "string",
  "versionUpdateTime": "string",
  "description": "string",
  "versionDescription": "string",
  "expirationDays": 0,
  "versionExpirationDays": 0,
  "sourceType": "string",
  "modelType": "string",
  "labels": { "map<string, string>" },
  "transform": { "map<string, string>" },
  "path": "string",
  "options": { "map<string, string>" },
  "extraInfo": { "map<string, string>" },
  "versionExtraInfo": { "map<string, string>" },
  "trainingInfo": { "map<string, string>" },
  "inferenceParameters": { "map<string, string>" },
  "featureColumns": { "object(ModelFieldSchema)" },
  "tasks": ["string"]
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Chemin complet du modèle : projects/{projectId}/schemas/{schemaName}/models/{modelName}

modelName

string

Nom du modèle, unique au sein du schéma parent. Non sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets

versionName

string

Nom de la version, unique au sein du même modèle. Non sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets

defaultVersion

string

Nom de la version par défaut du modèle

createTime

string

Date de création du modèle en millisecondes

updateTime

string

Date de la dernière modification du modèle en millisecondes

versionCreateTime

string

Date de création de la version en millisecondes

versionUpdateTime

string

Date de la dernière modification de la version en millisecondes

description

string

Description du modèle, 1 Ko maximum

versionDescription

string

Description de la version, 1 Ko maximum

expirationDays

integer

Durée de vie en jours, calculée à partir de la date de dernière mise à jour du modèle

versionExpirationDays

integer

Durée de vie en jours, calculée à partir de la date de dernière mise à jour de la version

sourceType

string

Type de source du modèle. Ne peut pas être modifié après la création

modelType

string

Type de modèle. Ne peut pas être modifié après la création

labels

map<string, string>

Libellés du modèle

transform

map<string, string>

Informations de prétraitement de la version

path

string

Chemin vers les fichiers de modèle de la version

options

map<string, string>

Paramètres de la version

extraInfo

map<string, string>

Informations complémentaires sur le modèle

versionExtraInfo

map<string, string>

Informations complémentaires sur la version

trainingInfo

map<string, string>

Informations d'entraînement de la version

inferenceParameters

map<string, string>

Paramètres d'inférence de la version

featureColumns

ModelFieldSchema

Définition du schéma des colonnes de la version

tasks

string[]

Tous les types de tâches pris en charge par cette version

Contraintes du champ tasks

  • Pour les modèles LLM/MLLM, les valeurs valides incluent une ou plusieurs des options suivantes : text-generation, chat, sentence-embedding

  • Pour les modèles BOOSTED_TREE_CLASSIFIER, les valeurs valides sont [predict, predict-proba, feature-importance] (dans n'importe quel ordre)

  • Pour les modèles BOOSTED_TREE_REGRESSOR, les valeurs valides sont [predict, feature-importance] (dans n'importe quel ordre)

Schema model

{
  "name": "string",
  "schemaName": "string",
  "description": "string",
  "type": "enum(SchemaType)",
  "owner": "string",
  "externalSchemaConfiguration": { "object(ExternalSchemaConfiguration)" }
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Nom complet de la resource du schéma : projects/{projectId}/schemas/{schemaName}. En sortie uniquement

schemaName

string

Nom du schéma, unique au sein d'un projet

description

string

Facultatif. Description du schéma

type

enum(SchemaType)

Type de schéma : DEFAULT (type par défaut), EXTERNAL (externe, actuellement non pris en charge)

owner

string

Propriétaire du schéma

externalSchemaConfiguration

ExternalSchemaConfiguration

Facultatif. Disponible uniquement pour les schémas externes. Actuellement désactivé dans cette version

Project model

{
  "name": "string",
  "projectId": "string",
  "owner": "string",
  "description": "string",
  "createTime": "string (int64 format)",
  "lastModifiedTime": "string (int64 format)",
  "schemaEnabled": "boolean",
  "region": "string"
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Nom complet de la resource du projet : projects/{projectId}. En sortie uniquement

projectId

string

ID unique du projet

owner

string

Propriétaire du projet

description

string

Description du projet

createTime

string (int64)

Horodatage de création du projet en millisecondes UTC

lastModifiedTime

string (int64)

Horodatage de la dernière modification du projet en millisecondes UTC

schemaEnabled

boolean

Indique si le modèle à trois niveaux est activé pour le projet

region

string

Région à laquelle appartient le projet

Partition model

{
  "spec": "string"
}

Field

Type

Description

spec

string

Spécification de partition. Exemple de format : bu=tt/ds=20250515

Search model

{
  "name": "string",
  "displayName": "string",
  "type": "string",
  "aspects": { "map<string, string>" },
  "createTime": "string",
  "lastModifiedTime": "string",
  "description": "string"
}

Cliquez pour afficher les détails des champs

Field

Type

Description

name

string

Chemin complet de l'entité, par exemple projects/{projectId}/schemas/{schemaName}/tables/{tableName}

displayName

string

Nom de l'entité

type

string

Type d'entité, par exemple TABLE, RESOURCE, SCHEMA

aspects

map<string, string>

Informations complémentaires sur l'entité

createTime

string

Date de création de l'entité en millisecondes

lastModifiedTime

string

Date de la dernière modification de l'entité en millisecondes

description

string

Description de l'entité

Référence API

Remarques générales

Préfixe d'URL : Toutes les URL d'API de cette rubrique utilisent le préfixe suivant :/api/catalog/v1alpha/.

Important

Ce préfixe n'est pas répété dans les descriptions individuelles des API.

Gestion des erreurs

Code d'état HTTP

Raison

Description

400

InvalidArgument

Entrée de requête non valide

403

AccessDenied

Aucune autorisation pour effectuer cette opération

404

NotFound

L'objet sur lequel l'opération doit être effectuée n'existe pas

409

AlreadyExists

L'objet à créer existe déjà

429

RateLimitExceeded

Taux de requêtes trop élevé. Limitation de débit déclenchée

500

InternalError

Erreur interne du serveur

API Table

Créer une table

Créez une nouvelle table.

  • Signature de la méthode

    Table createTable(Table table)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table contenant la définition complète de la table

  • Réponse

    Renvoie l'objet Table créé.

  • Exemple d'utilisation

    // Construct table
    Table table = new Table();
    table.setProjectId("my_project");
    table.setSchemaName("default");
    table.setTableName("my_table");
    table.setDescription("This is an example table");
    table.setType("TABLE");
    
    // Set table schema
    TableFieldSchema field = new TableFieldSchema();
    field.setFieldName("id");
    field.setTypeCategory("BIGINT");
    field.setMode("REQUIRED");
    
    TableFieldSchema nameField = new TableFieldSchema();
    nameField.setFieldName("name");
    nameField.setTypeCategory("STRING");
    nameField.setMode("NULLABLE");
    
    TableFieldSchema schema = new TableFieldSchema();
    schema.setFields(Arrays.asList(field, nameField));
    table.setTableSchema(schema);
    
    // Create table
    Table createdTable = client.createTable(table);
    System.out.println("Created table: " + createdTable.getName());

Obtenir une table

Obtenez des informations détaillées sur une table spécifiée.

  • Signature de la méthode

    Table getTable(Table table)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table contenant projectId, schemaName et tableName

  • Réponse

    Renvoie un objet Table.

  • Exemple d'utilisation

    Table query = new Table();
    query.setProjectId("my_project");
    query.setSchemaName("default");
    query.setTableName("my_table");
    
    Table result = client.getTable(query);
    System.out.println("Table type: " + result.getType());
    System.out.println("Description: " + result.getDescription());

Mettre à jour une table

Mettez à jour les attributs d'une table spécifiée.

  • Signature de la méthode

    Table updateTable(Table table)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table contenant les mises à jour

  • Réponse

    Renvoie l'objet Table mis à jour.

  • Exemple d'utilisation

    Table table = client.getTable(query);
    table.setDescription("Updated description");
    
    Table updated = client.updateTable(table);

Supprimer une table

Supprimez une table spécifiée.

  • Signature de la méthode

    HttpResponse deleteTable(Table table)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table contenant projectId, schemaName et tableName

  • Réponse

    Renvoie une HttpResponse vide en cas de succès.

  • Exemple d'utilisation

    HttpResponse response = client.deleteTable(table);
    System.out.println("Status code: " + response.getStatusCode());

Lister les tables

Listez toutes les tables d'un schéma spécifié.

  • Signature de la méthode

    ListTablesResponse listTables(String projectId, String schemaName, Integer pageSize, String pageToken)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    projectId

    string

    Oui

    ID du projet

    schemaName

    string

    Oui

    Nom du schéma

    pageSize

    integer

    Non

    Taille de la page. La valeur par défaut est 100, le maximum est 1000

    pageToken

    string

    Non

    Jeton de pagination. La valeur par défaut est vide

  • Réponse

    {
      "tables": [Table],
      "nextPageToken": "string"
    }
  • Exemple d'utilisation

    ListTablesResponse response = client.listTables("my_project", "default", 100, "");
    
    // Iterate through all pages
    while (response.getTables() != null && !response.getTables().isEmpty()) {
        for (Table t : response.getTables()) {
            System.out.println(t.getTableName());
        }
        
        if (response.getNextPageToken() == null || response.getNextPageToken().isEmpty()) {
            break;
        }
        response = client.listTables("my_project", "default", 100, response.getNextPageToken());
    }

Définir la politique d'accès d'une table

Définissez la politique d'accès d'une table.

  • Signature de la méthode

    Policy setTablePolicy(Table table, SetPolicyRequest request)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table

    request

    SetPolicyRequest

    Oui

    Requête de politique

  • Réponse

    Renvoie l'objet Policy mis à jour.

Obtenir la politique d'accès d'une table

Obtenez la politique d'accès d'une table.

  • Signature de la méthode

    Policy getTablePolicy(Table table)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table

  • Réponse

    Renvoie l'objet Policy de la table.

Obtenir le DataToken d'une table

Obtenez un jeton d'accès temporaire pour une table spécifiée.

  • Signature de la méthode

    DataToken getDataToken(Table table, Integer duration)
  • Paramètres de requête

    Paramètre

    Type

    Obligatoire

    Description

    table

    Table

    Oui

    Objet Table

    duration

    integer

    Non

    Durée de validité du jeton (secondes)

  • Réponse

    {
      "version": "string",
      "type": "string",
      "value": "string",
      "expiration": "string"
    }
  • Description des champs DataToken

    Champ

    Type

    Description

    version

    string

    Version du format. Actuellement V1

    type

    string

    Type. Seule la valeur STS est actuellement prise en charge

    value

    string

    Contenu du jeton, encodé en base64

    expiration

    string

    Date d'expiration

API Partition

Lister les partitions

Liste toutes les partitions d'une table spécifiée.

  • Signature de la méthode

    ListPartitionsResponse listPartitions(
        String projectId, 
        String schemaName, 
        String tableName, 
        Integer pageSize, 
        String pageToken,
        String query,
        String view
    )
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    projectId

    string

    Yes

    ID du projet

    schemaName

    string

    Yes

    Nom du schéma

    tableName

    string

    Yes

    Nom de la table

    pageSize

    integer

    No

    Taille de la page. La valeur par défaut est 100, le maximum est 1000

    pageToken

    string

    No

    Jeton de pagination. La valeur par défaut est vide

    query

    string

    No

    Condition de recherche de partition, par exemple partition_name:part

    view

    string

    No

    Actuellement, seule la valeur BASIC est prise en charge

  • Réponse

    {
      "partitions": [Partition],
      "nextPageToken": "string"
    }

API Connection

Créer une connexion

Créez une nouvelle connexion à une source de données externe.

  • Signature de la méthode

    Connection createConnection(String namespace, Connection connection)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace (UID du compte principal)

    connection

    Connection

    Yes

    Objet Connection

  • Réponse

    Renvoie l'objet Connection créé.

  • Exemple d'utilisation

    // Construct Connection
    Connection conn = new Connection();
    conn.setConnectionName("my_oss_connection");
    conn.setDescription("Connection for accessing OSS");
    conn.setConnectionType("CLOUD_RESOURCE");
    
    CloudResourceOptions options = new CloudResourceOptions();
    options.setRamRoleArn("acs:ram::123456789:role/MaxComputeOSSRole");
    conn.setCloudResource(options);
    
    // Create connection
    Connection created = client.createConnection("123456789", conn);

Lister les connexions

Liste toutes les connexions dans un namespace spécifié.

  • Signature de la méthode

    ListConnectionsResponse listConnections(String namespace, Integer pageSize, String pageToken)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    pageSize

    integer

    No

    Taille de la page. La valeur par défaut est 100, le maximum est 1000

    pageToken

    string

    No

    Jeton de pagination. La valeur par défaut est vide

  • Réponse

    {
      "connections": [Connection],
      "nextPageToken": "string"
    }

Obtenir une connexion

Obtenez des informations détaillées sur une connexion spécifiée.

  • Signature de la méthode

    Connection getConnection(String namespace, String connectionName)

Mettre à jour une connexion

Mettez à jour les attributs d'une connexion spécifiée.

  • Signature de la méthode

    Connection updateConnection(String namespace, String connectionName, Connection connection, String updateMask)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    connectionName

    string

    Yes

    Nom de la connexion

    connection

    Connection

    Yes

    Objet Connection contenant les mises à jour

    updateMask

    string

    Yes

    Spécifiez les champs à mettre à jour. Actuellement, seul le champ description est pris en charge

  • Réponse

    Renvoie l'objet Connection mis à jour.

  • Exemple d'utilisation

    Connection conn = new Connection();
    conn.setConnectionName("my_oss_connection");
    conn.setDescription("Updated description");
    
    Connection updated = client.updateConnection("123456789", "my_oss_connection", conn, "description");

Supprimer une connexion

Supprimez une connexion spécifiée.

  • Signature de la méthode

    HttpResponse deleteConnection(String namespace, String connectionName)

Définir la politique de connexion

Définissez la politique d'accès d'une connexion.

  • Signature de la méthode

    Policy setConnectionPolicy(String namespace, String connectionName, SetPolicyRequest request)

Obtenir la politique de connexion

Obtenez la politique d'accès d'une connexion.

  • Signature de la méthode

    Policy getConnectionPolicy(String namespace, String connectionName)

API Role

Créer un rôle

Créez un rôle personnalisé.

  • Signature de la méthode

    Role createRole(String namespace, Role role)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    role

    Role

    Yes

    Objet Role

  • Réponse

    Renvoie l'objet Role créé.

  • Exemple d'utilisation

    Role role = new Role();
    role.setRoleName("my_custom_role");
    role.setDescription("Custom role");
    role.setIncludedPermissions(Arrays.asList("odps:CreateTable", "odps:ListTable"));
    
    Role created = client.createRole("123456789", role);

Lister les rôles

Liste tous les rôles dans un namespace spécifié.

  • Signature de la méthode

    ListRolesResponse listRoles(
        String namespace, 
        Integer pageSize, 
        String pageToken, 
        String view, 
        Boolean showDeleted
    )
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    pageSize

    integer

    No

    Taille de la page. La valeur par défaut est 100, le maximum est 1000

    pageToken

    string

    No

    Jeton de pagination. La valeur par défaut est vide

    view

    enum(RoleView)

    No

    La valeur par défaut est BASIC. Lorsqu'elle est définie sur FULL, tous les champs sont renvoyés

    showDeleted

    boolean

    No

    Indique s'il faut inclure les rôles supprimés. La valeur par défaut est false

  • Réponse

    {
      "roles": [Role],
      "nextPageToken": "string"
    }

Obtenir un rôle

Obtenez des informations détaillées sur un rôle spécifié.

  • Signature de la méthode

    Role getRole(String namespace, String roleName)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    roleName

    string

    Yes

    Nom du rôle

Update role

Met à jour les attributs d'un rôle spécifié.

  • Method signature

    Role updateRole(String namespace, String roleName, Role role, String updateMask)
  • Request parameters

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    roleName

    string

    Yes

    Nom du rôle

    role

    Role

    Yes

    Objet Role contenant les mises à jour

    updateMask

    string

    Yes

    Spécifiez les champs à mettre à jour, par exemple "description, includedPermissions"

Delete role

Supprime un rôle personnalisé spécifié.

  • Method signature

    HttpResponse deleteRole(String namespace, String roleName)
Important

Après la suppression d'un rôle, les modifications suivantes prennent effet immédiatement :

  • Le rôle ne peut plus être associé à une Policy.

  • Les Policies déjà associées à ce rôle restent dans un état lié, mais n'ont aucun effet.

  • L'opération List roles ne liste pas les rôles supprimés par défaut. Après la suppression d'un rôle, celui-ci compte toujours dans la limite totale et reste dans un état supprimé pendant sept jours. Au bout de sept jours, le rôle est définitivement supprimé, toutes les liaisons de ressources avec ce rôle sont retirées et il ne compte plus dans la limite totale.

Set role Policy

Définit la politique d'accès d'un rôle.

  • Method signature

    Policy setRolePolicy(String namespace, String roleName, SetPolicyRequest request)

Get role Policy

Récupère la politique d'accès d'un rôle.

  • Method signature

    Policy getRolePolicy(String namespace, String roleName)

Taxonomy API

Create Taxonomy

Crée une nouvelle classification de tags de politique.

  • Method signature

    Taxonomy createTaxonomy(String namespace, Taxonomy taxonomy)
  • Request parameters

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    taxonomy

    Taxonomy

    Yes

    Objet Taxonomy

  • Response

    Renvoie l'objet Taxonomy créé.

  • Usage example

    Taxonomy taxonomy = new Taxonomy();
    taxonomy.setTaxonomyName("sensitive_data");
    taxonomy.setDescription("Sensitive data classification");
    taxonomy.setActivatedPolicyTypes(Arrays.asList("FINE_GRAINED_ACCESS_CONTROL"));
    
    Taxonomy created = client.createTaxonomy("123456789", taxonomy);

List Taxonomy

Liste toutes les Taxonomies dans un namespace spécifié.

  • Method signature

    ListTaxonomiesResponse listTaxonomies(String namespace, Integer pageSize, String pageToken)

Get Taxonomy

Obtient des informations détaillées sur une Taxonomy spécifiée.

  • Method signature

    Taxonomy getTaxonomy(String namespace, String taxonomyId)

Update Taxonomy

Met à jour les attributs d'une Taxonomy spécifiée.

  • Method signature

    Taxonomy updateTaxonomy(String namespace, String taxonomyId, Taxonomy taxonomy, String updateMask)
  • Request parameters

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    taxonomyId

    string

    Yes

    ID de la Taxonomy

    taxonomy

    Taxonomy

    Yes

    Objet Taxonomy contenant les mises à jour

    updateMask

    string

    Yes

    Spécifiez les champs à mettre à jour, par exemple "description, activatedPolicyTypes"

Delete Taxonomy

Supprime en cascade tous les tags de politique, les politiques de données configurées et les relations de liaison de colonnes sous la taxonomy.

  • Method signature

    HttpResponse deleteTaxonomy(String namespace, String taxonomyId)

Set Taxonomy Policy

Définit la politique d'accès d'une Taxonomy.

  • Method signature

    Policy setTaxonomyPolicy(String namespace, String taxonomyId, SetPolicyRequest request)

Get Taxonomy Policy

Récupère la politique d'accès d'une Taxonomy.

  • Method signature

    Policy getTaxonomyPolicy(String namespace, String taxonomyId)

PolicyTag API

Create PolicyTag

Crée un nouveau tag de politique sous une Taxonomy spécifiée.

  • Method signature

    PolicyTag createPolicyTag(String namespace, String taxonomyId, PolicyTag policyTag)
  • Request parameters

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    taxonomyId

    string

    Yes

    ID de la Taxonomy

    policyTag

    PolicyTag

    Yes

    Objet PolicyTag

  • Response

    Renvoie l'objet PolicyTag créé.

  • Usage example

    PolicyTag tag = new PolicyTag();
    tag.setPolicyTagName("phone_number");
    tag.setDescription("Phone number masking tag");
    
    PolicyTag created = client.createPolicyTag("123456789", "taxonomy_id_123", tag);

List PolicyTag

Liste tous les PolicyTags sous une Taxonomy spécifiée.

  • Method signature

    ListPolicyTagsResponse listPolicyTags(
        String namespace, 
        String taxonomyId, 
        Integer pageSize, 
        String pageToken
    )

Get PolicyTag

Obtient des informations détaillées sur un PolicyTag spécifié.

  • Method signature

    PolicyTag getPolicyTag(String namespace, String taxonomyId, String policyTagId)

Update PolicyTag

Met à jour les attributs d'un PolicyTag spécifié.

  • Method signature

    PolicyTag updatePolicyTag(
        String namespace, 
        String taxonomyId, 
        String policyTagId, 
        PolicyTag policyTag, 
        String updateMask
    )
  • Request parameters

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    taxonomyId

    string

    Yes

    ID de la Taxonomy

    policyTagId

    string

    Yes

    ID du PolicyTag

    policyTag

    PolicyTag

    Yes

    Objet PolicyTag contenant les mises à jour

    updateMask

    string

    Yes

    Spécifiez les champs à mettre à jour. Actuellement, seul le champ description est pris en charge

Delete PolicyTag

Supprime un tag de politique et supprime de manière récursive : tous les nœuds enfants du tag de politique, toutes les politiques de données configurées sur le tag de politique (y compris les nœuds enfants) et les relations de liaison de colonnes du tag de politique sur les tables (y compris les nœuds enfants).

  • Method signature

    HttpResponse deletePolicyTag(String namespace, String taxonomyId, String policyTagId)

Set PolicyTag Policy

Définit la politique d'accès d'un PolicyTag.

  • Method signature

    Policy setPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId, SetPolicyRequest request)

Obtenir la politique PolicyTag

Récupérez la politique d'accès d'un PolicyTag.

  • Signature de la méthode

    Policy getPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId)

API DataPolicy

Créer une DataPolicy

Créez une nouvelle politique de données (règle de masquage).

  • Signature de la méthode

    DataPolicy createDataPolicy(String namespace, DataPolicy dataPolicy)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    dataPolicy

    DataPolicy

    Yes

    Objet DataPolicy

  • Réponse

    Renvoie l'objet DataPolicy créé.

  • Exemple d'utilisation

    // Construct masking rule
    DataMaskingPolicy maskingPolicy = new DataMaskingPolicy();
    maskingPolicy.setPredefinedExpression("STRING_MASKED_BA");
    
    DataPolicy policy = new DataPolicy();
    policy.setDataPolicyName("phone_masking");
    policy.setPolicyTag("namespaces/123456789/taxonomies/tid_123/policyTags/ptid_456");
    policy.setDataPolicyType("DATA_MASKING_POLICY");
    policy.setDataMaskingPolicy(maskingPolicy);
    
    DataPolicy created = client.createDataPolicy("123456789", policy);

Lister les DataPolicies

Listez toutes les DataPolicies d'un namespace spécifié.

  • Signature de la méthode

    ListDataPoliciesResponse listDataPolicies(String namespace, Integer pageSize, String pageToken)

Obtenir une DataPolicy

Récupérez les informations détaillées d'une DataPolicy spécifiée.

  • Signature de la méthode

    DataPolicy getDataPolicy(String namespace, String dataPolicyName)

Supprimer une DataPolicy

Supprimez une DataPolicy spécifiée.

  • Signature de la méthode

    HttpResponse deleteDataPolicy(String namespace, String dataPolicyName)

Définir la politique DataPolicy

Définissez la politique d'accès d'une DataPolicy.

  • Signature de la méthode

    Policy setDataPolicyPolicy(String namespace, String dataPolicyName, SetPolicyRequest request)

Obtenir la politique DataPolicy

Récupérez la politique d'accès d'une DataPolicy.

  • Signature de la méthode

    Policy getDataPolicyPolicy(String namespace, String dataPolicyName)

API DataScan

Créer un DataScan

Créez une nouvelle tâche d'exploration des métadonnées.

  • Signature de la méthode

    DataScan createDataScan(String namespace, DataScan dataScan)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    namespace

    string

    Yes

    ID du namespace

    dataScan

    DataScan

    Yes

    Objet DataScan

  • Réponse

    Renvoie l'objet DataScan créé.

  • Exemple d'utilisation

    // Construct crawling task
    DataScanSource source = new DataScanSource();
    source.setLocation("oss://my-bucket/my-path/");
    source.setConnection("my_oss_connection");
    
    DataScanTarget target = new DataScanTarget();
    target.setProject("my_project");
    target.setSchema("default");
    target.setNamePrefix("auto_");
    
    DataScanProperties properties = new DataScanProperties();
    properties.setFormatFilter("AUTO");
    properties.setScanMode("SAMPLE");
    properties.setAutoCommit(true);
    
    DataScan dataScan = new DataScan();
    dataScan.setScanName("my_oss_scan");
    dataScan.setType("TABLE_DISCOVERY");
    dataScan.setDescription("Crawl OSS metadata");
    dataScan.setSource(source);
    dataScan.setTarget(target);
    dataScan.setProperties(properties);
    dataScan.setSchedulerMode("MANUAL");
    
    DataScan created = client.createDataScan("123456789", dataScan);

Lister les DataScans

Listez tous les DataScans d'un namespace spécifié.

  • Signature de la méthode

    ListDataScansResponse listDataScans(String namespace, Integer pageSize, String pageToken)

Obtenir un DataScan

Récupérez les informations détaillées d'un DataScan spécifié.

  • Signature de la méthode

    DataScan getDataScan(String namespace, String dataScanName)

Mettre à jour un DataScan

Mettez à jour les attributs d'un DataScan spécifié.

  • Signature de la méthode

    DataScan updateDataScan(String namespace, DataScan dataScan, String updateMask)

Supprimer un DataScan

Supprimez un DataScan spécifié.

  • Signature de la méthode

    HttpResponse deleteDataScan(String namespace, String dataScanName)

Déclencher un DataScan

Déclenchez manuellement une tâche d'exploration DataScan.

  • Signature de la méthode

    HttpResponse triggerDataScan(String namespace, String dataScanName)
  • Exemple d'utilisation

    HttpResponse response = client.triggerDataScan("123456789", "my_oss_scan");
    System.out.println("Triggered: " + response.getStatusCode());

Lister les jobs DataScan

Listez l'historique des jobs d'exploration d'un DataScan spécifié.

  • Signature de la méthode

    ListDataScanJobsResponse listDataScanJobs(
        String namespace, 
        String dataScanName, 
        Integer pageSize, 
        String pageToken
    )
  • Réponse

    {
      "scanJobs": [ScanJob],
      "nextPageToken": "string"
    }
  • Modèle ScanJob

    Field

    Type

    Description

    jobId

    string

    ID du job

    namespaceId

    string

    Namespace auquel appartient le job

    dataScanId

    string

    ID dataScan généré par le système

    dataScanName

    string

    Nom de la tâche d'exploration parente

    triggeredBy

    string

    Personne ayant déclenché ce job d'exploration. scheduler pour les déclenchements planifiés

    startTime

    int64

    Heure de début du job d'exploration, horodatage UTC

    endTime

    int64

    Heure de fin du job d'exploration, horodatage UTC

    status

    string

    Statut du job d'exploration : Created/Running/Terminated/Failed

    statusDetail

    string

    Détails du statut du job d'exploration, tels que les messages d'erreur

    ddl

    string

    Informations DDL renvoyées par le job d'exploration qui doivent être validées

    stats

    string

    Informations statistiques renvoyées par le job d'exploration au format JSON

API Model

Créer un modèle

Créez un nouveau modèle d'apprentissage automatique.

  • Signature de la méthode

    Model createModel(String projectId, String schemaName, Model model)
  • Paramètres de la requête

    Parameter

    Type

    Required

    Description

    projectId

    string

    Yes

    ID du projet

    schemaName

    string

    Yes

    Nom du schéma

    model

    Model

    Yes

    Objet Model

  • Réponse

    Renvoie l'objet Model créé.

  • Exemple d'utilisation

    Model model = new Model();
    model.setModelName("my_llm_model");
    model.setVersionName("v1");
    model.setDefaultVersion("v1");
    model.setDescription("My large language model");
    model.setSourceType("IMPORT");
    model.setModelType("LLM");
    model.setPath("oss://my-bucket/models/my_llm/");
    model.setTasks(Arrays.asList("text-generation", "chat"));
    
    Model created = client.createModel("my_project", "default", model);

Lister les modèles

Listez tous les modèles d'un schéma spécifié.

  • Signature de la méthode

    ListModelsResponse listModels(
        String projectId, 
        String schemaName, 
        Integer pageSize, 
        String pageToken
    )

Obtenir un modèle

Récupérez les informations détaillées concernant un modèle spécifié.

  • Signature de la méthode

    Model getModel(String projectId, String schemaName, String modelName, String versionName)
  • Paramètres de requête

    Parameter

    Type

    Required

    Description

    projectId

    string

    Yes

    ID du projet

    schemaName

    string

    Yes

    Nom du schéma

    modelName

    string

    Yes

    Nom du modèle

    versionName

    string

    No

    Nom de la version. Si ce paramètre n'est pas spécifié, les métadonnées du modèle (sans version) sont interrogées.

Mettre à jour un modèle

Mettez à jour les attributs d'un modèle spécifié.

  • Signature de la méthode

    Model updateModel(
        String projectId, 
        String schemaName, 
        String modelName, 
        Model model, 
        String updateMask, 
        String versionName
    )

Supprimer un modèle

Supprimez un modèle spécifié (y compris toutes ses versions).

  • Signature de la méthode

    HttpResponse deleteModel(String projectId, String schemaName, String modelName)

Créer une version de modèle

Créez une nouvelle version pour un modèle spécifié.

  • Signature de la méthode

    Model createModelVersion(String projectId, String schemaName, String modelName, Model model)
  • Exemple d'utilisation

    Model version = new Model();
    version.setModelName("my_llm_model");
    version.setVersionName("v2");
    version.setVersionDescription("Updated model version");
    version.setPath("oss://my-bucket/models/my_llm_v2/");
    version.setTasks(Arrays.asList("text-generation", "chat"));
    
    Model createdVersion = client.createModelVersion("my_project", "default", "my_llm_model", version);

Supprimer une version de modèle

Supprimez une version de modèle spécifiée.

  • Signature de la méthode

    HttpResponse deleteModelVersion(
        String projectId, 
        String schemaName, 
        String modelName, 
        String versionName
    )

Lister les versions de modèle

Listez toutes les versions d'un modèle spécifié.

  • Signature de la méthode

    ListModelVersionsResponse listModelVersions(
        String projectId, 
        String schemaName, 
        String modelName, 
        Integer pageSize, 
        String pageToken
    )

Définir la politique d'un modèle

Définissez la politique d'accès d'un modèle.

  • Signature de la méthode

    Policy setModelPolicy(String projectId, String schemaName, String modelName, SetPolicyRequest request)

Obtenir la politique d'un modèle

Récupérez la politique d'accès d'un modèle.

  • Signature de la méthode

    Policy getModelPolicy(String projectId, String schemaName, String modelName)

API Project

Obtenir un projet

Récupérez les informations détaillées concernant un projet spécifié.

  • Signature de la méthode

    Project getProject(String projectId)
  • Exemple d'utilisation

    Project project = client.getProject("my_project");
    System.out.println("Project owner: " + project.getOwner());
    System.out.println("Schema enabled: " + project.getSchemaEnabled());
    System.out.println("Region: " + project.getRegion());

API Schema

Créer un schéma

Créez un nouveau schéma dans un projet spécifié.

  • Signature de la méthode

    Schema createSchema(String projectId, Schema schema)
  • Paramètres de requête

    Parameter

    Type

    Required

    Description

    projectId

    string

    Yes

    ID du projet

    schema

    Schema

    Yes

    Objet Schema

  • Réponse

    Renvoie l'objet Schema créé.

  • Exemple d'utilisation

    Schema schema = new Schema();
    schema.setSchemaName("my_schema");
    schema.setDescription("My custom schema");
    
    Schema created = client.createSchema("my_project", schema);

Lister les schémas

Listez tous les schémas d'un projet spécifié.

  • Signature de la méthode

    ListSchemasResponse listSchemas(String projectId, Integer pageSize, String pageToken)

Obtenir un schéma

Récupérez les informations détaillées concernant un schéma spécifié.

  • Signature de la méthode

    Schema getSchema(String projectId, String schemaName)

Mettre à jour un schéma

Mettez à jour les attributs d'un schéma spécifié.

  • Signature de la méthode

    Schema updateSchema(String projectId, String schemaName, String updateMask, Schema schema)
  • Paramètres de requête

    Parameter

    Type

    Required

    Description

    projectId

    string

    Yes

    ID du projet

    schemaName

    string

    Yes

    Nom du schéma

    updateMask

    string

    Yes

    Spécifiez les champs à mettre à jour. Actuellement, seuls les champs description et owner sont pris en charge, et un seul champ peut être mis à jour à la fois.

    schema

    Schema

    Yes

    Objet Schema contenant les mises à jour

Supprimer un schéma

Supprimez un schéma spécifié.

  • Signature de la méthode

    HttpResponse deleteSchema(String projectId, String schemaName)

Définir la politique d'un schéma

Définissez la politique d'accès d'un schéma.

  • Signature de la méthode

    Policy setSchemaPolicy(String projectId, String schemaName, SetPolicyRequest request)

Obtenir la politique d'un schéma

Récupérez la politique d'accès d'un schéma.

  • Signature de la méthode

    Policy getSchemaPolicy(String projectId, String schemaName)

API de recherche

Recherche d'entités

Recherchez diverses entités au sein d'un namespace spécifié.

  • Signature de la méthode

    SearchResponse search(
        String namespaceId, 
        String query, 
        Integer pageSize, 
        String pageToken, 
        String orderBy
    )
  • Paramètres de requête

    Parameter

    Type

    Required

    Description

    namespaceId

    string

    Yes

    ID du compte principal. La recherche est effectuée dans le périmètre de ce compte principal.

    query

    string

    Yes

    Chaîne de requête composée d'une ou plusieurs conditions de recherche séparées par des virgules.

    pageSize

    integer

    No

    Nombre de résultats par page. Doit être > 0, maximum 100.

    pageToken

    string

    No

    Jeton de pagination.

    orderBy

    string

    No

    Ordre de tri des résultats.

  • Syntaxe de requête

    • Liste des conditions de requête :

      Query condition

      Description

      name:foo

      Fait correspondre « foo » en tant que sous-chaîne avec le nom de l'entité.

      description:bar

      Fait correspondre « bar » en tant que sous-chaîne avec la description de l'entité.

      type=TABLE

      Obligatoire. Fait correspondre les entités d'un type spécifique. Prend actuellement en charge TABLE, RESOURCE et SCHEMA.

      project=proj

      Recherche les entités uniquement dans un projet spécifié. L'appelant doit disposer de l'autorisation SearchProject pour le projet.

      project=(proj1

      proj2

      proj3)

      Recherche les entités dans plusieurs projets (jusqu'à 512). L'appelant doit disposer de l'autorisation SearchProject pour tous les projets spécifiés.

      region=region_id

      Recherche les entités dans les projets d'une région spécifiée.

      • Les conditions project=proj et project=(proj1|proj2|proj3) ne peuvent pas être utilisées simultanément.

      • La condition region=region_id ne peut pas être utilisée conjointement avec la condition de requête project.

  • Ordre de tri (orderBy)

    Valid values

    Description

    default

    Ordre de stockage interne (par défaut).

    create_time asc

    Date de création croissante.

    create_time desc

    Date de création décroissante.

    last_modified_time asc

    Dernière date de modification croissante.

    last_modified_time desc

    Dernière date de modification décroissante.

  • Réponse

    {
      "entries": [SearchResultEntry],
      "nextPageToken": "string"
    }
  • Exemple d'utilisation

    // Search all tables in a specified project
    SearchResponse response = client.search(
        "123456789",                            // namespaceId
        "type=TABLE,project=my_project",        // query
        50,                                     // pageSize
        "",                                     // pageToken
        "last_modified_time desc"               // orderBy
    );
    
    if (response.getEntries() != null) {
        for (SearchResultEntry entry : response.getEntries()) {
            System.out.println("Name: " + entry.getDisplayName());
            System.out.println("Type: " + entry.getType());
            System.out.println("Path: " + entry.getName());
        }
    }

Limites d'utilisation

Limites de débit

Les limites de débit sont appliquées au niveau du compte principal. Chaque méthode possède sa propre limite de débit, qui varie selon la catégorie de requête.

Limit

Value

Méthodes Get et GetPolicy

1 500 requêtes / 15 secondes

Méthodes List, Create, Update, Delete et SetPolicy

150 requêtes / 15 secondes

GetProject, ListTables, ListPartitions view=StorageDetail/FULL

15 requêtes / 15 secondes

Limites de capacité

Limit

Value

Nombre de rôles personnalisés par compte principal

300

Nombre d'autorisations par rôle

3 000

Nombre de mandataires par politique Allow

1 500

Taille totale d'un seul rôle personnalisé (y compris la description, roleName, etc.)

64 Ko

Limites des tags de politique

Limit

Value

Nombre de tags de politique liés à une seule colonne dans une seule table

1

Nombre de taxonomies par compte

40

Nombre de tags de politique par taxonomie

100

Profondeur de l'arborescence des tags de politique

5

Nombre de politiques de données par tag

8

Limites de pagination

Parameter

Default value

Maximum value

pageSize

100

1 000 (100 pour certaines API)

Conventions de dénomination

Conventions de dénomination des connexions

Field

Convention

connectionName

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 32] octets.

Conventions de dénomination des rôles

Field

Convention

roleName

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets.

Conventions de dénomination des taxonomies

Field

Convention

taxonomyName

Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets.

Conventions de dénomination des PolicyTag

Field

Convention

policyTagName

Unique au sein de la taxonomie parente. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets.

Conventions de dénomination des DataPolicy

Field

Convention

dataPolicyName

Unique au niveau du compte.

Conventions de dénomination des modèles

Field

Convention

modelName

Unique au sein du schéma parent. Insensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets.

versionName

Unique au sein du même modèle. Insensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets.

FAQ

Qu'est-ce qu'un ID de namespace ?

L'ID de namespace correspond à l'UID du compte principal Alibaba Cloud. Lors de l'appel aux API au niveau du namespace, telles que Connection, Role, Taxonomy, DataPolicy et DataScan, l'UID du compte principal doit être transmis en tant que paramètre namespace.

Qu'est-ce que le modèle à trois niveaux ?

MaxCompute prend en charge deux méthodes d'organisation des métadonnées :

  • Modèle à deux niveaux : Project → Table (méthode traditionnelle)

  • Modèle à trois niveaux : Project → Schema → Table (nouvelle méthode)

Utilisez le champ Project.schemaEnabled pour déterminer si le modèle à trois niveaux est activé pour un projet. Si le modèle à trois niveaux est activé, le paramètre schemaName doit être spécifié lors de l'appel aux API Table.

Comment mettre en œuvre le contrôle d'accès au niveau des colonnes à l'aide de Policy Tag ?

Flux de travail complet pour le contrôle d'accès au niveau des colonnes :

  1. Créez une taxonomie avec activatedPolicyTypes défini sur FINE_GRAINED_ACCESS_CONTROL.

  2. Créez des PolicyTags sous la taxonomie (prend en charge une structure hiérarchique arborescente).

  3. Lievez un PolicyTag à une colonne spécifiée dans le schéma de colonne de la table.

  4. Créez une DataPolicy pour le PolicyTag (définissez des règles de masquage, facultatif).

  5. Utilisez une politique pour contrôler quels utilisateurs peuvent accéder aux colonnes liées à un PolicyTag.

Comment consulter les résultats d'exploration de DataScan ?

Après l'exécution d'une tâche d'exploration DataScan, un ScanJob est généré. L'historique des tâches peut être consulté via l'API listDataScanJobs. Chaque ScanJob contient :

  • status : statut de la tâche (Created/Running/Terminated/Failed)

  • ddl : informations DDL renvoyées par l'exploration qui doivent être validées

  • stats : informations statistiques renvoyées par l'exploration (format JSON)

Les tags de politique sont-ils restaurés lors de la restauration de tables supprimées avec la commande RESTORE ?

Non. Les tags de politique appliqués à la table avant sa suppression ne sont pas restaurés avec la table. Après la restauration, les tags de politique doivent être réappliqués aux colonnes de la table.

Comment gérer la pagination ?

La plupart des API List renvoient un champ nextPageToken. Si ce champ n'est pas vide, d'autres pages sont disponibles. Transmettez le nextPageToken en tant que paramètre pageToken dans la requête suivante pour récupérer la page de données suivante.

Annexe

Historique des versions du SDK

Version

Date de publication

Description

v0.2.2

Version actuelle

Glossaire

Terme

Description

Namespace

Espace de noms, correspondant à l'UID du compte principal Alibaba Cloud

Project

Projet MaxCompute

Schema

Espace de noms (répertoire) pour le modèle à trois niveaux

Table

Table de données

Connection

Connexion à une source de données externe

Role

Rôle personnalisé

Taxonomy

Système de classification des tags de politique

PolicyTag

Tag de politique pour la mise en œuvre du contrôle d'accès au niveau des colonnes

DataPolicy

Politique de données pour la définition des règles de masquage des données

DataScan

Tâche d'exploration des métadonnées

Model

Métadonnées du modèle d'apprentissage automatique

Policy

Politique d'accès, constituée d'un ensemble de Bindings

Binding

Associer un rôle à un ensemble de membres