全部產品
Search
文件中心

MaxCompute:CatalogAPI SDK使用指南

更新時間:Jul 01, 2026

產品版本:v0.2.2
SDK 倉庫:aliyun/aliyun-odps-openapi-sdk


概述

CatalogAPI SDK 是阿里雲 MaxCompute 提供的資料目錄管理開放介面 SDK。通過 CatalogAPI實現以編程方式管理 MaxCompute 中的中繼資料資源,包括 Project、Schema、Table、Connection、Role、Taxonomy、DataPolicy、DataScan、Model 等。

功能特性

CatalogAPI SDK 提供以下核心能力:

  • 資料表管理

    建立和更新內表、外表,查詢和刪除內表、外表、視圖、物化視圖和快照表。

  • 串連管理

    管理訪問外部資料源(如 OSS、OTS)的 Connection 配置。

  • 許可權管理

    通過 Role 和 Policy 實現細粒度的存取控制。

  • 資料安全

    通過 Taxonomy 和 Policy Tag 實現列級存取控制,通過 DataPolicy 實現動態資料脫敏。

  • 中繼資料爬取

    通過 DataScan 自動探索和爬取外部資料源的中繼資料。

  • 模型管理

    管理機器學習模型的中繼資料,支援多版本管理。

  • 資源搜尋

    在 namespace 範圍內搜尋各類別中繼資料實體。

資源模型

CatalogAPI 遵循 RESTful 設計風格,核心資源層級關係如下:

Namespace(主帳號 UID)
├── Connection          # 外部資料源串連
├── Role                # 自訂角色
├── Taxonomy            # 策略標籤分類
│   └── PolicyTag       # 策略標籤
├── DataPolicy          # 資料策略(脫敏規則)
├── DataScan            # 中繼資料爬取任務
│   └── ScanJob         # 爬取作業
Project             # MaxCompute 專案
    └── Schema          # 命名空間(目錄)
        ├── Table       # 資料表
        │   └── Partition # 分區
        └── Model       # 機器學習模型
說明

Namespace ID 即阿里雲主帳號 UID。

快速開始

擷取 SDK

CatalogAPI SDK 支援 Java 和 Python 兩種語言,託管在阿里雲 GitHub 倉庫中。

// 在 Maven 專案中添加依賴
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>catalog-api</artifactId>
    <version>0.2.2</version>
</dependency>
pip install pyodps-catalog

初始化用戶端

使用 AccessKey 初始化 CatalogAPI 用戶端。

重要

請勿在代碼中寫入程式碼 AccessKey。建議通過環境變數或設定檔方式管理憑證。

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

public class CatalogDemo {
    public static void main(String[] args) throws Exception {
        // 初始化配置
        Config config = new Config();
        config.setAccessKeyId(System.getenv("ALIBABACLOUD_ACCESS_KEY_ID"));
        config.setAccessKeySecret(System.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET"));
        // 設定 MaxCompute 標準存取點,SDK 自動路由擷取 CatalogAPI endpoint,請根據實際 Region 替換
        config.setOdpsEndpoint("service.cn-shanghai.maxcompute.aliyun.com");
        
        // 建立用戶端
        Client client = new Client(config);
        
        // 使用 client 調用 API
    }
}
import os
from pyodps_catalog.client import Client
from maxcompute_tea_openapi.models import Config

# 初始化配置
config = Config(
    access_key_id=os.environ.get('ALIBABACLOUD_ACCESS_KEY_ID'),
    access_key_secret=os.environ.get('ALIBABACLOUD_ACCESS_KEY_SECRET'),
    # 設定 MaxCompute 標準存取點,SDK 自動路由擷取 CatalogAPI endpoint,請根據實際 Region 替換
    odps_endpoint='service.cn-shanghai.maxcompute.aliyun.com'
)

# 建立用戶端
client = Client(config)

# 使用 client 調用 API

CatalogAPI SDK 支援以下兩種存取點配置方式:

配置方式

參數

存取點格式

說明

通過標準存取點自動路由(推薦)

Python:odps_endpoint;Java:setOdpsEndpoint()

service.{region}.maxcompute.aliyun.com

SDK 自動通過路由 API 擷取 CatalogAPI 存取點

直接指定 CatalogAPI 存取點

Python:endpoint;Java:setEndpoint()

catalogapi.{region}.maxcompute.aliyun.com

直接連接 CatalogAPI 服務

調用樣本:列出表

以下樣本示範如何列出指定 Schema 下的所有表:

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,首次調用傳Null 字元串
);

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

// 如有下一頁,使用 nextPageToken 繼續
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}")

# 如有下一頁,使用 next_page_token 繼續
next_token = response.next_page_token

鑒權說明

訪問憑證

調用 CatalogAPI 需要使用阿里雲 AccessKey 進行身分識別驗證。推薦使用 RAM 子帳號的 AccessKey,並遵循最小許可權原則授予許可權。

許可權列表

各 API 操作所需的許可權如下表所示:

單擊展開查看全部許可權

資源

操作

要求的權限

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,如果搜尋包含 project 條件,則需要這些 project 的 SearchProject 許可權

Policy 與 Role

CatalogAPI 支援基於 Policy 的存取控制。Policy 由一組 Binding 構成,每個 Binding 將一個角色(Role)綁定到一群組成員(Members)。

  • Policy 模型

    {
      "etag": "string",
      "bindings": [
        {
          "role": "string",
          "members": ["string"]
        }
      ]
    }
    • etag:用於 read-modify-write 操作的一致性校正

    • bindings:角色繫結資料行表

      • role:角色名稱

      • members:成員列表,格式為 user:{userId}

  • 設定 Policy 樣本

    import com.aliyun.odps.catalog.models.*;
    
    // 構造 SetPolicyRequest
    Policy policy = new Policy();
    Binding binding = new Binding();
    // role 使用完整資源路徑格式:namespaces/{namespaceId}/roles/{roleName}
    binding.setRole("namespaces/123456789/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);
    
    // 設定表的 Policy
    client.setTablePolicy(table, request);

資料模型

通用欄位

欄位

類型

說明

name

string

REST 資源全名,在網域名稱範圍內全域唯一。SDK 通過資源名可以方便地構造 REST 請求 URL。通常作為輸出欄位。

資料類型

除了 JSON 標準類型外,以下為特殊資料類型標記:

資料類型

說明

enum

語義上的枚舉類型,在 JSON 格式中用 string 表示

int64

64 位元整數,以 string 格式傳輸

Table 模型

Table 是 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>" }
}

