SQL To BI Builder
Overview
Use this skill to transform
sql.md query collections into a service-based BI prototype.
This skill must generate both backend and frontend services from SQL-derived artifacts.
Workflow
- 1. Parse markdown SQL blocks into a normalized query catalog.
- Infer query semantics (metrics, dimensions, time columns, grain hints).
- Extract P0 filter candidates from SQL DSL (
WHERE predicates) into structured filter metadata (dsl_ast first, regex fallback). - Recommend chart types from inferred semantics.
- Build a dashboard specification with layout coordinates.
- Generate a UI scaffold that renders the dashboard structure.
- Generate service bundle (
services/backend + services/frontend) that depends on generated SQL artifacts.
Input Contract
Expect one markdown file with one or more SQL fenced blocks.
Use this pattern for best results:
CODEBLOCK0 sql
SELECT DATE(pay_time) AS dt, SUM(amount) AS gmv
FROM orders
WHERE pay_status = 'paid'
GROUP BY 1
ORDER BY 1;
CODEBLOCK1
Rules:
- - Keep one logical query per SQL fenced block.
- Provide stable
id metadata when possible. - Keep aliases explicit (
AS alias) to improve semantic inference.
Python Environment Setup (Required)
Run from the skill folder.
- 1. Ensure
python3.11 is installed and available in PATH.
If missing, follow
references/install_python311.md.
- 2. Create virtual environment:
CODEBLOCK2
- 3. Activate and verify:
CODEBLOCK3
Expected version: Python 3.11.x.
Use --with-dev when dev dependencies are needed:
CODEBLOCK4
Run Commands
After activating
.venv, run pipeline and service generation:
CODEBLOCK5
Run each step separately when debugging:
CODEBLOCK6
Start generated services:
CODEBLOCK7
Runtime And Version Control
- - Use Python
3.11.x only. - Keep
.python-version at 3.11. - Keep
pyproject.toml requires-python = ">=3.11,<3.12". - Install dev dependency before running upstream validator:
pip install -r requirements-dev.txt. - Commit changes by scope: parser, semantics, chart rules, layout rules, scaffold.
- Tag stable milestones using semantic version tags such as
v0.1.0, v0.2.0.
Outputs
- -
query_catalog.json: Parsed query units and metadata. - INLINECODE22 : Field roles, grain hints, and
dsl_filters extracted from SQL conditions.
dsl_filters includes
value_type and
value_format, with date support for:
yyyy-mm-dd,
yyyy/mm/dd,
yyyymmdd,
yyyy-mm-dd hh:mm:ss, ISO-8601,
yyyymmdd_int, unix second/ms integers.
- -
chart_plan.json: Recommended chart type per query. - INLINECODE33 : Final dashboard definition for rendering, including page-level
global_filters. - INLINECODE35 : Static UI scaffold (
index.html, app.js, style.css). - INLINECODE39 : FastAPI backend service using generated artifacts.
- INLINECODE40 : Frontend service consuming backend API.
- INLINECODE41 and
services/start_frontend.sh: service start scripts.
UI Upgrade Notes (2026-03)
When using repo-level service UI (
services/frontend), the upgraded experience includes:
- - KPI summary strip (click-to-focus widgets)
- Layout switch (
Classic / Focus) - New
Midnight Ops theme preset - stronger visual hierarchy for demos
Heuristic References
Load only the file needed for the current issue:
- - SQL parsing and naming constraints: INLINECODE47
- Chart mapping rules: INLINECODE48
- BI layout and widget sizing: INLINECODE49
- Python 3.11 installation and venv setup: INLINECODE50
Limits And Escalation
Treat current scripts as heuristic MVP.
Escalate for manual review when SQL includes nested CTE chains, window-heavy ranking logic, or unions with incompatible column semantics.
Fallback to
table visualization when chart confidence is low.
SQL 转 BI 构建器
概述
使用此技能将 sql.md 查询集合转换为基于服务的 BI 原型。
此技能必须根据 SQL 衍生产物生成后端和前端服务。
工作流程
- 1. 将 markdown SQL 代码块解析为标准化查询目录。
- 推断查询语义(指标、维度、时间列、粒度提示)。
- 从 SQL DSL(WHERE 谓词)中提取 P0 候选过滤器,转换为结构化过滤器元数据(优先使用 dsl_ast,正则表达式作为备选)。
- 根据推断的语义推荐图表类型。
- 构建包含布局坐标的仪表盘规范。
- 生成渲染仪表盘结构的 UI 脚手架。
- 生成依赖 SQL 衍生产物的服务包(services/backend + services/frontend)。
输入约定
期望一个包含一个或多个 SQL 围栏代码块的 markdown 文件。
为获得最佳效果,请使用此模式:
md
销售仪表盘
卡片:每日 GMV
- - id: dailygmv
- 数据源: mysqlprod
- 刷新频率: 5m
- 图表: auto
- 过滤器: date, region
sql
SELECT DATE(pay_time) AS dt, SUM(amount) AS gmv
FROM orders
WHERE pay_status = paid
GROUP BY 1
ORDER BY 1;
规则:
- - 每个 SQL 围栏代码块保持一个逻辑查询。
- 尽可能提供稳定的 id 元数据。
- 保持别名显式(AS alias)以改善语义推断。
Python 环境设置(必需)
从技能文件夹运行。
- 1. 确保已安装 python3.11 并在 PATH 中可用。
如果缺失,请遵循 references/install_python311.md。
- 2. 创建虚拟环境:
bash
bash scripts/setup_venv.sh
- 3. 激活并验证:
bash
source .venv/bin/activate
python --version
预期版本:Python 3.11.x。
当需要开发依赖时使用 --with-dev:
bash
bash scripts/setup_venv.sh --with-dev
运行命令
激活 .venv 后,运行流水线和服务生成:
bash
python scripts/run_pipeline.py \
--input /abs/path/sql.md \
--out /abs/path/out \
--with-services
调试时分别运行每个步骤:
bash
python scripts/parsesqlmd.py --input /abs/path/sql.md --output /abs/path/out/query_catalog.json
python scripts/infersemantics.py --input /abs/path/out/querycatalog.json --output /abs/path/out/semantic_catalog.json
python scripts/recommendchart.py --input /abs/path/out/semanticcatalog.json --output /abs/path/out/chart_plan.json
python scripts/builddashboardspec.py --queries /abs/path/out/querycatalog.json --semantics /abs/path/out/semanticcatalog.json --charts /abs/path/out/chart_plan.json --output /abs/path/out/dashboard.json
python scripts/generateuiscaffold.py --dashboard /abs/path/out/dashboard.json --out /abs/path/out/ui
python scripts/generateservicebundle.py --artifacts /abs/path/out --output /abs/path/out/services
启动生成的服务:
bash
bash /abs/path/out/services/start_backend.sh
bash /abs/path/out/services/start_frontend.sh
运行时和版本控制
- - 仅使用 Python 3.11.x。
- 保持 .python-version 为 3.11。
- 保持 pyproject.toml 中 requires-python = >=3.11,<3.12。
- 在运行上游验证器之前安装开发依赖:pip install -r requirements-dev.txt。
- 按范围提交更改:解析器、语义、图表规则、布局规则、脚手架。
- 使用语义版本标签标记稳定里程碑,例如 v0.1.0、v0.2.0。
输出
- - querycatalog.json:解析后的查询单元和元数据。
- semanticcatalog.json:字段角色、粒度提示以及从 SQL 条件中提取的 dsl_filters。
dsl
filters 包含 valuetype 和 value_format,支持以下日期格式:
yyyy-mm-dd、yyyy/mm/dd、yyyymmdd、yyyy-mm-dd hh:mm:ss、ISO-8601、yyyymmdd_int、unix 秒/毫秒整数。
- - chartplan.json:每个查询推荐的图表类型。
- dashboard.json:用于渲染的最终仪表盘定义,包含页面级 globalfilters。
- ui/:静态 UI 脚手架(index.html、app.js、style.css)。
- services/backend:使用生成产物的 FastAPI 后端服务。
- services/frontend:消费后端 API 的前端服务。
- services/startbackend.sh 和 services/startfrontend.sh:服务启动脚本。
UI 升级说明(2026-03)
当使用仓库级服务 UI(services/frontend)时,升级体验包括:
- - KPI 摘要条(可点击聚焦的小部件)
- 布局切换(经典 / 聚焦)
- 新的 午夜运维 主题预设
- 更强的演示视觉层次
启发式参考
仅加载当前问题所需的文件:
- - SQL 解析和命名约束:references/sqlstyle.md
- 图表映射规则:references/chartrules.md
- BI 布局和小部件尺寸:references/layoutrules.md
- Python 3.11 安装和虚拟环境设置:references/installpython311.md
限制与升级
将当前脚本视为启发式 MVP。
当 SQL 包含嵌套 CTE 链、窗口函数密集型排名逻辑或列语义不兼容的联合时,升级至人工审查。
当图表置信度低时,回退至 表格 可视化。