问答 查看内容
返回列表

如何查询数据集当前状态和最近更新时间?

98 1
发表于 3 天前 | 查看全部 阅读模式
想通过 MySQL 元数据库查询数据集的当前状态,以及数据集最近更新时间或刷新时间。

需要确认数据集状态应该查哪张表、哪个字段;如果要看最近一次数据刷新执行结果,应该如何关联更新历史表。

评论1

观小程楼主Lv.1 发表于 3 天前 | 查看全部
数据集主表是 `data_source`,当前状态在 `data_source.status`,数据集元信息更新时间在 `data_source.utime`。

如果要看最近一次数据刷新执行情况,需要关联 `resource_update_history`:

- `resource_update_history.resource_id = data_source.ds_id`
- `resource_update_history.resource_type = 1` 表示数据集
- 最近一次执行记录可按 `resource_update_history.id DESC` 取最新
- 最近一次成功刷新时间可取 `status = 4` 的最大 `end_time`

状态枚举如下:

```text
0 CREATED
1 WAITING
2 PROCESSING
3 PAUSED
4 FINISHED
5 FAILED
6 CANCELED
7 CREATING
8 UPDATING
9 CLEARING
10 CHANGING_KEYS
11 TIMEOUT
12 CHANGE_SCHEMA
```

示例 SQL:

```sql
SELECT
    ds.ds_id,
    ds.name AS ds_name,
    ds.dom_id,
    ds.status AS current_status_code,
    CASE ds.status
        WHEN 0 THEN 'CREATED'
        WHEN 1 THEN 'WAITING'
        WHEN 2 THEN 'PROCESSING'
        WHEN 3 THEN 'PAUSED'
        WHEN 4 THEN 'FINISHED'
        WHEN 5 THEN 'FAILED'
        WHEN 6 THEN 'CANCELED'
        WHEN 7 THEN 'CREATING'
        WHEN 8 THEN 'UPDATING'
        WHEN 9 THEN 'CLEARING'
        WHEN 10 THEN 'CHANGING_KEYS'
        WHEN 11 THEN 'TIMEOUT'
        WHEN 12 THEN 'CHANGE_SCHEMA'
        ELSE CONCAT('UNKNOWN:', ds.status)
    END AS current_status,
    ds.utime AS metadata_update_time,
    ds.last_exec_start_time,
    ds.last_exec_end_time,
    latest_his.begin_time AS latest_update_begin_time,
    latest_his.end_time AS latest_update_end_time,
    latest_his.status AS latest_update_status_code,
    latest_success.latest_success_end_time
FROM data_source ds
LEFT JOIN resource_update_history latest_his
    ON latest_his.id = (
        SELECT h.id
        FROM resource_update_history h
        WHERE h.dom_id = ds.dom_id
          AND h.resource_id = ds.ds_id
          AND h.resource_type = 1
        ORDER BY h.id DESC
        LIMIT 1
    )
LEFT JOIN (
    SELECT
        resource_id,
        MAX(end_time) AS latest_success_end_time
    FROM resource_update_history
    WHERE dom_id = '${dom_id}'
      AND resource_type = 1
      AND status = 4
    GROUP BY resource_id
) latest_success
    ON latest_success.resource_id = ds.ds_id
WHERE ds.dom_id = '${dom_id}'
  AND ds.is_del = 0
  -- AND ds.ds_id = '${ds_id}'
ORDER BY ds.utime DESC;
```

如果关注“数据集配置或元信息最后变更时间”,看 `data_source.utime`;如果关注“数据最近一次刷新成功完成时间”,看 `latest_success_end_time`。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表