用途:当用户询问某主题(如 ARR、客户、订单)存在哪些数据,或需要查找、探索相关表时使用,帮助回答“我们有关于 X 的什么数据?”。
主要能力:搜索跨 schema 的相关表;按数据层(raw/staging、intermediate、marts/facts、dimensions、aggregates、reporting)对表分类;获取表结构详情;识别表间关系;检查数据新鲜度;抽样数据并输出探索报告(含推荐表、关键字段、关系图、示例查询与后续建议)。
核心策略:渐进复杂度。步骤顺序为:1) 简单 LIMIT 查询确认数据存在,不用 JOIN;2) 相同过滤条件下 COUNT(*);3) SELECT DISTINCT 外键 LIMIT 100;4) 用第 3 步的具体 ID 做 JOIN 取详情。不要从第 1 步直接跳到复杂聚合。
大表处理:数亿至数十亿行表必须用简单查询(SELECT 列 FROM 表 WHERE 过滤 LIMIT 100),第一查询不加 JOIN、GROUP BY、聚合;超时则简化而非放弃。注意 LIMIT 只在无 GROUP BY 时有效,带 GROUP BY 的 LIMIT 仍需全表扫描。避免 UPPER(col) LIKE '%TERM%',改用 ILIKE;避免无 LIMIT 的大日期范围。若元数据/配置表(_LOG、_CONFIG)返回 0 行,先查执行/事实表再下结论,元数据可能有缺口或延迟。行数是信号:百万级以上多为执行/事实数据,数千行多为元数据/配置;回答“谁在用 X”“Y 发生多少次”应优先高行数表。十亿级表须仅用简单查询并禁用 JOIN、GROUP BY 与聚合。
使用方式:先按概念及同义词、缩写、相关概念搜索 INFORMATION_SCHEMA.TABLES;按数据层归类;用 get_tables_info 获取 2–5 张最相关表的结构;通过公共键列分析关系;用 MAX(时间戳) 与 COUNT(*) 检查新鲜度;抽样 SELECT * LIMIT 10;最后输出探索报告。后续可衔接 profiling-tables、checking-freshness、tracing-upstream-lineage 等技能。
限制:资料未提供具体平台、数据库类型、安装或调用命令、收费与价格信息;上述 SQL 为示例模式,实际语法需依目标数据仓库调整。