單擊展開查看欄位詳細說明

欄位

類型

必填

說明

etag

string

用於 read-modify-write 一致性校正

name

string

表的完整路徑,如 projects/{projectId}/schemas/{schemaName}/tables/{tableName},僅輸出

projectId

string

表所屬的 project ID

schemaName

string

條件

表所屬的 schema 名。三層模型下必填,二層模型下不得填寫

tableName

string

表名

type

enum(TableType)

表的類型。取值:TABLE(內表)、EXTERNAL(外表)、VIEW(視圖)、MATERIALIZED_VIEW(物化視圖)、SNAPSHOT(快照表)

description

string

表的描述,等價於 SQL DDL 中表的 comment

tableSchema

TableFieldSchema

表列的 schema 定義

clustering

Clustering

表的 cluster 屬性定義,只有 cluster 表才有

tableConstraints

TableConstraints

表的主鍵約束定義,只有 delta 表才有

partitionDefinition

PartitionDefinition

表的分區列定義,只有分區表才有

tableFormatDefinition

TableFormatDefinition

僅內表有此欄位,預設為普通表格式

externalDataConfiguration

ExternalDataConfiguration

外部表格配置,僅外部表格支援

maxLakeConfiguration

MaxLakeConfiguration

managed lake table 配置

externalCatalogTableOptions

ExternalCatalogTableOptions

external catalog 資訊

expirationOptions

ExpirationOptions

表和分區資料的到期時間配置

createTime

string (int64)

表的建立時間(毫秒),僅輸出

lastModifiedTime

string (int64)

表的修改時間(毫秒),僅輸出

labels

map<string, string>

表上的標籤

TableFieldSchema 模型

支援的資料類型(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"
}

單擊展開查看欄位詳細說明

欄位

類型

說明

fieldName

string

列名(頂層列)或 struct 欄位名。表的 tableSchema 中無此欄位

sqlTypeDefinition

string

僅輸出。在 SQL DDL 語句中表示列類型的字串定義,只有表列才輸出

typeCategory

enum(FieldDataType)

欄位類型

mode

enum(FieldMode)

REQUIRED(不能為 NULL)或 NULLABLE(可以為 NULL)

fields

TableFieldSchema[]

STRUCT 類型的子欄位

description

string

列的 comment

policyTags

PolicyTags

可選。資料行繫結的 policy tag,用於列層級存取控制和資料脫敏。無此欄位表示無 policy tag。對於巢狀型別,policy tag 只能標記在葉子節點。Policy tag 無法標記在分區列上

policyTags.names

string[]

可選。Policy tag 資源名列表,當前每個列只支援 1 個 policy tag

maxLength

string (int64)

CHAR/VARCHAR 類型的最大長度

precision

string (int64)

DECIMAL 類型的精度

scale

string (int64)

DECIMAL 類型的 scale

defaultValueExpression

string

可選。預設值的運算式字串

Connection 模型

Connection 用於配置訪問外部資料源(如 OSS、OTS)的串連資訊。

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

單擊展開查看欄位詳細說明

欄位

類型

必填

說明

name

string

資源全域唯一名:namespaces/{namespace_ID}/connections/{connectionName},僅輸出

connectionName

string

namespace 內唯一。大小寫敏感。包含字元:[a-z][A-Z][0-9]_,位元組數範圍 [3, 32]

description

string

可選。最多 1KB

creationTime

string (int64)

Connection 的建立時間(毫秒),僅輸出

lastModifiedTime

string (int64)

最後修改時間(毫秒)

connectionType

enum(ConnectionType)

Connection 的類型。取值:CLOUD_RESOURCE(雲上資源類型,如 OSS、OTS 等)

cloudResource

CloudResourceOptions

條件

僅當 connectionType 為 CLOUD_RESOURCE 時設定

  • delegatedAccount

    STRING類型。被委託的帳號名,建立時自動儲存為建立者歸屬的主帳號,僅輸出。

  • ramRoleArn

    STRING類型,必填。授權給 MaxCompute 服務扮演的 RAM 角色 ARN。

region

string

此 connection 所屬的 region,僅輸出

Role 模型

Role 用於定義自訂角色。

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

資源全域唯一名:namespaces/{namespace_ID}/roles/{roleName},僅輸出

roleName

string

namespace 內唯一。大小寫敏感。包含字元:[a-z][A-Z][0-9]_,位元組數範圍 [3, 255]

description

string

可選。最多 1KB

includedPermissions

string[]

Role 包含的許可權列表

etag

string

目前僅輸出,未來將用於保證 read-modify-write 操作一致性

deleted

boolean

僅輸出,表示是否被刪除

RoleView 枚舉

枚舉值

說明

BASIC

不返回 includedPermissions,預設值

FULL

返回所有欄位

Taxonomy 模型

Taxonomy 用於管理原則標籤(Policy Tag)的分類體系。

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

僅輸出。格式為 namespaces/{namespace_ID}/taxonomies/{ID},ID 為系統自動分配的唯一 ID

taxonomyName

string

namespace 內唯一。大小寫敏感。包含字元:[a-z][A-Z][0-9]_,位元組數範圍 [3, 255]

description

string

可選。最多 2000 bytes

activatedPolicyTypes

PolicyType[]

可選。Taxonomy 下開啟的 policy 類型列表,預設為 POLICY_TYPE_UNSPECIFIED

