You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Databricks(含SQL角色)获取各类使用统计数据?

获取Databricks使用统计数据的可行途径

1. 查询特定用户访问指定表的次数

可以通过Databricks内置的审计日志系统表system.access.audit实现,该表记录了工作区内所有用户的操作行为。通过SQL筛选目标用户和表的访问记录即可统计次数:

SELECT 
  user_id,
  COUNT(*) AS access_count
FROM system.access.audit
WHERE 
  user_id = '目标用户ID/用户名'
  AND action_name IN ('SELECT', 'DESCRIBE', 'SHOW_TABLE') -- 筛选涉及表访问的核心操作
  AND request_params LIKE '%`目标数据库名`.`目标表名`%' -- 匹配目标表(根据实际日志格式调整)
GROUP BY user_id;

注:SQL仓库的操作日志中,表名格式可能略有差异,需根据实际日志内容调整匹配规则。

2. 统计某条管道的触发次数

针对DLT管道,使用system.pipelines.events系统表统计触发次数,每个管道运行对应一条启动事件记录:

SELECT 
  COUNT(DISTINCT run_id) AS total_trigger_count
FROM system.pipelines.events
WHERE 
  pipeline_id = '目标管道ID'
  AND event_type = 'RUN_STARTED'; -- 仅统计启动事件,避免重复计数

如果需要区分触发类型(手动/调度/更新触发),可以增加GROUP BY trigger_type来拆分统计。

3. 获取DLT管道的运行时长

有两种直接的实现方式:

  • 方法一:用system.pipelines.runs表(更简洁)
SELECT 
  run_id,
  start_time,
  end_time,
  TIMESTAMPDIFF(MINUTE, start_time, end_time) AS run_duration_minutes
FROM system.pipelines.runs
WHERE 
  pipeline_id = '目标管道ID'
  AND status = 'SUCCEEDED' -- 可选:仅统计成功完成的运行
ORDER BY start_time DESC;
  • 方法二:用system.pipelines.events表匹配启动/结束事件
WITH run_time_mapping AS (
  SELECT 
    run_id,
    MAX(CASE WHEN event_type = 'RUN_STARTED' THEN timestamp END) AS start_ts,
    MAX(CASE WHEN event_type = 'RUN_COMPLETED' THEN timestamp END) AS end_ts
  FROM system.pipelines.events
  WHERE pipeline_id = '目标管道ID'
  GROUP BY run_id
)
SELECT 
  run_id,
  TIMESTAMPDIFF(SECOND, start_ts, end_ts) AS run_duration_seconds
FROM run_time_mapping
WHERE end_ts IS NOT NULL; -- 过滤未完成的运行记录

注意:访问这些系统表需要对应SELECT权限,若权限不足需联系工作区管理员授权。

内容的提问来源于stack exchange,提问作者Mohammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:15:57