MaxCompute CLI(命令名 maxc)是 MaxCompute 的命令行工具,通过阿里云 CLI 以 aliyun maxc 的方式调用。每条命令提供结构化的 JSON 输出,专为脚本自动化和 AI Agent 集成设计。
安装及验证
maxc 通过阿里云 CLI 分发。安装/更新 阿里云CLI 后即可使用。
支持操作系统
操作系统
支持版本
支持架构
Linux
主流发行版,如 CentOS 8+/RHEL 8+、Ubuntu 16.04+、Debian 9+ 等(CentOS 7 已 EOL,不建议使用)
AMD64、ARM64
macOS
macOS 11(Big Sur)及以上
Intel 和 Apple Silicon(Universal)
Windows
Windows 10 及以上(64 位)
AMD64(不支持 32 位及 ARM64)
根据操作系统选择对应 Tab,按步骤完成安装。每种操作系统均提供多种安装途径,选择其中一种即可。
Linux
通过 Bash 脚本安装(推荐)
支持以下选项:
安装最新版本
若未指定版本,脚本将自动安装最新版本。
/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)"安装历史版本
使用
-V选项可指定安装版本。访问 GitHub Releases 页面可查看历史可用版本。/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)" -- -V 3.3.18
通过 TGZ 安装包(.tar.gz)安装
下载安装包。
下载最新版本:
说明执行
uname -m可查看 Linux 系统架构。终端输出arm64或aarch64表示 ARM64 架构,其他输出表示 AMD64 架构。AMD64 系统:
curl https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz -o aliyun-cli-linux-latest.tgzARM64 系统:
curl https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz -o aliyun-cli-linux-latest.tgz
下载历史版本:访问 GitHub Releases 页面可下载历史版本安装包。
Linux 适用安装包包名格式为
aliyun-cli-linux-<version>-<architecture>.tgz(其中<version>替换为目标版本号,如 3.3.18;<architecture>替换为 amd64 或 arm64)。
解压安装包以获取可执行文件
aliyun。tar xzvf aliyun-cli-linux-latest.tgz将可执行文件移动至
/usr/local/bin目录,使aliyun命令可在任意路径下运行。sudo mv ./aliyun /usr/local/bin/
macOS
通过 Homebrew 安装(推荐)
说明继续操作前,请确保已安装并配置 Homebrew。
修改安装源。(可选)
中国内地用户可能由于网络问题无法安装,可尝试修改 Homebrew 安装源以解决此问题。以使用中科大开源镜像站为例:
安装最新版本的阿里云 CLI。
brew install aliyun-cli
通过图形界面(PKG)安装
双击安装,无需命令行工具。
下载安装包。
下载最新版本:在浏览器中打开下载链接 https://aliyuncli.alicdn.com/aliyun-cli-latest.pkg,下载最新版本安装包。
下载历史版本:访问 GitHub Releases 页面可查看并下载历史版本安装包。
macOS 适用的 PKG(macOS Installer Package,.pkg)安装包包名格式为
aliyun-cli-<version>.pkg。
双击下载好的安装包,按照说明指引完成安装。
通过 Bash 脚本安装
安装命令与 Linux 相同,参数说明请参见 Linux 的「通过 Bash 脚本安装」方式。
安装最新版本
/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)"安装历史版本
/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)" -- -V 3.3.5
通过 TGZ 安装包(.tar.gz)安装
下载安装包。
下载最新版本:
curl https://aliyuncli.alicdn.com/aliyun-cli-macosx-latest-universal.tgz -o aliyun-cli-macosx-latest-universal.tgz下载历史版本:访问 GitHub Releases 页面可下载历史版本安装包。
macOS 适用安装包包名格式为
aliyun-cli-macosx-<version>-universal.tgz。
解压安装包以获取可执行文件
aliyun。tar xzvf aliyun-cli-macosx-latest-universal.tgz将可执行文件移动至
/usr/local/bin目录,使aliyun命令可在任意路径下运行。sudo mv ./aliyun /usr/local/bin/
Windows
重要阿里云 CLI 当前仅适用于 Windows AMD64 架构系统,暂不支持 32 位及其他非 AMD64 架构(如 ARM64)的 Windows 系统。
通过图形界面(GUI)安装
下载并解压安装包
下载安装包。
下载最新版本:在浏览器中打开下载链接 https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip,下载最新版本安装包。
下载历史版本:访问 GitHub Releases 页面可下载历史版本安装包。
Windows 适用安装包包名格式为
aliyun-cli-windows-<version>-amd64.zip。
将安装包中的可执行文件
aliyun.exe解压至目标目录(建议C:\AliyunCLI),该目录将作为阿里云 CLI 的安装目录。说明该文件需要通过命令行终端运行,双击文件无法正常工作。
请记住此安装路径,后续配置 PATH 时需要使用。
配置 PATH 环境变量
按下
Windows键 +S键打开搜索界面,输入搜索关键词"环境变量"。在搜索结果中单击 编辑账户的环境变量,打开 环境变量 设置界面。
在 用户变量 中选择键为
Path的环境变量,单击 编辑。
在编辑界面中单击 新建,输入阿里云 CLI 安装目录路径。示例目录:
C:\ExampleDir(请替换为实际安装目录路径)。
在所有打开的对话框中依次单击 确定 以保存更改。
重新启动终端会话以使更改生效。
通过 PowerShell 脚本安装
新建脚本文件
Install-CLI-Windows.ps1。可在 PowerShell 中执行New-Item Install-CLI-Windows.ps1创建,或在文件资源管理器中新建文本文档后重命名。将以下代码复制并保存到脚本文件中。
参考以下示例,运行脚本文件安装阿里云 CLI。
说明示例脚本路径为
C:\Example\Install-CLI-Windows.ps1,请将脚本路径替换为实际位置后运行命令。若未指定版本,脚本将自动安装最新版本。默认安装路径为:
C:\Users\<USERNAME>\AppData\Local\AliyunCLI。powershell.exe -ExecutionPolicy Bypass -File C:\Example\Install-CLI-Windows.ps1使用
-Version和-InstallDir选项可指定安装版本和安装目录。访问 GitHub Releases 页面可查看历史可用版本。powershell.exe -ExecutionPolicy Bypass -File C:\Example\Install-CLI-Windows.ps1 -Version 3.3.15 -InstallDir "C:\ExampleDir\AliyunCLI"
验证安装结果
安装完成后,在终端中执行以下命令确认阿里云 CLI 已安装成功。
aliyun maxc --version如显示版本号,则安装成功。如提示错误,建议检查 CLI 版本,详情参考安装/更新 阿里云CLI 。
认证
aliyun maxc 直接复用阿里云 CLI 的凭证体系。通过 aliyun configure 配置的认证方式(除 OAuth 认证)均可直接使用,maxc 会自动继承当前 Profile 的凭证。
# 使用阿里云 CLI 配置认证(如果尚未配置)
aliyun configure --mode AK
# 验证 maxc 可以访问 MaxCompute
aliyun maxc auth whoami --json认证方式详情参考配置与管理身份凭证。
配置 MaxCompute 项目
首次使用时需要指定 MaxCompute 项目和端点:
aliyun maxc auth login \
--endpoint http://service.cn-hangzhou.maxcompute.aliyun.com/api省略 --project 时会弹出交互式项目选择器。CI 场景需显式指定:
aliyun maxc auth login \
--project my_project_dev \
--endpoint http://service.cn-hangzhou.maxcompute.aliyun.com/api \
--no-pickerMaxCompute 项目配置保存在 ~/.maxc/config.yaml。
查看与验证
# 查看当前身份和项目
aliyun maxc auth whoami --json
# 检查对特定表的权限
aliyun maxc auth can-i --table my_table --operation SELECT --json快速入门
# 1. 配置项目(认证已通过 aliyun configure 完成)
aliyun maxc auth login \
--endpoint http://service.cn-hangzhou.maxcompute.aliyun.com/api
# 2. 浏览表
aliyun maxc meta list-tables --json
aliyun maxc meta describe my_table --json
# 3. 执行查询
aliyun maxc query "SELECT * FROM my_table LIMIT 10" --json
# 4. 预估成本
aliyun maxc query cost "SELECT * FROM my_table" --json
# 5. 采样数据
aliyun maxc data sample my_table --rows 5 --json全局选项
以下选项可放在命令行任意位置,对所有命令生效:
选项 | 说明 |
| 输出 JSON Envelope 格式(等同于 |
| 输出格式:json、table、csv、ndjson、markdown、brief |
| 指定配置文件路径 |
| 目标 MaxCompute 项目(临时覆盖会话设置) |
| 目标 Schema(临时覆盖会话设置) |
--project 和 --schema 用于临时访问其他项目或 Schema,不影响当前会话配置。表名也支持 schema.table 格式。
命令参考
SQL 查询(Query)
query查询模式
支持三种模式,通过第一个关键词指定:
aliyun maxc query <sql> # 执行查询(默认) aliyun maxc query cost <sql> # 预估成本 aliyun maxc query explain <sql> # 查看执行计划默认只读模式,DDL/DML 会被客户端拦截(
--force可绕过)。aliyun maxc query "SELECT * FROM my_table LIMIT 10" --json参数说明
参数
说明
默认值
<sql>SQL 文本
—
--file从文件读取 SQL
—
--stdin从标准输入读取 SQL
—
--max-rows最大返回行数
100
--page-size分页大小
—
--cursor分页游标(上次返回值)
—
--wait同步等待秒数,超时后返回 job_id
10
--dry-run仅显示查询计划,不执行
—
--cost-check预估成本超过阈值(CU)时中止
—
--output将结果写入文件
—
--output-format输出文件格式:table、json、csv、ndjson
—
--idempotency-key去重键,用于重试幂等
—
--retry-on逗号分隔的可重试错误码
—
--max-retries最大重试次数
0
--retry-backoff退避策略:fixed、exponential
fixed
--force绕过只读模式,允许 DDL/DML
—
--wait行为--wait 10(默认):同步轮询 10 秒,完成则返回结果;超时则返回 job_id。--wait 0:立即提交并返回 job_id。--wait 300:最多等待 5 分钟。
超时后可用
job wait <job_id>继续等待。使用示例
# 从文件执行 aliyun maxc query --file my_query.sql --json # 成本保护:预估超过 100 CU 自动中止 aliyun maxc query "SELECT * FROM orders" --cost-check 100 --json # 分页 aliyun maxc query "SELECT * FROM orders" --page-size 50 --json aliyun maxc query "SELECT * FROM orders" --page-size 50 --cursor <next_cursor> --json # 结果写入 CSV 文件 aliyun maxc query "SELECT * FROM orders LIMIT 1000" --output result.csv --output-format csv --json # 幂等重试 aliyun maxc query "INSERT INTO target SELECT * FROM source WHERE ds='20260601'" \ --force --idempotency-key "daily-etl-20260601" \ --retry-on "QUOTA_EXCEEDED" --max-retries 3 --retry-backoff exponential --json
作业管理(Job)
管理异步 SQL 作业的生命周期。
job submit
提交 SQL 作业,立即返回job_id。
aliyun maxc job submit "SELECT * FROM large_table" --json参数 | 说明 | 默认值 |
| SQL 文本 | — |
| 从文件读取 SQL | — |
| 从标准输入读取 SQL | — |
| 最大返回行数 | 100 |
| 成本阈值(CU) | — |
| 去重键 | — |
| 允许 DDL/DML | — |
job status / wait / result / cancel / diagnose
aliyun maxc job status <job_id> --json # 查询状态
aliyun maxc job wait <job_id> --json # 等待完成并返回结果
aliyun maxc job result <job_id> --json # 获取已完成作业的结果
aliyun maxc job cancel <job_id> --json # 取消运行中的作业
aliyun maxc job diagnose <job_id> --json # 诊断失败原因job wait 额外参数
参数
说明
默认值
--timeout超时秒数
300
--stream以 NDJSON 流式输出进度
—
job result 额外参数
参数
说明
默认值
--max-rows最大返回行数
100
--cursor分页游标
—
job list
aliyun maxc job list --json # 列出最近作业(默认 20 条)
aliyun maxc job list --limit 50 --json # 指定数量异步查询完整流程
# 1. 提交
JOB_ID=$(aliyun maxc query "SELECT * FROM large_table" --wait 0 --json \
| jq -r '.metadata.job_id')
# 2. 等待
aliyun maxc job wait "$JOB_ID" --timeout 600 --json
# 3. 获取结果(可分页)
aliyun maxc job result "$JOB_ID" --max-rows 1000 --json元数据浏览(Meta)
表操作
# 列出表
aliyun maxc meta list-tables --json
# 查看表结构(--full 显示完整列列表,默认摘要模式)
aliyun maxc meta describe my_table --json
aliyun maxc meta describe my_table --full --json
# 搜索表
aliyun maxc meta search "order" --json
# 搜索列
aliyun maxc meta search-columns "user_id" --jsonlist-tables 和 search 支持 --limit 和 --cursor 分页。search 默认返回 20 条。
分区操作
# 列出分区(默认最多 100 个)
aliyun maxc meta partitions my_table --json
aliyun maxc meta partitions my_table --limit 500 --json
# 查看最新分区
aliyun maxc meta latest-partition my_table --json
# 查看数据新鲜度
aliyun maxc meta freshness my_table --json项目与 Schema
# 列出可访问的项目
aliyun maxc meta list-projects --json
# 列出项目下的 Schema
aliyun maxc meta list-schemas --json语义元数据
为 AI Agent 提供表的业务语义信息,详见 AI Agent 集成。
# 设置语义信息
aliyun maxc meta semantic set my_table \
--desc "订单明细表" \
--use-cases "分析每日订单量" "计算用户复购率" \
--json
# 获取语义信息
aliyun maxc meta semantic get my_table --json
# 列出缺少语义信息的表
aliyun maxc meta semantic list-missing --jsonsemantic set 还支持 --sample-questions、--column-semantics(JSON)、--relations(JSON)、--stats(JSON)。
数据操作(Data)
Data sample
从表中采样数据。分区表不指定分区时自动选取最新分区。不支持视图。
aliyun maxc data sample my_table --json
aliyun maxc data sample my_table --rows 20 --partition "ds=20260601" --columns "user_id,amount" --json参数 | 说明 | 默认值 |
| 表名 | — |
| 采样行数 | 5 |
| 分区规格 | 自动选最新 |
| 指定列(逗号分隔) | 全部 |
Data profile
分析表的列统计信息(空值率、唯一值数、最大最小值等)。基于 20 行采样的启发式结果。
aliyun maxc data profile my_table --json
aliyun maxc data profile my_table --partition "ds=20260601" --jsonaliyun maxc data profile <table_name> --jsonData upload
将本地 CSV/TSV 文件上传到表。分区表必须指定 --partition。不支持视图和复杂类型(array/map/struct)。
aliyun maxc data upload my_table --file data.csv --json
aliyun maxc data upload my_table --file data.csv --partition "ds=20260601" --overwrite --json参数 | 说明 | 默认值 |
| 目标表名 | — |
| 本地文件路径(必填) | — |
| 分区规格(分区表必填) | — |
| INSERT OVERWRITE 语义 | — |
| 字段分隔符 |
|
| 首行为数据而非表头 | — |
| NULL 标记 |
|
| 每批上传行数 | 10000 |
Data download
将表数据下载为本地 CSV/TSV 文件。分区表必须指定 --partition。不支持视图。
aliyun maxc data download my_table --output data.csv --json
aliyun maxc data download my_table --output data.csv --partition "ds=20260601" --limit 100000 --json参数 | 说明 | 默认值 |
| 源表名 | — |
| 输出文件路径(必填) | — |
| 分区规格(分区表必填) | — |
| 指定列(逗号分隔) | 全部 |
| 最大下载行数 | 不限 |
| 字段分隔符 |
|
| 不写入表头行 | — |
| NULL 输出标记 | 空字符串 |
会话管理(Session)
管理当前会话的默认项目和 Schema。本地操作,不需要后端连接。
# 设置默认项目(至少指定 --project 或 --schema 之一)
aliyun maxc session set --project my_project_dev --json
# 设置默认 Schema
aliyun maxc session set --schema my_schema --json
# 查看当前会话
aliyun maxc session show --json
# 清除会话设置
aliyun maxc session unset --json跨项目访问时,使用全局 --project 参数临时切换,不修改会话配置:
aliyun maxc meta list-tables --project other_project --json
aliyun maxc query "SELECT * FROM t LIMIT 5" --project other_project --json输出格式
JSON Envelope
所有命令添加 --json 后输出统一的 JSON Envelope(v2.0):
{
"version": "2.0",
"command": "query",
"status": "success",
"data": { ... },
"metadata": { ... },
"error": null,
"agent_hints": null
}字段 | 类型 | 说明 |
| string | 固定 |
| string | 执行的命令,如 |
| string |
|
| object | 命令返回的业务数据 |
| object | 执行元信息(项目名、耗时、job_id 等) |
| object/null | 失败时的错误详情 |
| object/null | AI Agent 的下一步操作建议 |
Data 字段
不同命令返回的 data 结构不同:
命令 | data 顶层键 |
query / job wait / job result |
|
query cost / query explain |
|
meta list-tables |
|
meta describe |
|
meta search / meta search-columns |
|
meta partitions |
|
meta latest-partition |
|
meta freshness |
|
data sample |
|
data profile |
|
job list |
|
job status / job cancel |
|
job diagnose |
|
auth whoami |
|
auth login |
|
auth can-i |
|
error 字段
失败时 error 包含以下字段:
{
"code": "TABLE_NOT_FOUND",
"message": "Table 'orders' does not exist in project 'my_project'",
"suggestion": "Use 'aliyun maxc meta search orders --json' to find similar tables",
"recoverable": false
}字段 | 说明 |
| 错误码(见下表) |
| 错误描述 |
| 修复建议(可选) |
| 是否可重试 |
| ODPS Instance ID(仅查询错误,可选) |
| LogView 链接(仅查询错误,可选) |
| 结构化上下文(可选) |
错误码
错误码 | 说明 | 可重试 |
| 执行失败 | 是 |
| 权限不足 | 否 |
| 配额超限 | 是 |
| SQL 语法或执行错误 | 否 |
| 成本超过阈值 | 否 |
| 资源不存在 | 否 |
| 表不存在 | 否 |
| Schema 不存在 | 否 |
| 列不存在 | 否 |
| 输入校验失败 | 否 |
| 无法连接后端 | 是 |
| 作业轮询超时 | 是 |
| 只读模式拦截写操作 | 否 |
| 写操作需要 | 是 |
| CSV 解析失败 | 否 |
| 内部错误 | 否 |
其他格式
格式 | 说明 |
| 可读表格(默认) |
| Markdown 格式 |
| 单行摘要 |
| CSV(仅数据行) |
| 换行分隔 JSON,每行一条记录 |
AI Agent 集成
maxc 是面向 AI Agent 构建的工具层。以下是核心设计理念和使用方式。
统一 JSON 协议
每条命令的 --json 输出遵循固定的 Envelope 协议。Agent 通过结构化字段获取信息,从而得到明确的结构化反馈。
status:成功还是失败data:业务数据,结构按命令类型固定error.code+error.suggestion:错误码和可执行的修复建议agent_hints.next_actions:CLI 推荐的下一步命令(完整可执行的命令行)agent_hints.warnings: 需要注意的风险(如成本过高、自动选取了分区等)
错误自修复
每个错误响应都包含 suggestion 字段和对应的 agent_hints.next_actions,告诉 Agent 接下来应该执行什么命令。例如:
错误场景 | Agent 收到的引导 |
表不存在 | 建议执行 |
列不存在 | 建议执行 |
权限不足 | 建议切换到 |
SQL 语法错误 | 建议执行 |
配额超限 | 建议执行 |
作业超时 | 建议执行 |
Agent 只需读取 error.suggestion,按提示重新执行,即可自动从错误中恢复,无需硬编码错误处理逻辑。
只读安全
maxc 在客户端拦截所有 DDL/DML 语句(CREATE、DROP、INSERT、UPDATE、DELETE 等),确保 Agent 不会意外修改或删除数据。这是在 SQL 提交到服务端之前的本地检查,零延迟、无成本。
需要执行写操作时,必须由用户显式添加 --force 参数——Agent 不应自行添加此参数。数据上传(data upload)通过 Tunnel API 走独立写入通道,不受此限制。
成本感知
Agent 可以在执行查询前通过 query cost 预估成本,或使用 --cost-check 设置成本上限:
# 预估成本
aliyun maxc query cost "SELECT * FROM large_table" --json
# 设置成本阈值
aliyun maxc query "SELECT * FROM large_table" --cost-check 100 --json分区表不加分区过滤可能扫描全表,导致成本飙升。建议 Agent 在查询前先通过 meta partitions 或 meta latest-partition 确定分区范围。
SKILL分层知识架构
SKILL 是一套安装到 Agent 平台的结构化指导文档,教会 Agent 如何使用 maxc 完成 MaxCompute 数据任务。
# 一键安装到 Claude Code
aliyun maxc agent skill install --json
# 安装到其他平台
aliyun maxc agent skill install cursor --json
aliyun maxc agent skill install windsurf --jsonSKILL 采用分层加载设计,优化 LLM 上下文窗口的使用效率:
层级 | 内容 | 加载时机 |
主文件 SKILL.md | 意图→命令映射表、核心原则、工作流、决策表 | 任务触发时自动加载 |
参考文档 | SQL 方言指南、查询模板、分区策略、错误恢复手册等 | 按需加载(仅当 Agent 需要时) |
Agent 处理简单的元数据查询时只需主文件的 270 行指导;遇到复杂的 SQL 生成或错误恢复时,才按需加载对应的参考文档。
支持的 Agent 平台:
平台 | 安装路径 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其他 Agent | 指定 --dir 来安装到任意目录 |
SKILL 管理
# 查看所有平台的安装状态
aliyun maxc agent skill list --json
# 更新已安装的 SKILL(新版本发布后)
aliyun maxc agent skill update --all --json
# 查看已安装版本与最新版本的差异
aliyun maxc agent skill diff claude-code --json
# 卸载
aliyun maxc agent skill uninstall cursor --jsonNL2SQL 工作流
SKILL 引导 Agent 按以下流程将自然语言问题转化为 SQL 查询:
用户提问
↓
1. meta search / meta list-tables → 找到相关表
↓
2. meta describe → 了解表结构和列含义
↓
3. data sample → 查看实际数据,确认列值格式
↓
4. meta partitions / latest-partition → 确定分区范围
↓
5. query cost → 预估成本
↓
6. query → 执行查询并返回结果SKILL 中的参考文档提供了 MaxCompute SQL 方言的完整指南(700+ 行),覆盖函数差异、类型陷阱、查询模板和常见错误修复,帮助 Agent 生成正确的 SQL。
语义元数据
meta semantic 命令允许为表附加业务语义信息(描述、使用场景、示例问题、列语义等)。当 Agent 通过 meta describe 发现表缺少语义信息时,可以根据自身理解生成并保存:
aliyun maxc meta semantic set my_table \
--description "用户行为日志表,记录 App 内的点击和浏览事件" \
--usage-scenario "用户行为分析、漏斗转化统计" \
--sample-questions '["过去7天的DAU是多少", "注册转化率趋势"]' \
--json这些语义信息会被后续的 Agent 会话读取,形成「使用→沉淀→复用」的正向循环。
Agent 上下文
Agent 可通过 agent context 一次性获取当前的完整上下文:
aliyun maxc agent context --json返回当前认证状态、项目、Schema、配置路径等信息,Agent 据此判断是否需要引导用户完成认证或项目切换。