policyTagCount

integer

僅輸出。此 Taxonomy 內 policy tag 的個數

createTime

string (int64)

僅輸出。Taxonomy 的建立時間戳記(UTC 毫秒)

lastModifiedTime

string (int64)

僅輸出。Taxonomy 的最後修改時間戳記(UTC 毫秒)

PolicyType 枚舉

枚舉值

說明

POLICY_TYPE_UNSPECIFIED

未指定類型

FINE_GRAINED_ACCESS_CONTROL

開啟列級存取控制

說明

當 taxonomy 顯式指定 FINE_GRAINED_ACCESS_CONTROL 或 taxonomy 下任意 policy tag 有設定 data policy 時,該 taxonomy 下所有 policy tag 視為開啟列級存取控制。

PolicyTag 模型

PolicyTag 是掛載在 Taxonomy 下的策略標籤,用於實現列級存取控制。

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

PolicyTag 的完整路徑:namespaces/{namespace_ID}/taxonomies/{TID}/policyTags/{ID},ID 為系統自動分配的唯一 ID

policyTagName

string

父 Taxonomy 內唯一。大小寫敏感。包含字元:[a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

description

string

可選。最多 2000 bytes

parentPolicyTag

string

父節點 name,空代表根節點。預設為空白

childPolicyTags

string[]

僅輸出。子節點的 name 列表

DataPolicy 模型

DataPolicy 用於定義資料脫敏規則。

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

namespaces/{namespace_ID}/dataPolicies/{dataPolicyName},僅輸出

dataPolicyName

string

使用者指定的 data policy 名,在帳號級唯一

policyTag

string

Data policy 綁定的 policy tag 資源全名

dataPolicyType

enum(DataPolicyType)

目前僅支援 DATA_MASKING_POLICY(列級資料脫敏)

dataMaskingPolicy

DataMaskingPolicy

Data policy 上定義的脫敏規則

  • DataMaskingPolicy

    欄位

    類型

    說明

    predefinedExpression

    enum(PredefinedExpression)

    預定義脫敏策略的類型

    parameters

    string[]

    預定義脫敏策略的參數

  • 預定義脫敏策略(PredefinedExpression)

    枚舉值

    說明

    SHA256

    SHA256 雜湊

    SHA512

    SHA512 雜湊

    ALWAYS_NULL

    始終返回 NULL

    DEFAULT_MASKING_VALUE

    預設脫敏值

    DATE_YEAR

    僅保留年份

    POINT_RESERVE

    保留小數點

    STRING_MASKED_BA

    字串脫敏(前向)

    STRING_UNMASKED_BA

    字串不脫敏(前向)

    MD5

    MD5 雜湊

    SM3

    SM3 雜湊

    REPLACE_RANDOM

    隨機替換

    REPLACE_RANDOM_BA

    隨機替換(前向)

    REPLACE_FIXED

    固定值替換

DataScan 模型

DataScan 用於配置中繼資料爬取任務。

{
  "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
}

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

資源全域唯一名:namespaces/{namespaceID}/dataScans/{dataScanName}

scanName

string

使用者指定的爬取任務名稱

type

string

取值範圍:TABLE_DISCOVERY(表發現)、SCHEMA_DISCOVERY(Schema 發現)

creator

string

dataScan 的建立者

customerId

string

客戶 ID

namespaceId

string

dataScan 所屬的 namespace

description

string

使用者自訂的描述

scanId

string

系統自動產生的 scan ID,唯讀欄位,展示項

creationTime

int64

建立時間,UTC timestamp

lastModifiedTime

int64

上次修改時間,UTC timestamp

lastTriggeredTime

int64

爬取任務上次觸發時間(開始調度時間),UTC timestamp。未觸發過預設值為 0

lastSuccessfulScheduleTime

int64

最近一次成功的 DatascanJob 的執行時間,預設值為 0

lastTriggeredBy

string

觸發當前調度的來源,具體使用者或調度器

schedulingStatus

string

調度狀態。取值:IDLE(空閑)/IMMEDIATE(立即執行)/PENDING(等待中)/SCHEDULING(調度中)。初始化狀態為 IDLE,建立後立刻執行則設定為 IMMEDIATE

source

DataScanSource

中繼資料爬取和發現來源

target

DataScanTarget

控制發現結果寫入的參數

properties

DataScanProperties

爬取任務的選擇性參數

schedulerMode

string

manual(手動觸發)/periodic(周期性自動觸發)

schedulerInterval

string

當 schedulerMode 為 periodic 時,兩次爬取任務之間的最大間隔,取值範圍 [1h-7d]

scheduledCount

int64

這個 dataScan 一共被調度了多少次

  • DataScanSource

    欄位

    類型

    說明

    location

    string

    location 地址,支援 OSS、DLF 和 Holo

    connection

    string

    connection name,提供訪問 source 需要的身份與網路資訊,需要鑒權

    ignores

    string[]

    忽略訪問的路徑,支援Regex

  • DataScanTarget

    欄位

    類型

    說明

    project

    string

    結果寫入的 project name

    schema

    string

    當 dataScan.type 為 table 時,table 寫入的 schema

    namePrefix

    string

    爬取任務自動產生的 table/schema 名稱的首碼,防止命名衝突

    properties

    string

    使用者可指定的最終表 / schema 的屬性

  • DataScanProperties

    欄位

    類型

    說明

    formatFilter

    string

    AUTO/PARQUET/ORC/JSON/CSV。只爬取對應屬性的資料。若指定則忽略其他類型的檔案,auto 為不指定屬性自動探測

    scanMode

    enum

    SAMPLE(抽樣)/TOTAL(完整)。預設為 SAMPLE

    enableStats

    boolean

    是否統計資訊用於查詢最佳化

    options

    string

    其餘的配置可選項,如 CSV 格式下的額外選項

    pattern

    string

    分區路徑識別的 pattern,如 {table}/{part1}={value1}/{part2}={value2}

    updatePolicy

    string

    發現表中繼資料發生變化時的處理策略:APPEND_ONLY(追加)/OVERWRITE(覆蓋)/IGNORE(忽略)

    syncRemove

    boolean

    發現表刪除時是否自動刪除

    autoCommit

    boolean

    false 代表爬取任務只輸出結果,不提交 DDL

    inventoryLocation

    string

    指定 OSS Inventory 日誌的儲存位置,用於增量掃描功能

Model 模型

Model 用於管理機器學習模型的中繼資料。

{
  "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"]
}

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

