Alibabacloud Odps Information Schema

Query MaxCompute (ODPS) Information Schema metadata views. Tenant-level (SYSTEM_CATALOG.INFORMATION_SCHEMA.*, recommended) or project-level (Information_Sche...

alibabacloud

@sdk-team

Install

$ openclaw skills install @sdk-team/alibabacloud-odps-information-schema

ODPS Information Schema

This skill is for Information Schema (IS) metadata queries ONLY. If the user's question is about DDL/DML, listing tables, or general MaxCompute usage (not IS views), do NOT use this skill — use MCP tools (list_tables, get_table_schema) or odpscmd instead.

Query MaxCompute metadata through INFORMATION_SCHEMA views for storage, cost, permission, task, and governance analysis.

Prerequisites <a name="prerequisites"></a>

MANDATORY: Every IS query MUST set namespace flag. Without it, ALL queries fail with "Table not found".

  • MCP: hints={"odps.namespace.schema":"true"} in execute_sql
  • odpscmd: SET odps.namespace.schema=true; before each query
  • No exceptions. Applies to ALL SYSTEM_CATALOG.INFORMATION_SCHEMA.* queries.

IS views require tenant-level permission. If you get access errors, the user needs tenant-level role — see references/ram-policies.md for Policy template.

Data freshness: History views (TASKS_HISTORY, TUNNELS_HISTORY) have ~5 min delay, realtime views ~3 hours. For yesterday's data, query after 06:00 to ensure completeness.

Tenant-level vs Project-level IS: MaxCompute has two IS levels. Tenant-level (SYSTEM_CATALOG.INFORMATION_SCHEMA.*) is the default — it covers all projects under the same metadata center and is recommended. Project-level (Information_Schema.*) is per-project only, requires install package Information_Schema.systables, and is being deprecated (since 2024-03 new projects no longer auto-install). Key differences: (1) project-level has fewer views (no CATALOGS, VOLUMES, FOREIGN_SERVERS, SCHEMAS, PARTITION_ACCESS_INFO, TABLE_ACCESS_INFO, QUOTA_USAGE; has SCHEMA_PRIVILEGES which tenant lacks); (2) project-level TASKS_HISTORY has task_schema while tenant-level does NOT; (3) project-level table_catalog is always odps while tenant-level is the actual project name. See Project-level IS Adaptation for transformation rules.

For MCP configuration, see references/mcp-tools-reference.md.

Execution Channels <a name="channels"></a>

MCP preferred when mcp__maxcompute-catalog__* tools are available. Fall back to odpscmd on connection/auth errors.

ChannelUse ForKey Detail
MCP (tenant-level)DQL, metadata, searchexecute_sql + hints={"odps.namespace.schema":"true"}; sync limit 1000 rows; cost_sql supports IS views (verified 2026-04)
MCP (project-level)DQL, metadata, searchexecute_sql + hints={} (no namespace flag); view prefix: Information_Schema.*
odpscmd (tenant-level)DDL/DML, large results, MCP unavailableSET odps.namespace.schema=true; prefix required
odpscmd (project-level)DDL/DML, large results, MCP unavailableNo namespace flag; view prefix: Information_Schema.*

See references/mcp-tools-reference.md for 15 MCP tools with routing guide.

Important Rules <a name="rules"></a>

  1. Always set namespace flag — every tenant-level IS query, no exceptions. Project-level IS queries do NOT need this flag
  2. Filter by ds — TASKS_HISTORY / TUNNELS_HISTORY are partitioned; always add ds filter to avoid full scan
  3. No SELECT * — use explicit column names
  4. Cross-metadata-center NOT supported — each region is independent
  5. last_access_time is NULL for partitioned tables — use COALESCE(last_access_time, last_modified_time) or check PARTITIONS view. Also: not collected for ALGO jobs or Hologres direct reads; up to 24h delay from actual access.
  6. status values — TASKS_HISTORY: Terminated (normal), Failed, Cancelled (rare). Never count Terminated as failure.
  7. operate_type values — TUNNELS_HISTORY: UPLOADLOG, DOWNLOADLOG, DOWNLOADINSTANCELOG, STORAGEAPIREAD, STORAGEAPIWRITE
  8. Views without time fields — COLUMNS has no time column. TABLE_PRIVILEGES/COLUMN_PRIVILEGES have no time column, only expired. These views support static snapshot only, not time-series.
  9. cost_cpu / cost_mem are DOUBLE — unit: 100×core×seconds / MB×seconds. Convert to CU-hours: cost_cpu / 100 / 3600
  10. Duration — use DATEDIFF(end_time, start_time, 'ss') (seconds). No duration_ms column exists.
  11. Non-existent fields trap — see Critical Column Reference below
  12. JOIN IS views requires 3-field key — when joining any two IS views, the ON condition MUST include table_catalog, table_schema, AND table_name. Missing any one causes incorrect results in multi-catalog environments

Project-level IS Adaptation <a name="project-level-adaptation"></a>

All SQL templates in this skill default to tenant-level syntax (SYSTEM_CATALOG.INFORMATION_SCHEMA.* + namespace flag). If the environment only supports project-level IS, apply these mechanical transformations to every generated SQL:

TransformTenant-level (default)Project-level
View prefixSYSTEM_CATALOG.INFORMATION_SCHEMA.Information_Schema.
Namespace flag (MCP)hints={"odps.namespace.schema":"true"}hints={} (remove flag)
Namespace flag (odpscmd)SET odps.namespace.schema=true;Remove entirely
ScopeAll projects in metadata centerCurrent project only
Views unavailable—CATALOGS, VOLUMES, FOREIGN_SERVERS, SCHEMAS, PARTITION_ACCESS_INFO, TABLE_ACCESS_INFO, QUOTA_USAGE
View exclusive to this level—SCHEMA_PRIVILEGES
TASKS_HISTORY extra column—task_schema (project name; tenant-level lacks this)
table_catalog valueActual project nameFixed odps

Example transformation:

-- Tenant-level (default):
SET odps.namespace.schema=true;
SELECT table_name, data_length FROM SYSTEM_CATALOG.INFORMATION_SCHEMA.TABLES WHERE ...

-- Project-level (after transformation):
SELECT table_name, data_length FROM Information_Schema.tables WHERE ...

When to switch: If a tenant-level query fails with Table not found (and namespace flag is correctly set), or if the user explicitly says they only have project-level IS, apply the transformation rules above to all subsequent queries.

Critical Column Name Reference <a name="column-reference"></a>

ConceptCorrectWrong
Table sizedata_lengthsize_bytes, size
Task instanceinst_idtask_id
Task submitterowner_nametask_owner
Task projecttask_catalog (tenant-level)project_name, task_schema (project-level IS only)
Task errorresulterror_message
Task durationDATEDIFF(end_time, start_time, 'ss')duration_ms
Task statusstatustask_status
Task input sizeinput_bytesscan_bytes, processed_bytes
Table commenttable_commentcomment
Column commentcolumn_commentcomment
Privilege granteeuser_name, user_idgrantee
Privilege timeexpiredgrant_time
Resource sizesizesize_bytes
Tunnel sessionsession_idtunnel_id
Tunnel data sizedata_sizesize_bytes
User identityidentity_provider—
Timestamp typeDATETIMETIMESTAMP
Table modifiedlast_modified_timelast_ddl_time
cost_cpu typeDOUBLEBIGINT

For verified query examples using these columns, see references/verified-queries.md.

Routing Index <a name="routing"></a>

SKILL.md contains critical column names and namespace rules. Load sub-files only when needed:

  • If multiple rows match, load ALL matched files. E.g., a non-English term causal query needs both terminology.md and playbooks+causal-templates.
  • If SKILL.md inline info (tables below) is sufficient, do NOT load extra files.
  • NOT about IS views? → This skill is not applicable. Use MCP tools (list_tables, get_table_schema, execute_sql) or odpscmd for DDL/DML/general queries.
Query TypeWhenLoad Extra File
NOT an IS queryDDL/DML, list tables, run SQL, general ODPSNone — use MCP tools or odpscmd instead
Single-view queryOne IS view, no JOINNone — SKILL.md only
Live monitoringTASKS / QUOTA_USAGENone — SKILL.md only
2+ IS view JOINCombining viewsreferences/joins.md
Named metric/template"comment coverage", "CU trend", "zombie table detection"references/verified-queries.md + references/metrics.md
Multi-step diagnosis"Why did CU spike?", root-cause analysisreferences/playbooks.md + references/causal-templates.md
Non-English synonyms"cpu时间", "作业时长", "存储占用", or any CJK/localized termsreferences/terminology.md (or use inline mapping below)
Schema/field lookup"What columns does X have?"references/views-reference.md
Access denied errorPermission denied on IS viewreferences/ram-policies.md
TroubleshootingTable not found, timeout, etc.references/TROUBLESHOOTING.md

Anti-pattern: Do NOT load extra files for these

User saysLooks likeActually isLoad
"storage pressure, list top 20 tables"DiagnosticsSingle-viewSKILL.md only
"permission audit, who has SELECT on X"PlaybookSingle-viewSKILL.md only
"cost attribution by owner"CausalSingle-viewSKILL.md only
<!-- SYNC: derived from references/joins.md paths #1 #2 #3 #4 #5 #8 #10 -->

Inline Join Conditions (for 2+ view JOINs)

When joining IS views, you MUST include table_catalog, table_schema, AND table_name in join conditions. Common join paths:

LeftRightJoin Condition
TABLESCOLUMNSt.table_catalog = c.table_catalog AND t.table_schema = c.table_schema AND t.table_name = c.table_name
TABLESPARTITIONSt.table_catalog = p.table_catalog AND t.table_schema = p.table_schema AND t.table_name = p.table_name
TABLESTABLE_PRIVILEGESt.table_catalog = p.table_catalog AND t.table_schema = p.table_schema AND t.table_name = p.table_name
TABLESTABLE_ACCESS_INFOt.table_catalog = a.table_catalog AND t.table_schema = a.table_schema AND t.table_name = a.table_name
TABLESTABLE_LABELSt.table_catalog = l.table_catalog AND t.table_schema = l.table_schema AND t.table_name = l.table_name
USERSUSER_ROLESu.user_id = ur.user_id
COLUMNSCOLUMN_LABELSc.table_catalog = l.table_catalog AND c.table_schema = l.table_schema AND c.table_name = l.table_name AND c.column_name = l.column_name

For all 16 join paths, see references/joins.md. The 7 most common paths are inlined below.

<!-- SYNC: derived from references/terminology.md — metric terms: storage usage, task CPU consumption, task execution duration, CU-hours, queue wait; dimension terms: zombie tables; metric: task failure rate -->

Inline Terminology Mapping (common non-English terms)

Non-English termEnglish equivalentCorrect column/sourceCommon mistake
cpu时间 / CPU消耗CPU time / CPU consumptioncost_cpu (DOUBLE), ÷100÷3600 = CU·hourcpu_time
作业时长 / 任务耗时Task duration / task elapsed timeDATEDIFF(end_time, start_time, 'ss')duration_ms
存储占用 / 表大小Storage usage / table sizedata_length (÷1073741824 = GB)size_bytes
僵尸表Zombie tableTABLES + TABLE_ACCESS_INFO—
排队时间Queue wait timeNOT available in IS views—
CU时 / CU消耗CU-hours / CU consumptionSUM(cost_cpu) / 100.0 / 3600—
任务失败率Task failure ratestatus='Failed' ratio in TASKS_HISTORY—

For all 59 terms, see references/terminology.md.

Error Recovery <a name="error-recovery"></a>

Error SignalRoot CauseFix
Table not found on IS viewMissing namespace flagAdd SET odps.namespace.schema=true; / hints={"odps.namespace.schema":"true"}. Verify with Q30 smoke test
Access denied / Permission denied on IS viewMissing tenant-level roleVerify access with check_access(include_grants=true). User needs tenant-level role — load references/ram-policies.md for Policy template
Table not found on SYSTEM_CATALOG.INFORMATION_SCHEMA.* (namespace flag correctly set)Environment only supports project-level ISApply Project-level IS Adaptation transformation rules to all subsequent queries: switch prefix to Information_Schema.*, remove namespace flag
Information_Schema not found / Package not installedProject-level IS not installed in this projectUser must run install package Information_Schema.systables as project owner or Super_Administrator. After install, query as Information_Schema.view_name (no namespace flag). Note: project-level IS is being deprecated — prefer tenant-level
Object 'Information_Schema' not found on new projectNew projects (since 2024-03) don't auto-install project-level ISSwitch to tenant-level IS (SYSTEM_CATALOG.INFORMATION_SCHEMA.*) or manually install package
TASKS_HISTORY query slow/expensiveNo ds filterAdd WHERE ds >= TO_CHAR(DATEADD(GETDATE(), -14, 'dd'), 'yyyymmdd')
MCP returns exactly 1000 rowsSync limit truncationRe-run with async=true, or add tighter WHERE/LIMIT
Column not foundUsed non-existent columnCheck Critical Column Reference above — common: size_bytes→data_length, task_status→status
TUNNELS_HISTORY sync timeout (>30s)Tunnel record volume much larger than TASKS_HISTORYUse async=true + get_instance, or reduce ds to 1 day
Async timeout (>30s)Large scanUse cost_sql first; add ds filter; split query
IS view shows no recent data~5 min delay for history viewsQuery yesterday's data after 06:00
odpscmd query hangsLarge result set or full-table scanUse odps_is_query.sh -t <seconds> to set timeout (default 300s); add ds filter
Namespace flag set but still Table not foundOther causes (wrong project, typo, schema issue)Load references/TROUBLESHOOTING.md for T1–T7 scenarios

Core Views <a name="core-views"></a>

ViewPurposeKey Columns
TABLESTable metadatatable_name, owner_name, data_length, table_type, lifecycle, last_modified_time
COLUMNSColumn metadatacolumn_name, data_type, column_comment, is_partition_key
PARTITIONSPartition metadatapartition_name, data_length, create_time, last_modified_time
TASKSRunning jobs (live, seconds delay)inst_id, task_name, owner_name, status, cpu_usage (core×100), mem_usage (MB)
TASKS_HISTORYQuery historyinst_id, task_name, owner_name, status, task_type, start_time, end_time, result, cost_cpu, input_bytes, ds
TUNNELS_HISTORYTunnel historysession_id, object_name, operate_type, data_size, owner_name, ds
TABLE_PRIVILEGESTable permissionstable_name, user_name, privilege_type, expired
TABLE_ACCESS_INFO ⚠️Table access statstable_name, access_count, access_bytes, last_access_time
QUOTA_USAGESubscription quota monitoringname, cpu_elastic_quota_max, cpu_elastic_quota_used, mem_elastic_quota_max, mem_elastic_quota_used
USERSProject usersuser_name, user_id, identity_provider
USER_ROLESUser-role mappinguser_name, role_name, user_role_catalog
CATALOGS ⚠️Project listcatalog_name, status, owner_name, region

For all 31 views with complete field definitions, see references/views-reference.md. Views marked ⚠️ are tenant-level only (not available in project-level IS).

Additional Resources <a name="resources"></a>

Official Documentation <a name="docs"></a>

Top skills in this category

Web Content Fetcher

@mrtommywu

网页内容获取工具 | 当常规爬虫被过滤时,使用替代服务获取网页内容。支持:1) r.jina.ai - 最稳定 2) markdown.new - Cloudflare 专用 3) defuddle.md - 备用方案。触发词:获取网页内容、网页转markdown、内容抓取、fetch webpage、bypas...

