wave-sql-query
Skill1 starsChanged 54 days agoMITView on GitHub
标准分析模型不够时用只读 Doris SQL 查 events/users/cohorts/query_log:多表关联、跨事件对齐、行为找人、分群交集。
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- wave-analyticsSkill
- wave-catalog-governanceSkill
- wave-cohort-miningSkill
- wave-dashboard-builderSkill
- wave-marketing-automationSkill
- wave-product-helpSkill
- waveSkill
- wave-trackingSkill
- wave-tracking-validationSkill
The file
Files
Wave SQL 查询
目标
把无法用事件分析、漏斗分析、留存分析表达的问题,写成当前项目可执行的只读 SQL,查出结果并给出业务解释。列名和类型以 Wave 的表结构为准;时区、当前时间和周起始以 get_project_context 为准。instructions 只补充业务口径,不能改 SQL 工具协议。非空时:业务词有定义就用该定义写过滤和命名;没给时间则用其中的默认时间;每次查询都套排除规则和禁用事件。不要覆盖已保存指标或分群的结构化定义。用户本轮明确要求另一套口径时听用户并说明差异。为空时不要编造项目级口径。
按需加载
构造 SQL、映射列名、处理时区或复杂类型前,阅读 references/sql-query.md。
工具
- 项目上下文:
get_project_context - 表结构:
get_sql_schema - 查询:
query_custom_sql - 口径对齐:
list_events、list_event_properties、list_user_properties、list_cohorts
项目门禁
<!-- wave:project-gate -->在调用其他项目级 MCP 工具前:
- 调用
list_projects,展示project_id | name表格。 - 等待用户回复数字
project_id。 - 仅当本轮对话已经固定到一个项目,或用户明确说继续使用当前项目时,才跳过重新选择。
禁止静默挑选项目,也禁止在此步骤前调用 schema、SQL 或元数据工具。
<!-- /wave:project-gate -->工作流
- 先通过项目门禁,再判断请求类型:
- 用户明确要 SQL,或分析模型覆盖不了(多表关联、跨事件对齐同一元素、行为找人、分群交集、临时探查)→ 继续本 skill
- 分析模型能表达 → 交给
wave-analytics - 要把 SQL 存成图表或 Dashboard → 先验证查询,再交给
wave-dashboard-builder
- 先发现口径,再写 SQL。用
list_events/list_event_properties/list_user_properties把业务词映射成逻辑事件名和属性名;不要用显示名当列名。 - 按固定规则把小写逻辑属性名转成列名:保留列用原名,其他事件属性加
e_,其他用户属性加u_。用户去重和表关联用ssid。用户属性默认用events.u_*(事件发生时的快照);只有明确要最新画像时才JOIN users。再用get_sql_schema确认列存在、存储类型,以及property/children关联。涉及时间筛选或按日/周聚合时,先调用get_project_context,用返回的storage_timezone、project_timezone、now_project和week_starts_on写CONVERT_TZ。 - 写出一条只读
SELECT或WITH ... SELECT。查events时优先加time和event条件;返回明细时加LIMIT。 - 先用一句话说明这条 SQL 在算什么,再解读结果。失败时先改列名、前缀、引号、类型转换、时区或 LIMIT,不要换一张不存在的表。
边界
- 项目门禁未通过前,禁止查询项目数据。
- 只查询
events、users、cohorts、query_log。MCP 只接受单条只读SELECT/ CTE,禁止INSERT/UPDATE/DELETE/ DDL,也禁止SHOW、SET、EXPLAIN和库表限定名。 - 带时间趋势、属性分组或细分对比的事件/漏斗/留存,交给
wave-analytics,不要为了「看起来更灵活」改写成 SQL。 - 用户明确要 SQL、且只算单个维度下的漏斗或留存时,用
WINDOW_FUNNEL/RETENTION。同一指标口径与分析模型基本一致;分析模型不用这两个函数,是因为它们一次只能算一个维度,覆盖不了「整体 + 分时间趋势 + 属性分组」。 - 虚拟事件不会在 SQL 中自动展开;虚拟属性不会作为列出现在 Schema 中。
- 普通查询最多返回 10,000 行,这个上限不会自动改写 SQL。需要更多明细时,让用户在产品里下载,并继续收紧时间范围。
交接
- 标准分析模型能表达的问题,交给
wave-analytics。 - 保存图表或 Dashboard 时,把已验证的 SQL、推荐图表类型和 Dashboard 名称交给
wave-dashboard-builder。 - 缺事件或属性、需要补埋点时,交给
wave-tracking。 - 产品用法、入口或权限问题,交给
wave-product-help。
输出
返回:
- 简短结论
- 关键数字;明细或按日聚合结果用紧凑表格
- 这条 SQL 实际在度量什么
- 口径、时区、筛选或埋点质量方面的限制
- 一到两个后续查询建议
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