模型的完整路徑:projects/{projectId}/schemas/{schemaName}/models/{modelName}

modelName

string

模型名,上級 Schema 內唯一。大小寫不敏感。包含字元:[a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

versionName

string

版本名,同一 model 範圍內唯一。大小寫不敏感。包含字元:[a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

defaultVersion

string

模型的預設版本名

createTime

string

模型的建立時間(毫秒)

updateTime

string

模型的修改時間(毫秒)

versionCreateTime

string

版本的建立時間(毫秒)

versionUpdateTime

string

版本的修改時間(毫秒)

description

string

模型的描述,最長 1KB

versionDescription

string

版本的描述,最長 1KB

expirationDays

integer

模型基於最新動向時間的生命週期(天)

versionExpirationDays

integer

版本基於最新動向時間的生命週期(天)

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

ModelFieldSchema

版本的列 schema 定義

tasks

string[]

version 支援的所有 task 類型

tasks 欄位約束

  • 對於 LLM/MLLM 類型模型,可取值:text-generation、chat、sentence-embedding 中的一個或多個

  • 對於 BOOSTED_TREE_CLASSIFIER 類型模型,只能取值為 [predict, predict-proba, feature-importance](順序任意)

  • 對於 BOOSTED_TREE_REGRESSOR 類型模型,只能取值為 [predict, feature-importance](順序任意)

Schema 模型

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

Schema 的資源全名:projects/{projectId}/schemas/{schemaName},僅輸出

schemaName

string

Schema 在 project 下唯一名

description

string

可選。Schema 的描述

type

enum(SchemaType)

Schema 類型:DEFAULT(預設類型)、EXTERNAL(外部,目前不支援)

owner

string

Schema 的擁有者

externalSchemaConfiguration

ExternalSchemaConfiguration

可選。只有外部 schema 才有此配置,目前版本未啟用

Project 模型

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

Project 的資源全名:projects/{projectId},僅輸出

projectId

string

Project 唯一 ID

owner

string

Project 的擁有者

description

string

Project 描述

createTime

string (int64)

Project 的建立時間戳記(UTC 毫秒)

lastModifiedTime

string (int64)

Project 的最後修改時間戳記(UTC 毫秒)

schemaEnabled

boolean

Project 是否開啟三層模型

region

string

Project 所屬 region

Partition 模型

{
  "spec": "string"
}

欄位

類型

說明

spec

string

分區 spec,格式範例為 bu=tt/ds=20250515

Search 模型

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

單擊展開查看欄位詳細說明

欄位

類型

說明

name

string

實體的完整路徑,如projects/{projectId}/schemas/{schemaName}/tables/{tableName}

displayName

string

實體的名稱

type

string

實體的類型,例如 TABLE、RESOURCE、SCHEMA 等

aspects

map<string, string>

實體的其他資訊

createTime

string

實體的建立時間(毫秒)

lastModifiedTime

string

實體的修改時間(毫秒)

description

string

實體的描述

API 參考

公用聲明

URL 首碼:本文檔中所有 API 的 URL 均使用以下首碼:/api/catalog/v1alpha/

重要

單條 API 描述中不再重複此首碼。

錯誤處理

HTTP 狀態代碼

Reason

說明

400

InvalidArgument

請求輸入錯誤

403

AccessDenied

無操作許可權

404

NotFound

操作的對象不存在

409

AlreadyExists

建立的對象已存在

429

RateLimitExceeded

請求頻率過高,觸發流控

500

InternalError

系統內部錯誤

Table API

建立表

建立一個新的資料表。

  • 方法定義

    Table createTable(Table table)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    表對象,包含表的完整定義

  • 返回結果

    返回建立好的 Table 對象。

  • 使用樣本

    // 構造表
    Table table = new Table();
    table.setProjectId("my_project");
    table.setSchemaName("default");
    table.setTableName("my_table");
    table.setDescription("這是一個樣本表");
    table.setType("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);
    
    // 建立表
    Table createdTable = client.createTable(table);
    System.out.println("Created table: " + createdTable.getName());

查詢表

擷取指定表的詳細資料。

  • 方法定義

    Table getTable(Table table)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    包含 projectId、schemaName、tableName 的表對象

  • 返回結果

    返回 Table 對象。

  • 使用樣本

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

更新表

更新指定表的屬性。

  • 方法定義

    Table updateTable(Table table)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    包含更新內容的表對象

  • 返回結果

    返回更新後的 Table 對象。

  • 使用樣本

    Table table = client.getTable(query);
    table.setDescription("更新後的描述");
    
    Table updated = client.updateTable(table);

刪除表

刪除指定的資料表。

  • 方法定義

    HttpResponse deleteTable(Table table)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    包含 projectId、schemaName、tableName 的表對象

  • 返回結果

    成功時返回空的 HttpResponse。

  • 使用樣本

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

列出表

列出指定 Schema 下的所有表。

  • 方法定義

    ListTablesResponse listTables(String projectId, String schemaName, Integer pageSize, String pageToken)
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schemaName

    string

    Schema 名

    pageSize

    integer

    分頁大小,預設 100,最大 1000

    pageToken

    string

    翻頁 token,預設為空白

  • 返回結果

    {
      "tables": [Table],
      "nextPageToken": "string"
    }
  • 使用樣本

    ListTablesResponse response = client.listTables("my_project", "default", 100, "");
    
    // 遍曆所有頁
    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());
    }

設定表 Policy

設定表的存取原則。

  • 方法定義

    Policy setTablePolicy(Table table, SetPolicyRequest request)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    表對象

    request

    SetPolicyRequest

    策略請求

  • 返回結果

    返回更新後的 Policy 對象。

查詢表 Policy

擷取表的存取原則。

  • 方法定義

    Policy getTablePolicy(Table table)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    表對象

  • 返回結果

    返回表的 Policy 對象。

擷取表 DataToken

擷取指定表的臨時存取權杖。

  • 方法定義

    DataToken getDataToken(Table table, Integer duration)
  • 請求參數

    參數

    類型

    必填

    說明

    table

    Table

    表對象

    duration

    integer

    令牌有效期間(秒)

  • 返回結果

    {
      "version": "string",
      "type": "string",
      "value": "string",
      "expiration": "string"
    }
  • DataToken 欄位說明

    欄位

    類型

    說明

    version

    string

    格式版本,目前為 V1

    type

    string

    類型,目前只支援 STS

    value

    string

    Token 的內容,base64 編碼

    expiration

    string

    到期時間

Partition API

列出分區

列出指定表的所有分區。

  • 方法定義

    ListPartitionsResponse listPartitions(
        String projectId, 
        String schemaName, 
        String tableName, 
        Integer pageSize, 
        String pageToken,
        String query,
        String view
    )
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schemaName

    string

    Schema 名

    tableName

    string

    表名

    pageSize

    integer

    分頁大小,預設 100,最大 1000

    pageToken

    string

    翻頁 token,預設為空白

    query

    string

    分區的搜尋條件,例如 partition_name:part

    view

    string

    目前僅可取值 BASIC

  • 返回結果

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

Connection API

建立串連

建立一個新的外部資料源串連。

  • 方法定義

    Connection createConnection(String namespace, Connection connection)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID(主帳號 UID)

    connection

    Connection

    連線物件

  • 返回結果

    返回建立好的 Connection 對象。

  • 使用樣本

    // 構造 Connection
    Connection conn = new Connection();
    conn.setConnectionName("my_oss_connection");
    conn.setDescription("訪問 OSS 的串連");
    conn.setConnectionType("CLOUD_RESOURCE");
    
    CloudResourceOptions options = new CloudResourceOptions();
    options.setRamRoleArn("acs:ram::123456789:role/MaxComputeOSSRole");
    conn.setCloudResource(options);
    
    // 建立串連
    Connection created = client.createConnection("123456789", conn);

列出串連

列出指定 Namespace 下的所有串連。

  • 方法定義

    ListConnectionsResponse listConnections(String namespace, Integer pageSize, String pageToken)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    pageSize

    integer

    分頁大小,預設 100,最大 1000

    pageToken

    string

    翻頁 token,預設為空白

  • 返回結果

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

查詢串連

擷取指定串連的詳細資料。

  • 方法定義

    Connection getConnection(String namespace, String connectionName)

更新串連

更新指定串連的屬性。

  • 方法定義

    Connection updateConnection(String namespace, String connectionName, Connection connection, String updateMask)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    connectionName

    string

    串連名

    connection

    Connection

    包含更新內容的連線物件

    updateMask

    string

    指定更新欄位,目前僅支援更新 description 欄位

  • 返回結果

    返回更新後的 Connection 對象。

  • 使用樣本

    Connection conn = new Connection();
    conn.setConnectionName("my_oss_connection");
    conn.setDescription("更新後的描述");
    
    Connection updated = client.updateConnection("123456789", "my_oss_connection", conn, "description");

刪除串連

刪除指定的串連。

  • 方法定義

    HttpResponse deleteConnection(String namespace, String connectionName)

設定串連 Policy

設定串連的存取原則。

  • 方法定義

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

查詢串連 Policy

擷取串連的存取原則。

  • 方法定義

    Policy getConnectionPolicy(String namespace, String connectionName)

Role API

建立角色

建立一個自訂 Role。

  • 方法定義

    Role createRole(String namespace, Role role)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    role

    Role

    角色對象

  • 返回結果

    返回建立好的 Role 對象。

  • 使用樣本

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

列出角色

列出指定 Namespace 下的所有角色。

  • 方法定義

    ListRolesResponse listRoles(
        String namespace, 
        Integer pageSize, 
        String pageToken, 
        String view, 
        Boolean showDeleted
    )
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    pageSize

    integer

    分頁大小,預設 100,最大 1000

    pageToken

    string

    翻頁 token,預設為空白

    view

    enum(RoleView)

    預設 BASIC,設定為 FULL 時返回所有欄位

    showDeleted

    boolean

    是否包含已刪除的角色,預設 false

  • 返回結果

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

查詢角色

擷取指定角色的詳細資料。

  • 方法定義

    Role getRole(String namespace, String roleName)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    roleName

    string

    角色名稱

更新角色

更新指定角色的屬性。

  • 方法定義

    Role updateRole(String namespace, String roleName, Role role, String updateMask)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    roleName

    string

    角色名稱

    role

    Role

    包含更新內容的角色對象

    updateMask

    string

    指定更新欄位,如 "description, includedPermissions"

刪除角色

刪除指定的自訂角色。

  • 方法定義

    HttpResponse deleteRole(String namespace, String roleName)
重要

角色被刪除後,立即生效:

  • 角色無法再被綁定 Policy;

  • 已綁定在此角色上的 Policy 仍然維持綁定狀態,但不產生任何效果;

  • List roles 操作預設不再列出已刪除的角色。角色被刪除後,仍然會被計入總數限制,且在七天內維持被刪除狀態。七天后角色被永久刪除,所有資源與此角色的綁定關係都被刪除,不再計入總數限制。

設定角色 Policy

設定角色的存取原則。

  • 方法定義

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

查詢角色 Policy

擷取角色的存取原則。

  • 方法定義

    Policy getRolePolicy(String namespace, String roleName)

Taxonomy API

建立 Taxonomy

建立一個新的策略標籤分類。

  • 方法定義

    Taxonomy createTaxonomy(String namespace, Taxonomy taxonomy)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    taxonomy

    Taxonomy

    Taxonomy 對象

  • 返回結果

    返回建立好的 Taxonomy 對象。

  • 使用樣本

    Taxonomy taxonomy = new Taxonomy();
    taxonomy.setTaxonomyName("sensitive_data");
    taxonomy.setDescription("敏感性資料分類");
    taxonomy.setActivatedPolicyTypes(Arrays.asList("FINE_GRAINED_ACCESS_CONTROL"));
    
    Taxonomy created = client.createTaxonomy("123456789", taxonomy);

列出 Taxonomy

列出指定 Namespace 下的所有 Taxonomy。

  • 方法定義

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

查詢 Taxonomy

擷取指定 Taxonomy 的詳細資料。

  • 方法定義

    Taxonomy getTaxonomy(String namespace, String taxonomyId)

更新 Taxonomy

更新指定 Taxonomy 的屬性。

  • 方法定義

    Taxonomy updateTaxonomy(String namespace, String taxonomyId, Taxonomy taxonomy, String updateMask)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    taxonomyId

    string

    Taxonomy ID

    taxonomy

    Taxonomy

    包含更新內容的 Taxonomy 對象

    updateMask

    string

    指定更新欄位,如"description, activatedPolicyTypes"

刪除 Taxonomy

串聯刪除 taxonomy 下所有的 policy tags、配置的 data policies,以及表列的綁定關係。

  • 方法定義

    HttpResponse deleteTaxonomy(String namespace, String taxonomyId)

設定 Taxonomy Policy

設定 Taxonomy 的存取原則。

  • 方法定義

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

查詢 Taxonomy Policy

擷取 Taxonomy 的存取原則。

  • 方法定義

    Policy getTaxonomyPolicy(String namespace, String taxonomyId)

PolicyTag API

建立 PolicyTag

在指定 Taxonomy 下建立一個新的策略標籤。

  • 方法定義

    PolicyTag createPolicyTag(String namespace, String taxonomyId, PolicyTag policyTag)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    taxonomyId

    string

    Taxonomy ID

    policyTag

    PolicyTag

    PolicyTag 對象

  • 返回結果

    返回建立好的 PolicyTag 對象。

  • 使用樣本

    PolicyTag tag = new PolicyTag();
    tag.setPolicyTagName("phone_number");
    tag.setDescription("手機號碼脫敏標籤");
    
    PolicyTag created = client.createPolicyTag("123456789", "taxonomy_id_123", tag);

列出 PolicyTag

列出指定 Taxonomy 下的所有 PolicyTag。

  • 方法定義

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

查詢 PolicyTag

擷取指定 PolicyTag 的詳細資料。

  • 方法定義

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

更新 PolicyTag

更新指定 PolicyTag 的屬性。

  • 方法定義

    PolicyTag updatePolicyTag(
        String namespace, 
        String taxonomyId, 
        String policyTagId, 
        PolicyTag policyTag, 
        String updateMask
    )
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    taxonomyId

    string

    Taxonomy ID

    policyTagId

    string

    PolicyTag ID

    policyTag

    PolicyTag

    包含更新內容的 PolicyTag 對象

    updateMask

    string

    指定更新欄位,目前僅支援更新 description 欄位

刪除 PolicyTag

刪除 policy tag,並且遞迴刪除:policy tag 所有子節點、policy tag 上設定的所有 data policy(包括子節點)、表上的 policy tag 綁定關係(包括子節點)。

  • 方法定義

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

設定 PolicyTag Policy

設定 PolicyTag 的存取原則。

  • 方法定義

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

查詢 PolicyTag Policy

擷取 PolicyTag 的存取原則。

  • 方法定義

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

DataPolicy API

建立 DataPolicy

建立一個新的資料策略(脫敏規則)。

  • 方法定義

    DataPolicy createDataPolicy(String namespace, DataPolicy dataPolicy)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    dataPolicy

    DataPolicy

    DataPolicy 對象

  • 返回結果

    返回建立好的 DataPolicy 對象。

  • 使用樣本

    // 構造脫敏規則
    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);

