# 查看看板图表结果

读取图表的最新结果；可通过 at 读取指定时间点之前最近的快照。

```text
GET https://api.moi.matrixorigin.cn/v5/data-dashboards/{dashboard_id}/charts/{chart_id}/result
```

## 调用前准备

准备有目标工作区访问权限的[个人访问令牌](../../../../../guides/genesis/api-keys.md#创建和管理个人访问令牌)和[目标工作区 ID](../../../../../guides/ai-studio/resource-center/workspace.md#复制工作区-id)。从[查看数据看板列表](list-data-dashboards.md#成功响应)的列表中选择所需数据看板的 ID 作为 $DASHBOARD_ID，再从[查看数据看板详情](get-data-dashboard.md#成功响应)的图表列表中选择所需图表的 ID 作为 $CHART_ID；两者都写入请求路径。

## 请求示例

示例中的凭据和资源标识需替换为当前调用者的实际值。

```bash
curl -X GET "https://api.moi.matrixorigin.cn/v5/data-dashboards/$DASHBOARD_ID/charts/$CHART_ID/result" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID"
```

## 路径参数

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `dashboard_id` | string | 是 | 数据看板 ID。 |
| `chart_id` | string | 是 | 图表 ID。 |

## 查询参数

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `at` | string | 否 | RFC 3339 时间点。 |

at 按结果完成时间选择不晚于该时刻、且不早于当前快照起点的结果。检索最多 20 页、每页 100 条，时间预算 5 秒，不保证任意时刻都有快照；超过服务端当前时间 1 分钟的 at 返回 400。配置更新时间不是结果完成时间。

## 成功响应

请求成功时返回 HTTP 200，响应如下。

当前身份和角色与图表保存的调度身份一致时，可选择保存快照；不一致时，未指定 at 的查询会以当前身份实时执行 SQL 并保存执行记录。此时指定 at 会返回 400，不能读取其他调度身份的历史快照。

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "execution_id": "exec-001",
    "status": "completed",
    "mode": "live",
    "result": {
      "query_id": "",
      "db_name": "",
      "statement_id": "",
      "status": "",
      "total": 1
    }
  }
}
```

响应字段如下。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `data.execution_id` | string | 图表运行 ID。 无值时可省略。 |
| `data.status` | string | 运行或结果状态。 |
| `data.error` | string | 错误信息。 无值时可省略。 |
| `data.mode` | string | 结果选择模式。 无值时可省略。 |
| `data.requested_at` | string | 请求时间；RFC 3339 时间。 无值时可省略。 |
| `data.refreshed_at` | string | 刷新时间；RFC 3339 时间。 无值时可省略。 |
| `data.result` | object 或 null | 查询结果；成功时返回。 无值时可省略。 |
| `data.result.query_id` | string | 查询ID。 |
| `data.result.db_name` | string | 数据库名称。 |
| `data.result.statement_id` | string | SQL执行标识。 |
| `data.result.status` | string | 状态。 |
| `data.result.err_msg` | string | 错误信息。 无值时可省略。 |
| `data.result.offset` | integer | 本次查询偏移量。 无值时可省略。 |
| `data.result.limit` | integer | 本次查询数量上限。 无值时可省略。 |
| `data.result.total` | integer | 符合当前查询条件的记录数；有符号 64 位整数。 |
| `data.result.columns` | object（对象数组） | 列定义。 无值时可省略。 |
| `data.result.columns[].name` | string | 名称。 |
| `data.result.columns[].type` | string | 类型。 |
| `data.result.result` | array | 结果。 无值时可省略。 |
| `data.result.rows_affected` | integer | 受影响行数；有符号 64 位整数。 无值时可省略。 |
| `data.result.empty_set` | object 或 null | 是否为空集合。 无值时可省略。 |
| `data.result.empty_set.msg` | string | 结果说明。 |

字段路径中的 `[]` 表示数组中的每一项。

## 错误响应

以下示例对应 HTTP `400`。

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} 响应示例

```json
{
  "code": "ErrParamInvalid",
  "msg": "Bad Request"
}
```

:::::
:::::{tab-item} 字段说明

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 错误代码，例如 `ErrParamInvalid` 或 `ErrDataDashboardNotFound`。 |
| `msg` | string | HTTP 状态说明，例如 `Bad Request` 或 `Not Found`。 |

:::::
::::::
:::::::

调度或刷新服务不可用时，返回 HTTP `503`，错误结构改为整数 `code`（`503`）和字符串 `message`（已本地化的错误信息）。
