/explore-data - 分析和探索数据集

如果你看到不熟悉的占位符或需要检查已连接的工具,请参阅 CONNECTORS.md

生成表或上传文件的全面数据剖析报告。在深入分析之前了解其结构、质量和模式。

用法

/explore-data <表名或文件>

工作流程

1. 访问数据

如果数据仓库 MCP 服务器已连接:

  1. 解析表名(处理模式前缀,不明确时建议匹配项)
  2. 查询表元数据:列名、类型、描述(如有)
  3. 对实时数据运行剖析查询

如果提供了文件(CSV、Excel、Parquet、JSON):

  1. 读取文件并加载到工作数据集中
  2. 从数据中推断列类型

如果两者都没有:

  1. 请用户提供表名(连接其数据仓库)或上传文件
  2. 如果他们描述了表模式,提供关于运行哪些剖析查询的指导

2. 理解结构

在分析任何数据之前,先了解其结构:

表级问题:

列分类——将每列归类为以下之一:

3. 生成数据剖析

运行以下剖析检查:

表级指标:

所有列:

数值列(指标):

最小值、最大值、均值、中位数(p50)
标准差
百分位数:p1、p5、p25、p75、p95、p99
零值计数
负值计数(如果不应出现)

字符串列(维度、文本):

最小长度、最大长度、平均长度
空字符串计数
模式分析(值是否遵循某种格式?)
大小写一致性(全大写、全小写、混合?)
前导/尾随空格计数

日期/时间戳列:

最小日期、最大日期
空值日期
未来日期(如果不应该出现)
按月/周分布
时间序列中的断点

布尔列:

真值计数、假值计数、空值计数
真值率

将剖析结果呈现为清晰的汇总表,按列类型分组(维度、指标、日期、ID)。

4. 识别数据质量问题

应用下面的质量评估框架。标记潜在问题:

5. 发现关系和模式

在分析单个列之后:

6. 建议有趣的维度和指标

基于列剖析,推荐:

7. 推荐后续分析

建议 3-5 个用户可以接下来运行的具体分析:

输出格式

## 数据剖析:[表名]

### 概览
- 行数:2,340,891
- 列数:23(8 个维度,6 个指标,4 个日期,5 个 ID)
- 日期范围:2021-03-15 至 2024-01-22

### 列详情
[汇总表]

### 数据质量问题
[标记的问题及其严重程度]

### 推荐探索方向
[建议的后续分析编号列表]

质量评估框架

完整性评分

评估每列:

一致性检查

查找:

准确性指标

表明准确性问题的红旗:

时效性评估

模式发现技术

分布分析

对于数值列,描述分布特征:

时间模式

对于时间序列数据,查找:

细分发现

通过以下方式识别自然细分:

相关性探索

数值列之间:

模式理解和文档

模式文档模板

为团队记录数据集时:

## 表:[schema.table_name]

**描述**:[该表代表什么]
**粒度**:[每行代表……]
**主键**:[列名]
**行数**:[近似值,含日期]
**更新频率**:[实时/每小时/每日/每周]
**负责人**:[负责团队或个人]

### 关键列

| 列名 | 类型 | 描述 | 示例值 | 备注 |
|--------|------|-------------|----------------|-------|
| user_id | STRING | 唯一用户标识符 | "usr_abc123" | 外键关联 users.id |
| event_type | STRING | 事件类型 | "click", "view", "purchase" | 15 个不同值 |
| revenue | DECIMAL | 交易收入(美元) | 29.99, 149.00 | 非购买事件为 NULL |
| created_at | TIMESTAMP | 事件发生时间 | 2024-01-15 14:23:01 | 基于该列分区 |

### 关系
- 通过 `user_id` 连接到 `users`
- 通过 `product_id` 连接到 `products`
- 作为 `event_details` 的父表(1:多 通过 event_id)

### 已知问题
- [列出任何已知的数据质量问题]
- [标注分析师的任何陷阱]

### 常见查询模式
- [该表的典型用例]

模式探索查询

连接数据仓库时,使用以下模式探索模式:

-- 列出模式中的所有表(PostgreSQL)
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

-- 列详情(PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'my_table'
ORDER BY ordinal_position;

-- 表大小(PostgreSQL)
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- 所有表的行数(通用模式)
-- 按表执行:SELECT COUNT(*) FROM table_name

谱系和依赖关系

探索不熟悉的数据环境时:

  1. 从"输出"表开始(报告或仪表盘消费哪些表)
  2. 向上游追踪:哪些表为它们提供数据?
  3. 识别原始/中间/数据市场层级
  4. 绘制从原始数据到分析表的转换链
  5. 标注数据在哪里被丰富、筛选或聚合

技巧