列出 DataPolicy

列出指定 Namespace 下的所有 DataPolicy。

  • 方法定義

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

查詢 DataPolicy

擷取指定 DataPolicy 的詳細資料。

  • 方法定義

    DataPolicy getDataPolicy(String namespace, String dataPolicyName)

刪除 DataPolicy

刪除指定的 DataPolicy。

  • 方法定義

    HttpResponse deleteDataPolicy(String namespace, String dataPolicyName)

設定 DataPolicy Policy

設定 DataPolicy 的存取原則。

  • 方法定義

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

查詢 DataPolicy Policy

擷取 DataPolicy 的存取原則。

  • 方法定義

    Policy getDataPolicyPolicy(String namespace, String dataPolicyName)

DataScan API

建立 DataScan

建立一個新的中繼資料爬取任務。

  • 方法定義

    DataScan createDataScan(String namespace, DataScan dataScan)
  • 請求參數

    參數

    類型

    必填

    說明

    namespace

    string

    Namespace ID

    dataScan

    DataScan

    DataScan 對象

  • 返回結果

    返回建立好的 DataScan 對象。

  • 使用樣本

    // 構造爬取任務
    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("爬取 OSS 中繼資料");
    dataScan.setSource(source);
    dataScan.setTarget(target);
    dataScan.setProperties(properties);
    dataScan.setSchedulerMode("MANUAL");
    
    DataScan created = client.createDataScan("123456789", dataScan);

