关于 explore-data
用于在分析前检查数据表和上传数据集的技能。它分析结构、分布、数据质量与关系,并建议适用的维度、指标和后续分析方向。
主要功能
- 01数据表与文件画像
- 02列类型和结构分析
- 03空值、分布与异常检查
- 04关系和模式发现
- 05后续分析建议
适用场景
- 01查询前检查数据仓库中的表
- 02检查上传的 CSV 或 Parquet 文件的数据质量
- 03寻找候选维度、指标和连接键
MCP 相关
连接数据仓库 MCP 服务后,该技能可解析表名、获取元数据,并针对实时数据运行画像查询。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ anthropics/ knowledge-work-plugins --skill explore-data安装后在 Claude Code 中输入/explore-data确认已加载。
详细介绍
/explore-data - 分析并探索数据集
如果你看到不熟悉的占位符,或需要检查已连接的工具,请参阅 CONNECTORS.md。
为表或上传的文件生成全面的数据画像,在深入分析之前了解其形态、质量和模式。
用法
/explore-data <table_name or file>
工作流
1. 访问数据
如果已连接数据仓库 MCP 服务:
- 解析表名(处理 schema 前缀,如有歧义则提供匹配建议)
- 查询表元数据:列名、类型,以及可用的描述信息
- 对实时数据运行画像查询
如果提供了文件(CSV、Excel、Parquet、JSON):
- 读取文件并加载为工作数据集
- 根据数据推断列类型
如果两者都没有:
- 请用户提供表名(需已连接数据仓库)或上传文件
- 如果用户描述了表结构,则给出应运行哪些画像查询的指导
2. 理解结构
在分析任何数据之前,先了解其结构:
表级问题:
- 有多少行和多少列?
- 粒度是什么(每行代表什么)?
- 主键是什么?是否唯一?
- 数据最后一次更新是什么时候?
- 数据覆盖的时间跨度有多长?
列分类,将每列归为以下类别之一:
- 标识符:唯一键、外键、实体 ID
- 维度:用于分组/筛选的分类属性(状态、类型、地区、类别)
- 指标:用于度量的定量值(收入、计数、时长、分数)
- 时间:日期和时间戳(created_at、updated_at、event_date)
- 文本:自由格式的文本字段(描述、备注、名称)
- 布尔:真/假标志
- 结构化:JSON、数组、嵌套结构
3. 生成数据画像
运行以下画像检查:
表级指标:
- 总行数
- 列数及类型分布
- 近似表大小(如元数据中可获取)
- 日期范围覆盖(日期列的最小值/最大值)
所有列:
- 空值数量和空值率
- 去重计数和基数比(去重数 / 总数)
- 最常见的值(前 5–10 个及其频次)
- 最不常见的值(后 5 个,用于发现异常)
数值列(指标):
min, max, mean, median (p50)
standard deviation
percentiles: p1, p5, p25, p75, p95, p99
zero count
negative count (if unexpected)
字符串列(维度、文本):
min length, max length, avg length
empty string count
pattern analysis (do values follow a format?)
case consistency (all upper, all lower, mixed?)
leading/trailing whitespace count
日期/时间戳列:
min date, max date
null dates
future dates (if unexpected)
distribution by month/week
gaps in time series
布尔列:
true count, false count, null count
true rate
将画像以简洁的汇总表呈现,按列类型分组(维度、指标、日期、标识符)。
4. 识别数据质量问题
应用下面的质量评估框架,标记潜在问题:
- 高空值率:空值超过 5% 的列(警告),超过 20% 的列(告警)
- 低基数异常:本应是高基数但实际并非如此的列(例如只有 50 个去重值的 "user_id")
- 高基数异常:本应是分类型但去重值过多的列
- 可疑值:本应只有正数时出现的负金额、历史数据中的未来日期,以及明显的占位值(例如 "N/A"、"TBD"、"test"、"999999")
- 重复检测:检查是否存在自然键,以及该键是否有重复
- 分布偏斜:极度偏斜的数值分布,可能影响平均值
- 编码问题:分类字段中的大小写混用、末尾空格、格式不一致
5. 发现关系和模式
在对单列进行画像之后:
- 外键候选:可能关联其他表的 ID 列
- 层级结构:构成自然下钻路径的列(国家 > 省 > 市)
- 相关性:变化趋势一致的数值列
- 派生列:看起来由其他列计算而来的列
- 冗余列:信息完全相同或高度相似的列
6. 推荐有价值的维度与指标
基于列画像,推荐以下内容:
- 最佳维度列:适合切片分析的分类列(基数合理,3-50 个取值)
- 关键指标列:适合度量的数值列(分布有意义)
- 时间列:适合趋势分析的时间列
- 自然分组或层级:数据中显现的分组或层级结构
- 潜在关联键:可关联其他表的候选键(ID 列、外键)
7. 推荐后续分析
建议 3-5 项用户接下来可以执行的具体分析:
- "按 [dimension] 分组,对 [time_column] 上的 [metric] 进行趋势分析"
- "对 [skewed_column] 做分布深入分析,以理解异常值"
- "对 [problematic_column] 做数据质量排查"
- "分析 [metric_a] 与 [metric_b] 之间的相关性"
- "使用 [date_column] 和 [status_column] 做队列分析"
输出格式
## Data Profile: [table_name]
### Overview
- Rows: 2,340,891
- Columns: 23 (8 dimensions, 6 metrics, 4 dates, 5 IDs)
- Date range: 2021-03-15 to 2024-01-22
### Column Details
[summary table]
### Data Quality Issues
[flagged issues with severity]
### Recommended Explorations
[numbered list of suggested follow-up analyses]
质量评估框架
完整度评分
为每一列评级:
- 完整(非空率 >99%):绿色
- 基本完整(95-99%):黄色 -- 排查空值原因
- 不完整(80-95%):橙色 -- 分析原因并判断是否影响使用
- 稀疏(<80%):红色 -- 若不进行填充可能无法使用
一致性检查
重点关注:
- 值格式不一致:同一概念的表示方式不同("USA"、"US"、"United States"、"us")
- 类型不一致:数字以字符串存储,日期格式混杂
- 引用完整性:外键与任何父记录都不匹配
- 业务规则违反:负数量、结束日期早于开始日期、百分比大于 100
- 跨列一致性:status 为 "completed" 但 completed_at 为空
准确性指标
提示准确性问题的危险信号:
- 占位值:0、-1、999999、"N/A"、"TBD"、"test"、"xxx"
- 默认值:某个单一值出现频率异常偏高
- 陈旧数据:在活跃系统中 updated_at 显示长时间无更新
- 不可能的值:年龄 > 150、远未来日期、负时长
- 整数偏好:所有值都以 0 或 5 结尾(说明数据为估算而非测量)
时效性评估
- 该表最近一次更新是什么时候?
- 预期的更新频率是多少?
- 事件时间与加载时间之间是否存在延迟?
- 时间序列中是否存在缺口?
模式发现技术
分布分析
对于数值列,描述其分布特征:
- 正态分布:均值与中位数接近,呈钟形
- 右偏:高值方向存在长尾(常见于收入、会话时长)
- 左偏:低值方向存在长尾(较少见)
- 双峰:两个峰值(暗示存在两类截然不同的群体)
- 幂律分布:少数极大值,大量小值(常见于用户活跃度)
- 均匀分布:各取值频次大致相等(常为合成数据或随机数据)
时间模式
对于时间序列数据,关注:
- 趋势:持续的上升或下降走势
- 季节性:重复出现的模式(每周、每月、每季度、每年)
- 星期效应:工作日与周末的差异
- 节假日效应:已知节假日前后的下跌或飙升
- 变点:水平或趋势的突然转变
- 异常点:打破整体模式的个别数据点
分群发现
通过以下方式识别自然分群:
- 查找取值数为 3-20 的分类列
- 比较各分群取值下的指标分布
- 寻找行为显著不同的分群
- 检验各分群是否同质,或是否包含子分群
相关性探索
针对数值列之间:
- 计算所有指标对的相关系数矩阵
- 标记强相关(|r| > 0.7)以供进一步调查
- 注意:相关不等于因果,需明确标注这一点
- 检查是否存在非线性关系(例如二次关系、对数关系)
数据结构理解与文档化
Schema 文档模板
为团队使用而记录数据集时:
## Table: [schema.table_name]
**Description**: [What this table represents]
**Grain**: [One row per...]
**Primary Key**: [column(s)]
**Row Count**: [approximate, with date]
**Update Frequency**: [real-time / hourly / daily / weekly]
**Owner**: [team or person responsible]
### Key Columns
| Column | Type | Description | Example Values | Notes |
|--------|------|-------------|----------------|-------|
| user_id | STRING | Unique user identifier | "usr_abc123" | FK to users.id |
| event_type | STRING | Type of event | "click", "view", "purchase" | 15 distinct values |
| revenue | DECIMAL | Transaction revenue in USD | 29.99, 149.00 | Null for non-purchase events |
| created_at | TIMESTAMP | When the event occurred | 2024-01-15 14:23:01 | Partitioned on this column |
### Relationships
- Joins to `users` on `user_id`
- Joins to `products` on `product_id`
- Parent of `event_details` (1:many on event_id)
### Known Issues
- [List any known data quality issues]
- [Note any gotchas for analysts]
### Common Query Patterns
- [Typical use cases for this table]
Schema 探索查询
连接到数据仓库时,可使用以下模式来发现 Schema:
-- List all tables in a schema (PostgreSQL)
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;
-- Column details (PostgreSQL)
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'my_table'
ORDER BY ordinal_position;
-- Table sizes (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;
-- Row counts for all tables (general pattern)
-- Run per-table: SELECT COUNT(*) FROM table_name
血缘与依赖关系
探索不熟悉的数据环境时:
- 从“输出”表开始(即报表或仪表板所使用的表)
- 向上游追溯:哪些表为它们提供数据?
- 识别原始层/暂存层/集市层
- 梳理从原始数据到分析表的转换链路
- 记录数据在何处被丰富、过滤或聚合
提示
- 对于超大表(1 亿行以上),剖析查询默认使用采样;如果需要精确计数,请说明
- 如果是首次探索新数据集,此命令可在编写具体查询之前帮你快速了解整体情况
- 质量标记基于启发式规则,并非每个标记都代表真正的问题,但每一项都值得快速检查一下
评论
支持 Markdown