3017k

AI Daily Briefing

@jeffjhunter

Start every day focused. Get a morning briefing with overdue tasks, today's priorities, calendar overview, and context from recent meetings. Works with ai-meeting-notes to-do list. No setup. Just say 'briefing'.

207.1k

ADHD Assistant

@thinktankmachine

ADHD-friendly life management assistant for OpenClaw. Helps with daily planning, task breakdown, time management, prioritization, body doubling, dopamine regulation, and maintaining routines. Use when the user asks for help organizing their life, staying on top of tasks, beating procrastination, planning their day/week, managing overwhelm, or mentions ADHD-related challenges like time blindness, forgetfulness, difficulty starting tasks, or emotional dysregulation.

146.0k

openclaw-nextcloud

@keithvassallomt

Manage Notes, Tasks, Calendar, Files, Contacts, and Deck Kanban boards in your Nextcloud instance via CalDAV, WebDAV, Notes, and Deck APIs. Use for creating notes, managing todos and calendar events, uploading/downloading files, managing contacts, and organizing Kanban boards, stacks, and cards.

97.6k

Dingtalk Ai Table

@aliramw

钉钉 AI 表格(多维表)操作技能。使用 mcporter CLI 连接钉钉官方新版 AI 表格 MCP server,基于 baseId / tableId / fieldId / recordId 体系执行 Base、Table、Field、Record 的查询与增删改。适用于创建 AI 表格、搜索表格、读取...

105.3k