列出 DataScan

列出指定 Namespace 下的所有 DataScan。

  • 方法定義

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

查詢 DataScan

擷取指定 DataScan 的詳細資料。

  • 方法定義

    DataScan getDataScan(String namespace, String dataScanName)

更新 DataScan

更新指定 DataScan 的屬性。

  • 方法定義

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

刪除 DataScan

刪除指定的 DataScan。

  • 方法定義

    HttpResponse deleteDataScan(String namespace, String dataScanName)

觸發 DataScan

手動觸發一次 DataScan 爬取任務。

  • 方法定義

    HttpResponse triggerDataScan(String namespace, String dataScanName)
  • 使用樣本

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

列出 DataScan 作業

列出指定 DataScan 的爬取作業歷史。

  • 方法定義

    ListDataScanJobsResponse listDataScanJobs(
        String namespace, 
        String dataScanName, 
        Integer pageSize, 
        String pageToken
    )
  • 返回結果

    {
      "scanJobs": [ScanJob],
      "nextPageToken": "string"
    }
  • ScanJob 模型

    欄位

    類型

    說明

    jobId

    string

    Job ID

    namespaceId

    string

    作業所屬的 namespace

    dataScanId

    string

    系統自動產生的 dataScan ID

    dataScanName

    string

    所屬爬取任務名稱

    triggeredBy

    string

    觸發此次爬取作業的人,定時觸發則為 scheduler

    startTime

    int64

    爬取作業開始時間,UTC timestamp

    endTime

    int64

    爬取作業結束時間,UTC timestamp

    status

    string

    爬取作業狀態:Created/Running/Terminated/Failed

    statusDetail

    string

    爬取作業狀態詳細資料,如報錯資訊

    ddl

    string

    爬取作業返回的需要提交的 DDL 資訊

    stats

    string

    爬取作業返回的 stats 資訊,JSON 格式

