ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

pm-skills 的 /write-query 命令实战:用自然语言生成多方言优化 SQL 的完整指南

pm-skills 的 /write-query 命令实战:用自然语言生成多方言优化 SQL 的完整指南 pm-skills 的 /write-query 命令实战用自然语言生成多方言优化 SQL 的完整指南【免费下载链接】pm-skillsPM Skills Marketplace: 100 agentic skills, commands, and plugins — from discovery to strategy, execution, launch, and growth.项目地址: https://gitcode.com/GitHub_Trending/pm/pm-skills导读/write-query是 pm-skills 仓库中pm-data-analytics插件提供的 SQL 查询生成命令它的核心价值是让产品经理用一句自然语言例如过去 30 天按套餐分层的日活用户就能拿到一份可运行、可读、带注释的 SQL 查询并支持 BigQuery、PostgreSQL、MySQL、Snowflake 等多种方言还能读取上传的 schema 图或 DDL 文件。读完本文你将掌握该命令的完整调用方式、四步工作流、标准输出模板以及它背后的sql-queriesskill 如何与analyze-cohorts、analyze-test等兄弟命令形成数据分析闭环同时了解仓库层面如何用脚本校验命令格式。一、命令是什么一个自然语言 → SQL的翻译器在 pm-data-analytics/commands/write-query.md 中该命令被定义为Describe what data you need in plain English and get an optimized SQL query. Supports multiple dialects and can read your schema from uploaded files.翻译过来就是用自然语言描述你需要的数据得到一份优化过的 SQL 查询。两个关键限定词值得注意数据而非需求命令聚焦于取数metrics、dimensions、filters而不是业务分析本身——后者由同插件的analyze-cohorts留存/群组分析和analyze-testA/B 测试分析负责优化过生成的查询默认遵循可读性优先、CTE 优于嵌套子查询、注释充分等约定详见下文第四、六节。命令文件的 YAML frontmatter 是命令能被 Claude Code / Cowork 识别和唤起的关键--- description: Generate SQL queries from natural language — supports BigQuery, PostgreSQL, MySQL, and more argument-hint: what you want to know, in plain English ---其中description会出现在插件技能列表中argument-hint则在用户输入/时提示参数格式——这正是 CLAUDE.md 中Commands needdescriptionargument-hint设计规则的直接体现也是 validate_plugins.py 中REQUIRED_COMMAND_FIELDS [description]、RECOMMENDED_COMMAND_FIELDS [argument-hint]的校验对象。二、三种调用方式与参数语法命令的通用参数是what you want to know, in plain English即你想知道什么用纯英文描述。原文档给出了三种典型调用/write-query Show me daily active users for the last 30 days, broken down by plan tier /write-query Find users who signed up last month but never completed onboarding /write-query [upload a schema diagram] Whats the conversion rate from trial to paid by cohort?从这三种用法中可以提炼出输入组织规律输入要素说明示例指标 (metrics)你要算什么daily active users、conversion rate维度 (dimensions)按什么拆plan tier、cohort过滤器 (filters)限定范围last 30 days、signed up last month粒度 (granularity)时间颗粒度daily、monthly、weekly分组与排序偏好输出组织方式broken down by、ranked by附加资产可上传 schema 图/DDL[upload a schema diagram]注意第三条调用展示了命令的文件读取能力可以直接上传 schema 图、DDL 或数据库文档命令会先理解表结构再生成查询——这与sql-queriesskill 的File Reading能力一一对应。三、四步工作流从问题到可迭代的 SQL/write-query将生成过程规范化为四个步骤每一步都有明确的产出物。Step 1: 理解问题Understand the Question解析自然语言请求识别四类要素要什么数据指标、维度、过滤器时间范围与粒度是近 30 天还是去年 Q4按天、周还是月聚合分组与排序偏好按什么字段拆解、按什么规则排名输出预期原始明细数据、聚合结果、还是排行榜。这一步的质量决定了后续所有环节因此文档也建议如果请求含糊例如只说 active users 而没有定义活跃先请用户精确定义指标而不是直接猜。Step 2: 确定 SchemaDetermine Schema分两种情况处理有 schema 可用时上传了图、DDL 或文字描述将请求映射到具体的表和列识别必要的 JOIN 关系。没有 schema 时先询问数据库类型BigQuery、PostgreSQL、MySQL 等根据问题推断一个合理的 schema并请用户确认默认采用常见 SaaS 数据模型的约定如users、sessions、subscriptions之类的标准表命名。从源码结构看这套先确认结构、再动手写的思路贯穿整个pm-data-analytics插件例如 analyze-cohorts.md 的 Step 2 同样要求先澄清什么定义群组、留存事件是什么、时间粒度是什么确保分析口径先对齐。Step 3: 生成查询Generate Query这一步显式调用sql-queriesskill这是命令与 skill 协作的标准模式——在 pm-data-analytics/README.md 中sql-queries被描述为Generate SQL queries from natural language descriptions。生成规范包括使用正确的方言书写为可读性和性能做优化加入注释解释关键逻辑原文档特别强调PM 会把查询分享给分析师注释是理解意图的关键复杂查询使用CTE提升可读性处理边界情况NULL、时区问题、重复数据处理。Step 4: 呈现并迭代Present and Iterate输出采用固定模板详见下一节随后主动提供四种迭代方向修改当前查询——加过滤器、改分组、延长时间范围生成关联指标的配套查询围绕该查询搭建仪表盘对应同插件的metrics-dashboard思路生成该指标的群组分析版本引导到analyze-cohorts命令。这种命令完成后的下一步引导正是 README.md 中描述的 marketplace 设计哲学Commands are designed to flow into each other, matching the PM workflow.四、标准输出模板可复用的查询交付格式原文档给出了一个结构完整的输出模板这里完整保留并补充每个字段的用途说明## SQL Query: [What It Does] **Dialect**: [BigQuery / PostgreSQL / MySQL / etc.] **Tables used**: [list] ### Query [SQL code block with comments] ### What This Returns [Description of the output: columns, rows, expected result shape] ### Assumptions - [Schema assumptions made] - [Business logic assumptions] ### Notes - [Performance considerations for large datasets] - [Edge cases handled or flagged]各字段的实战意义字段作用为什么重要Dialect声明方言接收方知道该在哪个引擎执行避免方言混用报错Tables used列出涉及的表让分析师快速核对取数范围Query带注释的 SQL注释交代为什么这么写降低交接成本What This Returns描述输出形状提前对齐列、行、聚合结果的预期Assumptions显式声明假设让 schema 与业务逻辑假设可被质疑、可被修正Notes性能与边界情况大数据集上的慢查询风险、NULL/时区等被处理或被标记的边界五、底层支撑sql-queries skill 的能力纵深命令的 Step 3 委托给 pm-data-analytics/skills/sql-queries/SKILL.md。该 skill 自身有四步执行路径与命令的工作流形成命令编排 → skill 执行的层级关系理解你的数据库 schema读取上传的 SQL/文档/图描述抽取表名、列定义、数据类型、关系识别主键、外键和索引策略处理你的请求澄清需要的确切数据、确认方言BigQuery / PostgreSQL / MySQL / Snowflake 等、收集附加要求过滤器、聚合、排序生成优化查询写出利用表结构的 SQL、注释复杂逻辑、给出大数据集性能建议、提供可选替代方案解释与测试用通俗英语解释查询逻辑、建议验证方式、提供性能优化技巧还可按需生成测试脚本或样本数据。skill 声明的能力清单进一步说明它能做什么多方言支持BigQuery、PostgreSQL、MySQL、Snowflake、SQL Server文件读取schema 文件、SQL dump、数据文档查询优化建议索引、分区与性能改进解释为学习和文档化拆解查询测试生成测试查询与样本数据脚本脚本执行为你的数据库生成可执行的 SQL 脚本。skill 的三个使用示例也给出了 schema 输入的典型形态——第一种上传database_schema.sql第二种直接在对话里用文字描述表结构如 Users table (id, email, created_at), Sessions table (id, user_id, timestamp, duration)第三种直接指定方言与分析目标。第二种形态尤其适合还没有 DDL 文件的场景。六、实战示例把工作流落到具体查询基于原文档优化可读性、CTE 优先、处理边界的规范下面给出贴合三种调用的示例作为教学示意非仓库内已有代码示例 1过去 30 天按套餐分层的日活用户BigQuery-- 每日活跃用户以存在会话记录作为活跃的定义 WITH active_users AS ( SELECT user_id, DATE(session_ts) AS active_date FROM project.analytics.sessions WHERE session_ts TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY user_id, active_date ) SELECT active_date, u.plan_tier, COUNT(DISTINCT a.user_id) AS daily_active_users FROM active_users AS a JOIN project.analytics.users AS u ON a.user_id u.user_id GROUP BY active_date, u.plan_tier ORDER BY active_date, u.plan_tier;示例 2上月注册但从未完成引导的用户PostgreSQL-- 未完成引导定义为在 users 表中 onboarding_completed_at 为空 SELECT u.id, u.email, u.signup_at FROM users AS u WHERE u.signup_at date_trunc(month, CURRENT_DATE) - INTERVAL 1 month AND u.signup_at date_trunc(month, CURRENT_DATE) AND u.onboarding_completed_at IS NULL; -- 显式处理 NULL未完成 无完成时间示例 3试用转付费转化率按群组-- 群组口径按注册月份分组观察试用用户中完成付费的比例 WITH signup_cohorts AS ( SELECT user_id, DATE_TRUNC(month, signup_at) AS cohort_month FROM users ), paid AS ( SELECT user_id FROM subscriptions WHERE status paid ) SELECT c.cohort_month, COUNT(DISTINCT c.user_id) AS trial_users, COUNT(DISTINCT p.user_id) AS paid_users, SAFE_DIVIDE(COUNT(DISTINCT p.user_id), COUNT(DISTINCT c.user_id)) AS trial_to_paid_rate FROM signup_cohorts AS c LEFT JOIN paid AS p ON c.user_id p.user_id GROUP BY c.cohort_month ORDER BY c.cohort_month;这三个示例分别演示了时区与时间窗口处理TIMESTAMP_SUB/date_trunc、NULL 边界显式化IS NULL判断、CTE 拆分复杂逻辑、以及LEFT JOIN保留群组基数——都是原文档 Step 3 规范的直接落地。若需要命令还可在输出时附带Notes提醒对大数据集sessions表应建议按时间分区并建(user_id, session_ts)复合索引。七、与同插件命令的协作数据分析三件套/write-query不是孤立的。它属于pm-data-analytics插件的三个命令之一见 pm-data-analytics/README.md三者在分析流程上互相衔接/write-query先生成取数 SQL把业务问题翻译成可执行的查询/analyze-cohorts把write-query产出的用户活动数据加工成留存曲线、功能采用趋势、群组对比报告——其工作流中没有数据时先生成 SQL 查询来抽取数据的路径正是write-query的用武之地/analyze-test对 A/B 测试结果做统计显著性、样本量校验和 ship/extend/stop 决策——其 Step 5 会主动提议生成 SQL 以监控发布后的指标把查询能力延续到实验落地之后。也就是说一个典型的 PM 数据分析流程可以是用/write-query定义指标口径和取数 → 用/analyze-cohorts看留存与功能采用 → 用/analyze-test验证优化实验。三个命令共享同插件内的 skill 底座sql-queries负责取数、cohort-analysis负责群组、ab-test-analysis负责实验形成自洽闭环。这一协作结构也符合 CLAUDE.md 的Commands use skills. Some skills serve multiple commands.设计原则。八、工程视角命令格式如何被校验与维护从仓库工程角度看/write-query的 frontmatter 和文档结构不是随意书写的而是有自动化校验约束的validate_plugins.py 中的validate_command()会解析命令文件的 YAML frontmatter检查必填的description字段与推荐的argument-hint字段对应REQUIRED_COMMAND_FIELDS [description]、RECOMMENDED_COMMAND_FIELDS [argument-hint]同文件的validate_cross_references()会扫描命令正文中形如**skill-name** skill的引用确认引用的 skill 存在于同一插件内——write-query.md中 Apply thesql-queriesskill 这种写法就是该规则的产物CLAUDE.md 规定命令使用单一的$ARGUMENTS占位符、skill 的name必须与目录名一致、frontmatter 保持精简始终加载而细节放入正文触发时加载——这解释了为什么命令正文以argument-hint开头、核心逻辑放在 Workflow 章节。在仓库根目录运行python3 validate_plugins.py即可对所有 9 个插件执行上述校验这也是 CLAUDE.md 建议的任何 skill/command 改动后的第一步操作。九、最佳实践清单综合原文档的 Notes 与sql-queriesskill 的 Tips使用/write-query的最佳姿势可以归纳为注释永远要写PM 会把查询交给分析师注释承载的是为什么这样取数的意图而不只是 SQL 语法可读优先于炫技默认用 CTE 而不是嵌套子查询复杂逻辑拆解到命名清晰的公共表表达式里主动标记慢查询对大数据集可能较慢的查询要标记出来并给出优化建议索引、分区、裁剪扫描范围含糊指标先问清楚例如 active users 这样的说法必须先请用户定义活跃的判定口径不确定方言就多版本输出如果用户不确定自己用的是哪个数据库主动提议用多种方言生成同一查询提供上下文尽量上传 schema 文件或描述表结构让生成结果直接命中真实表名而非推断带上约束条件说明数据量级、时间范围、性能需求让优化有依据指定输出格式如果对返回结果有特定形态要求明细/聚合/排名在请求中一并说明。十、小结/write-query是 pm-skills 数据插件中业务问题 → 可执行 SQL这一环节的标准工具它用四步工作流理解问题 → 确定 schema → 生成查询 → 呈现迭代把自然语言转化为带注释、可读、考虑边界与性能的查询背后由sql-queriesskill 提供多方言与文件读取能力向上与analyze-cohorts、analyze-test组成完整的数据分析链路向下受validate_plugins.py的命令格式校验约束。对于想把手动写 SQL 的环节交给 AI 的产品经理和分析师这是一个可以直接套用的交互范式与输出标准。【免费下载链接】pm-skillsPM Skills Marketplace: 100 agentic skills, commands, and plugins — from discovery to strategy, execution, launch, and growth.项目地址: https://gitcode.com/GitHub_Trending/pm/pm-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表