Install
openclaw skills install @hht1ng/question通用模版。用户上传问句文档(xlsx),自动提取指标、维度和过滤条件,生成完整的问句模型.xlsx(包含01-问句、11-指标、12-维度、13-业务模型、00-业务规则等多个Sheet)。
openclaw skills install @hht1ng/question本 Skill 用于BI看板/数据产品搭建前期的需求梳理。用户上传问句文档(xlsx)及可选的参考文档,Skill 自动逐行处理问句,提取并填充"对应指标""对应维度""过滤条件",并生成完整的问句模型.xlsx,包含问句分析结果、指标定义、维度定义、业务模型矩阵等多个 Sheet。
适用场景:任意项目、任意业务领域的需求问句梳理。
最终输出的问句模型.xlsx 包含以下 Sheet:
| Sheet 名称 | 说明 | 生成方式 |
|---|---|---|
00-通用说明 | 平台通用约定和说明 | 固定内容(按模版输出) |
00-业务规则 | 从问句中提取的业务规则、同义词、计算口径 | 自动生成 + 参考文档补充 |
01-问句 | 问句及其分析结果(核心Sheet) | 逐行处理自动填充 |
11-指标 | 本批次涉及的所有指标定义 | 汇总去重自动生成 |
12-维度 | 本批次涉及的所有维度定义 | 汇总去重自动生成 |
13-业务模型 | 指标×维度二维矩阵 | 关联匹配自动生成 |
14-业务模型表关系图 | 表关系图(预留) | 留空,待人工补充 |
21-数据来源系统 | 数据来源系统信息 | 参考文档提取或留空 |
20-知识 | 业务知识库 | 参考文档提取或留空 |
用户上传以下文档,所有参考材料均为非必选(有则使用,无则跳过):
| 类型 | 文档 | 是否必须 | 说明 |
|---|---|---|---|
| 待处理 | 问句文档(xlsx) | 必须 | 至少包含"问句"列。可能还有"问句模式""提出人""使用组织""业务场景""问句分类"等列,以及作为参考数据的内嵌Sheet(如数据字典) |
| 参考 | 指标维度说明书 | 否 | 指标定义和维度定义 → skill-指标维度说明书 |
| 参考 | 业务知识说明书 | 否 | 业务术语和知识规则 → skill-业务知识说明书 |
| 参考 | 数据字典 | 否 | 数据表字段定义 → skill-数据字典 |
| 参考 | 表结构数据 | 否 | 数据表 DDL 或字段级结构说明 → skill-表结构数据 |
注意:问句文档(xlsx)本身可能包含多个 Sheet,其中除问句 Sheet 外的其他 Sheet(如数据字典、明细表整合等)应作为额外的参考数据源使用,其作用等同于数据字典/表结构数据。
接收输入文档
│
├── 读取问句文档(xlsx),识别所有 Sheet
│ ├── 识别主问句 Sheet(包含"问句"列的Sheet)
│ └── 识别辅助数据 Sheet(可作为数据字典/表结构参考的Sheet)
│
├── [非必选] 文档 "指标维度说明书" → 如提供,构建指标名称→详情映射 + 维度属性→详情映射
├── [非必选] 文档 "业务知识说明书" → 如提供,提取三类映射规则
├── [非必选] 文档 "数据字典" → 如提供,构建字段映射
└── [非必选] 文档 "表结构数据" → 如提供,构建表结构映射
│
▼
读取问句 Sheet → 逐行处理
│
▼
生成问句模型.xlsx(多个Sheet)
| Skill 文件 | 读取的文档 | 读取策略 |
|---|---|---|
skill-指标维度说明书.md | 指标维度说明书 | 非必选(文档提供则读) |
skill-业务知识说明书.md | 业务知识说明书 | 非必选(文档提供则读) |
skill-数据字典.md | 数据字典 | 非必选(文档提供则读) |
skill-表结构数据.md | 表结构数据 | 非必选(文档提供则读) |
读取问句文档(xlsx):
[非必选] 如提供 指标维度说明书 文档:
指标名称 → {同义词、计算逻辑、数据源…} 映射维度属性 → {维度成员、来源字段…} 映射[非必选] 如提供 业务知识说明书 文档:
[非必选] 如提供 数据字典 文档:
表名 → 字段名 → 字段说明 映射[非必选] 如提供 表结构数据 文档:
skill-表结构数据)加载内嵌辅助数据(来自问句 xlsx 的其他 Sheet):
字段名 → {描述、字段成员、所属项目/表} 映射对问句 Sheet 的每一行,依次提取:
主匹配路径(按优先级):
① "指标维度说明书"(如有)→ 精确匹配"指标名称"
② "指标维度说明书"(如有)→ 模糊匹配"说明"列中的同义词/别名
③ "数据字典"(如有)→ 搜索字段名和字段说明
④ "表结构数据"(如有)→ 搜索表字段名和字段注释
⑤ 问句文档内嵌辅助数据 Sheet → 搜索字段名和描述
⑥ 从问句文本直接提取
⑦ 无法识别 → 输出"未识别指标,请补充说明"
交叉参考:"业务知识说明书"(如有),同时参与匹配
- 术语默认含义:泛指词不加修饰时的默认指向(优先匹配默认指标)
- 同义词补充:补充指标维度说明书中未列出的别名映射
- 计算口径拆解:复合概念按公式拆解为原子指标组合
- 连带指标:某类问句需默认连带输出的附属指标
特殊处理:
- 同比/环比:基准指标 + 基准指标同比 + 基准指标环比
- 增长率:识别基数后标注"XX增长率"
- 占比/份额:识别分子分母,标注计算方式
主匹配路径(按优先级):
① "指标维度说明书"(如有)→ 匹配"维度属性"
② "指标维度说明书"(如有)→ 反向匹配"维度成员"(成员值→维度)
③ "数据字典"(如有)→ 搜索相关字段
④ "表结构数据"(如有)→ 搜索表字段名和字段注释
⑤ 问句文档内嵌辅助数据 Sheet → 搜索字段名和描述
⑥ 从问句文本直接提取
⑦ 无法识别 → 输出"未识别维度,请补充说明"
交叉参考:"业务知识说明书"(如有),同时参与匹配
- 维度同义词:业务简称/俗称到标准维度属性的映射
- 组织层级:某组织术语包含哪些子组织的定义(反向映射到部门/团队维度)
- 术语归属:模糊术语归类到正确的维度类别
- 枚举值定义:某维度下包含的具体值列表(反向匹配:值→维度)
- 范围反查:某项目/市场范围包含的实体清单→通过实体反查所属范围
主识别路径:
- 时间范围 → 时间=YYYY年M月 / 时间=YYYY年Q季度 / 时间范围=近N年
- 数量限制 → 排名≤N / TOP N
- 分类筛选 → 分类名称=具体值
- 地域限制 → 省份=XX / 城市=XX / 大区=XX
- 定义范围 → 定义市场/口径=具体名称
交叉参考:"业务知识说明书"(如有),同时参与匹配
- 数据来源规则:关键词→数据源映射(自动添加数据来源条件)
- 范围补全:某定义包含的实体清单→补全隐含的范围约束
- 关联键规则:跨数据源关联的推荐字段
- 标注规则:按数据来源添加对应的标注说明
- 特殊周期:特定业务线的自定义时间周期(替换自然年)
交叉参考:"表结构数据"和内嵌辅助数据(如有),用于过滤条件字段校验
- 验证提取的字段名是否在表结构中存在
无法明显识别时留空。
从分析过程中汇总业务提示:
- 涉及的计算口径说明(如"销售额=数量×单价")
- 特殊数据来源说明(如"已购市场数据=外部竞品数据")
- 需注意的业务术语说明
- 大模型需要特别注意的处理逻辑
处理完所有问句后,汇总生成各输出 Sheet:
01-问句包含以下列(保留输入已有的列,补充分析结果列):
| 列 | 填充规则 |
|---|---|
| 序号 | 从1开始自增;若输入已有则保留 |
| 提出人 | 若输入已有则保留,否则留空 |
| 使用组织 | 若输入已有则保留,否则留空 |
| 业务场景 | 若输入已有则保留,否则从问句推断 |
| 问句分类 | 若输入已有则保留,否则从问句推断(指标查询与对比/趋势分析/原因分析/预测分析等) |
| 问句 | 原始问句文本 |
| 问句模式 | 若输入已有则保留;否则根据上下文判断单轮/多轮 |
| 展示样式 | 从问句推断(表格/图表);未提及默认表格 |
| 期望的答案 | 根据问句和提取的指标维度生成简洁答案描述 |
| 对应指标 | 多个指标用换行分隔;无法识别时输出"未识别指标,请补充说明" |
| 对应维度 | 多个维度用换行分隔;无法识别时输出"未识别维度,请补充说明" |
| 过滤条件 | 字段=值 格式,多个条件用换行分隔;无明显条件留空 |
| 业务提示 | 涉及的计算口径、数据来源、术语说明等 |
| 是否数据齐备 | 根据指标和维度匹配情况判断:数据齐备/计算指标/需补充数据 |
11-指标汇总所有问句中识别的不重复指标,每行一个指标:
| 列 | 填充规则 |
|---|---|
| 指标一级分类 | 从指标维度说明书提取,或根据问句推断 |
| 指标二级分类 | 从指标维度说明书提取,或根据问句推断 |
| 指标名称 | 提取的指标标准名称 |
| 是否时点值 | 是/否,根据指标性质判断 |
| 指标定义 | 指标的业务含义描述 |
| 指标计算逻辑 | 计算公式(如有) |
| 主要分析维度 | 该指标常关联的维度列表 |
| 指标类型 | 原子指标/计算指标 |
| 来源系统 | 从参考文档提取 |
| 来源表 | 从参考文档提取 |
| 业务日期 | 从参考文档提取 |
| 来源字段 | 从参考文档提取 |
若指标来自"未识别指标"则各列尽量推断,无法推断的留空。
12-维度汇总所有问句中识别的不重复维度属性,每行一个维度属性:
| 列 | 填充规则 |
|---|---|
| 维度分类 | 公共维度/时间维/客户维/产品维/地域维/组织维等 |
| 维度名称 | 维度大类名称(如"日期维""客户维""产品维") |
| 维度属性 | 具体属性名(如"年""省份""品名") |
| 维度成员 | 维度取值示例(从问句中提取的具体值) |
| 维度说明 | 维度含义补充说明 |
| 来源系统 | 从参考文档提取 |
| 来源表 | 从参考文档提取 |
| 来源字段 | 从参考文档提取 |
13-业务模型构建指标×维度二维矩阵:
00-业务规则汇总分析过程中发现的业务规则:
| 列 | 填充规则 |
|---|---|
| 序号 | 自增编号 |
| 问句触发关键字 | 触发该规则的问句关键词 |
| 分类 | 业务规则/同义词与别名/业务术语 |
| 描述 | 规则的具体描述 |
| 处理方案 | 配知识 / 大模型处理 |
| 备注 | 补充说明(如"计算指标") |
自动识别以下类型的业务规则:
00-通用说明输出固定的通用说明内容(与模版保持一致)。
21-数据来源系统20-知识14-业务模型表关系图{原文件名前缀}-问句模型.xlsx表头行必须使用与问句模板.xlsx 完全一致的格式:
| 属性 | 值 | 说明 |
|---|---|---|
| 填充色 | #4874CB(蓝色) | openpyxl: PatternFill('solid', fgColor='FF4874CB') |
| 字体颜色 | #FFFFFF(白色) | openpyxl: Font(color='FFFFFFFF') |
| 字体加粗 | bold=True | — |
| 字体大小 | 9pt | openpyxl: Font(size=9) |
| 水平对齐 | center | Alignment(horizontal='center') |
| 垂直对齐 | center | Alignment(vertical='center') |
| 边框 | 黑色细线(thin),上/左/右有框线,下边框无 | openpyxl: Border(left=Side('thin', 'FF000000'), right=Side('thin', 'FF000000'), top=Side('thin', 'FF000000')) |
| 属性 | 值 |
|---|---|
| 字体颜色 | #000000(黑色) |
| 字体大小 | 9pt |
| 字体加粗 | bold=False |
| 垂直对齐 | center |
| 填充 | 无 |
00-业务规则:第1行为合并单元格的标题行(Row1 A1:F1 合并),内容"先以问句做切入点,再以知识体系补充调研";第2行为蓝色表头行11-指标:第1行为合并单元格的标题行(Row1 A1:L1 合并),内容"指标清单",字号14pt;第2行为蓝色表头行12-维度:第1行为合并单元格的标题行(Row1 A1:H1 合并),内容"维度清单",字号14pt;第2行为蓝色表头行13-业务模型:第1行为蓝色表头行(无标题行)01-问句:第1行为蓝色表头行(无标题行),设置自动筛选 auto_filter00-通用说明:第1行为蓝色表头行(无标题行)from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
HEADER_FILL = PatternFill('solid', fgColor='FF4874CB')
HEADER_FONT = Font(bold=True, color='FFFFFFFF', size=9)
HEADER_ALIGN = Alignment(horizontal='center', vertical='center')
HEADER_BORDER = Border(
left=Side('thin', 'FF000000'),
right=Side('thin', 'FF000000'),
top=Side('thin', 'FF000000'),
)
DATA_FONT = Font(color='FF000000', size=9)
DATA_ALIGN = Alignment(vertical='center')
def format_header(ws, row, max_col):
for col in range(1, max_col + 1):
cell = ws.cell(row=row, column=col)
cell.fill = HEADER_FILL
cell.font = HEADER_FONT
cell.alignment = HEADER_ALIGN
cell.border = HEADER_BORDER
def format_data_row(ws, row, max_col):
for col in range(1, max_col + 1):
cell = ws.cell(row=row, column=col)
cell.font = DATA_FONT
cell.alignment = DATA_ALIGN
| 列 | 质量标准 |
|---|---|
| 对应指标 | 优先使用参考文档中的标准名称;多个指标用换行分隔;无法识别时明确标注 |
| 对应维度 | 使用"维度名称.维度属性"格式(如"日期维.年份""地域维.省份");无法识别时明确标注 |
| 过滤条件 | 使用"维度属性=值"格式(如"日期维.年份=2024""省份=四川");多个条件换行分隔 |
| 业务提示 | 简洁说明计算逻辑、数据来源注意点;使用【业务术语】【数据模型】【大模型】标签分类 |
| 是否数据齐备 | "数据齐备"=指标和维度都能匹配到数据源;"计算指标"=需要计算;"需补充数据"=缺少数据源 |
| 场景 | 处理方式 |
|---|---|
| 来自指标维度说明书 | 直接引用标准定义 |
| 来自数据字典/表结构 | 引用字段说明,标注来源 |
| 从问句提取 | 根据问句上下文推断定义,标注"待确认" |
| 无法识别 | 输出"未识别指标,请补充说明",其他列留空 |
维度统一使用分层命名:
业务知识是跨三类提取的交叉参考源,其内容已分别集成到上方的指标提取、维度提取、过滤条件提取步骤中。处理每条问句时,三类提取均需同步参考业务知识中的映射规则,不做独立的后处理步骤。
业务知识对三个提取步骤的核心贡献:
| 提取类型 | 业务知识贡献 |
|---|---|
| 指标 | 术语默认含义消歧、同义词补充、计算口径拆解、连带指标提示 |
| 维度 | 维度同义词映射、组织层级关系、术语归属、枚举值反向匹配、范围反查 |
| 过滤条件 | 数据来源判定规则、范围补全、关联键规则、标注规则、特殊周期规则 |
表结构数据是新增的兜底参考源,提供实际数据表的 DDL 或字段级结构说明。在指标维度说明书和数据字典无法匹配时,可从表结构数据中检索字段名和注释作为补充匹配依据。同时可用于过滤条件的字段名校验。
表结构数据对三个提取步骤的贡献:
| 提取类型 | 表结构数据贡献 |
|---|---|
| 指标 | 字段名和字段注释搜索,兜底匹配候选指标 |
| 维度 | 字段名和字段注释搜索,兜底匹配候选维度 |
| 过滤条件 | 字段名存在性校验 |
问句文档(xlsx)中除问句 Sheet 外的其他 Sheet,如包含字段名、描述、字段成员等信息,应作为内嵌的参考数据源使用。其优先级等同数据字典,高于表结构数据。
内嵌辅助数据对三个提取步骤的贡献:
| 提取类型 | 内嵌辅助数据贡献 |
|---|---|
| 指标 | 从"字段""描述"列搜索业务指标,从项目/表标记列确认指标归属 |
| 维度 | 从"字段""字段成员"列提取维度属性和维度值 |
| 过滤条件 | 从字段名验证过滤条件的有效性 |
"基于近3年数据,去年大扶康定义市场在全国/某些省份的市场份额分别是多少?同比、环比"
| 列 | 填充内容 |
|---|---|
| 问句分类 | 指标查询与对比 |
| 问句模式 | 单轮 |
| 展示样式 | 表格 |
| 期望的答案 | 输出大扶康定义市场在全国各省份的市场份额、同比和环比数据 |
| 对应指标 | 销售数量(或销售金额)\n市场份额\n市场份额同比\n市场份额环比 |
| 对应维度 | 日期维.年份\n地域维.省份\n产品维.品名 |
| 过滤条件 | 日期维.年份=去年\n产品维.品名=大扶康\n数据口径=定义市场 |
| 业务提示 | 市场份额=大扶康销售额/定义市场总销售额【数据模型】\n同比=(当期-去年同期)/去年同期【数据模型】\n近3年数据为趋势参考,去年为主要分析年【业务术语】 |
| 是否数据齐备 | 计算指标 |