Model API

建立模型

建立一個新的機器學習模型。

  • 方法定義

    Model createModel(String projectId, String schemaName, Model model)
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schemaName

    string

    Schema 名

    model

    Model

    Model 對象

  • 返回結果

    返回建立好的 Model 對象。

  • 使用樣本

    Model model = new Model();
    model.setModelName("my_llm_model");
    model.setVersionName("v1");
    model.setDefaultVersion("v1");
    model.setDescription("我的大語言模型");
    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);

列出模型

列出指定 Schema 下的所有模型。

  • 方法定義

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

查詢模型

擷取指定模型的詳細資料。

  • 方法定義

    Model getModel(String projectId, String schemaName, String modelName, String versionName)
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schemaName

    string

    Schema 名

    modelName

    string

    模型名

    versionName

    string

    版本名,不指定則查詢模型中繼資料(不含版本)

更新模型

更新指定模型的屬性。

  • 方法定義

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

刪除模型

刪除指定的模型(包含所有版本)。

  • 方法定義

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

建立模型版本

為指定模型建立新版本。

  • 方法定義

    Model createModelVersion(String projectId, String schemaName, String modelName, Model model)
  • 使用樣本

    Model version = new Model();
    version.setModelName("my_llm_model");
    version.setVersionName("v2");
    version.setVersionDescription("更新後的模型版本");
    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);

刪除模型版本

刪除指定的模型版本。

  • 方法定義

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

列出模型版本

列出指定模型的所有版本。

  • 方法定義

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

設定模型 Policy

設定模型的存取原則。

  • 方法定義

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

查詢模型 Policy

擷取模型的存取原則。

  • 方法定義

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

Project API

查詢 Project

擷取指定 Project 的詳細資料。

  • 方法定義

    Project getProject(String projectId)
  • 使用樣本

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

Schema API

建立 Schema

在指定 Project 下建立一個新的 Schema。

  • 方法定義

    Schema createSchema(String projectId, Schema schema)
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schema

    Schema

    Schema 對象

  • 返回結果

    返回建立好的 Schema 對象。

  • 使用樣本

    Schema schema = new Schema();
    schema.setSchemaName("my_schema");
    schema.setDescription("我的自訂 Schema");
    
    Schema created = client.createSchema("my_project", schema);

列出 Schema

列出指定 Project 下的所有 Schema。

  • 方法定義

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

查詢 Schema

擷取指定 Schema 的詳細資料。

  • 方法定義

    Schema getSchema(String projectId, String schemaName)

更新 Schema

更新指定 Schema 的屬性。

  • 方法定義

    Schema updateSchema(String projectId, String schemaName, String updateMask, Schema schema)
  • 請求參數

    參數

    類型

    必填

    說明

    projectId

    string

    Project ID

    schemaName

    string

    Schema 名

    updateMask

    string

    指定更新欄位,目前僅支援更新 description 和 owner 欄位,且每次只能更新一個欄位

    schema

    Schema

    包含更新內容的 Schema 對象

刪除 Schema

刪除指定的 Schema。

  • 方法定義

    HttpResponse deleteSchema(String projectId, String schemaName)

設定 Schema Policy

設定 Schema 的存取原則。

  • 方法定義

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

查詢 Schema Policy

擷取 Schema 的存取原則。

  • 方法定義

    Policy getSchemaPolicy(String projectId, String schemaName)

Search API

搜尋實體

搜尋指定 namespace 下的各種實體。

  • 方法定義

    SearchResponse search(
        String namespaceId, 
        String query, 
        Integer pageSize, 
        String pageToken, 
        String orderBy
    )
  • 請求參數

    參數

    類型

    必填

    說明

    namespaceId

    string

    主帳號 ID,在該主帳號範圍內執行搜尋

    query

    string

    搜尋查詢串,由 1 個到多個查詢條件組成,查詢條件之間用逗號 , 分隔

    pageSize

    integer

    每頁返回結果條數,必須 > 0,最大 100

    pageToken

    string

    翻頁 token

    orderBy

    string

    結果排序方式

  • 查詢文法

    • 查詢條件列表:

      查詢條件

      說明

      name:foo

      將 foo 作為子字串與實體名稱匹配

      description:bar

      將 bar 作為子字串與實體描述匹配

      type=TABLE

      必選。匹配特定類型的實體。當前支援 TABLE、RESOURCE、SCHEMA

      project=proj

      僅搜尋指定單個 project 下的實體。要求調用方擁有該 project 的 SearchProject 許可權

      project=(proj1|proj2|proj3)

      搜尋多個 project 下的實體(最多 512 個)。要求調用方同時擁有這些 projects 的 SearchProject 許可權

      region=region_id

      搜尋指定 region 的 project 下的實體

      • project=proj 與 project=(proj1|proj2|proj3) 不能同時存在

      • region=region_id 不能與 project 查詢條件同時存在

  • 排序方式(orderBy)

    取值

    說明

    default

    內部儲存順序(預設)

    create_time asc

    建立時間正序

    create_time desc

    建立時間倒序

    last_modified_time asc

    最近修改時間正序

    last_modified_time desc

    最近修改時間倒序

  • 返回結果

    {
      "entries": [SearchResultEntry],
      "nextPageToken": "string"
    }
  • 使用樣本

    // 搜尋指定 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());
        }
    }

使用限制

流量限制

主帳號層級限流,每個方法獨立控制限流,根據方法請求分類不同具體限制值如下

限制項

限制值

Get 和 GetPolicy 類方法

1500 次 /15 秒

List、Create、Update、Delete 和 SetPolicy 類方法

150 次 / 15 秒

GetProject、 ListTables、 ListPartitions view=StorageDetail/FULL

15 次 / 15 秒

容量限制

限制項

限制值

單主帳號 Custom Role 個數

300

單個 Role 內包含的 Permission 個數

3000

單個 Allow Policy 包含的 Principal 個數

1500

單個 Custom Role 總大小(包含 description、roleName 等)

64KB

Policy Tag 限制

限制項

限制值

單表單資料行繫結 Policy Tag 的個數

1

每個帳號 Taxonomy 的個數

40

每個 Taxonomy 中 Policy Tag 的個數

100

Policy Tag Tree 的層數

5

每個 Tag 的 Data Policy 個數

8

分頁限制

參數

預設值

最大值

pageSize

100

1000(部分 API 為 100)

命名規範

Connection 命名規範

欄位

規範

connectionName

namespace 內唯一,大小寫敏感,包含字元 [a-z][A-Z][0-9]_,位元組數範圍 [3, 32]

Role 命名規範

欄位

規範

roleName

namespace 內唯一,大小寫敏感,包含字元 [a-z][A-Z][0-9]_,位元組數範圍 [3, 255]

Taxonomy 命名規範

欄位

規範

taxonomyName

namespace 內唯一,大小寫敏感,包含字元 [a-z][A-Z][0-9]_,位元組數範圍 [3, 255]

PolicyTag 命名規範

欄位

規範

policyTagName

父 Taxonomy 內唯一,大小寫敏感,包含字元 [a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

DataPolicy 命名規範

欄位

規範

dataPolicyName

在帳號級唯一

Model 命名規範

欄位

規範

modelName

上級 Schema 內唯一,大小寫不敏感,包含字元 [a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

versionName

同一 model 範圍內唯一,大小寫不敏感,包含字元 [a-z][A-Z][0-9]_,位元組個數範圍 [3, 255]

常見問題

什麼是 Namespace ID?

Namespace ID 即阿里雲主帳號 UID。在調用 Connection、Role、Taxonomy、DataPolicy、DataScan 等 namespace 層級的 API 時,需要傳入主帳號 UID 作為 namespace 參數。

什麼是三層模型?

MaxCompute 支援兩種中繼資料組織方式:

  • 二層模型:Project → Table(傳統方式)

  • 三層模型:Project → Schema → Table(新增方式)

通過 Project.schemaEnabled 欄位可以判斷 Project 是否開啟了三層模型。如果開啟了三層模型,在調用 Table API 時必須指定 schemaName 參數。

如何使用 Policy Tag 實現列級存取控制?

列級存取控制的完整流程:

  1. 建立 Taxonomy,設定 activatedPolicyTypes 為 FINE_GRAINED_ACCESS_CONTROL。

  2. 在 Taxonomy 下建立 PolicyTag(支援樹狀層級結構)。

  3. 在表的列 Schema 中為指定資料行繫結 PolicyTag。

  4. 為 PolicyTag 建立 DataPolicy(定義脫敏規則,可選)。

  5. 通過 Policy 控制哪些使用者可以訪問綁定了 PolicyTag 的列。

DataScan 的爬取結果如何查看?

DataScan 爬取任務執行後,會產生 ScanJob。通過 listDataScanJobs API 可以查看作業歷史。每個 ScanJob 包含:

  • status:作業狀態(Created/Running/Terminated/Failed)

  • ddl:爬取返回的需要提交的 DDL 資訊

  • stats:爬取返回的統計資訊(JSON 格式)

使用 RESTORE 命令恢複被刪除的表時,策略標籤會一起恢複嗎?

不會。表在刪除前已經打標好的策略標籤,不會隨表一起恢複。恢複後需要對錶列重新打標。

如何處理翻頁?

大多數 List 類型 API 返回 nextPageToken 欄位。如果該欄位不為空白,表示還有下一頁。將 nextPageToken 作為下一次請求的 pageToken 參數傳入,即可擷取下一頁資料。

附錄

SDK 版本歷史

版本

發布日期

說明

v0.2.2

目前的版本

術語表

術語

說明

Namespace

命名空間,對應阿里雲主帳號 UID

Project

MaxCompute 專案

Schema

命名空間(目錄),用於三層模型

Table

資料表

Connection

外部資料源串連

Role

自訂角色

Taxonomy

策略標籤分類體系

PolicyTag

策略標籤,用於實現列級存取控制

DataPolicy

資料策略,定義資料脫敏規則

DataScan

中繼資料爬取任務

Model

機器學習模型中繼資料

Policy

存取原則,由一組 Binding 構成

Binding

將角色綁定到一群組成員