梳子

梳子 · 企业自助 BI

把数据,梳理清楚。

多个来源、多套口径、多份报表,梳成一套。取数有版本,指标有定义,答案有来处,权限有边界。

乱的是来源,不该乱的是口径。

  • 1 套指标口径,报表、AI 与接口共用
  • 10 种数据库可连接,另有文件上传与接口取数
  • 1 处行权限的执行点,谁也绕不过

产品一览

笔记本里写,
对话里问,
应用里看。

三种入口,底下是同一个语义层:同样的口径、同样的权限、同样的数字,不管你从哪扇门进来。

notebook · retail_q3示例数据

SQL

-- 第三季度各品类收入,仅含已确认订单
SELECT category,
       SUM(amount) AS revenue
FROM orders
WHERE status = 'confirmed'
  AND quarter = 'Q3'
GROUP BY category
ORDER BY revenue DESC

5 行 · 完成

结果

品类收入环比
服饰454万+3.9%
家居448万+8.2%
数码304万-1%
美妆270万+1.9%
食品213万+6%

图表

各品类收入

  • 454服饰
  • 448家居
  • 304数码
  • 270美妆
  • 213食品

在受限的 SQL 沙箱里运行,只能读你有权限读的表。

agent · retail_model示例数据

用大白话提问。Agent 读取语义层、亮出每一步,再把答案画出来。

按区域和季度对比收入,并按品类堆叠。

  1. cube_list_models1 个模型
  2. cube_get_metadataretail_model
  3. cube_queryrevenue × region × quarter

仅限你有权限的数据

三个区域的收入逐季上升。华东最大,服饰在每个区域都排第一,数码是唯一在下滑的品类。

区域 × 季度 × 品类的收入
0200400600800Q1Q2Q3华东Q1Q2Q3华南Q1Q2Q3华北
  • 服饰
  • 家居
  • 美妆
  • 数码
  • 食品
app · retail_overview已发布
示例数据
收入
1689万
+4.0% 较上季度
收入最高品类
服饰
增长最快品类
家居

各品类收入

  • 服饰454万
  • 家居448万
  • 美妆270万
  • 数码304万
  • 食品213万

渠道构成 · 服饰

  • 线上58%
  • 门店30%
  • 批发12%

行级权限对每一位查看者生效。

示意界面,数据取自一家虚构的零售公司。没有连接任何真实数据,也没有调用真实 AI。

办公室里常听到的话

  • 这个数,怎么和财务的对不上?
  • 上个月的报表,能按当时的数据再出一份吗?
  • 谁给他开的这张表的权限?
  • 想看个数,又要等数据组排期。
  • AI 给的数,我敢直接用吗?
  • 报表改了好几版,没人说得清哪版是对的。

01 · 口径

一个词,
三个数。

财务按确认收入,销售按下单金额,运营按回款。各自一张报表,各自一套 SQL,周会开成了对账会。

财务收入

1,203,400.00

SUM(recognized_amt)确认收入口径
销售收入

1,318,950.25

SUM(order_amt)下单金额口径
运营收入

1,176,280.40

SUM(cash_received)回款口径
revenue = SUM(amount) WHERE status = 'confirmed'三者最大差额 142,669.85

示例数据。统一定义后,报表、AI 助手与接口读取的是同一份定义。

02 · 梳理的五个动作

从来源到答案,
五个动作。

每一步都有版本、有定义、有记录。靠的不是约定,是结构。

01 / 05 · 接入

上个月的报表,能按当时的数据再出一份吗?

来源再杂,
也落成同一种样子。

数据库、接口、上传文件,经工作流取数、转换、合并,落成带版本的不可变快照。每次刷新都是新的一版,出了问题回到上一版。

  • 工作流取数可视化编排取数与转换。跨来源的数据先同步成受管理的快照,再联合分析。
  • 不可变版本发布后的快照不再改动,可追溯、可回滚,被引用的版本不会被误删。
  • 写读分离写入只经调度器,查询走只读副本。接口不会在你不知情时改动数据。
了解更多
workflow · revenue_daily示例数据

来源

  • PostgreSQL
  • SQL Server
  • REST API
  • CSV · XLSX

工作流

  1. 01取数
  2. 02转换
  3. 03按主键合并

快照

  • v13parquet 不可变
  • v12parquet
  • v11parquet

snapshot v13 · parquet · immutable

02 / 05 · 建模

这个数,怎么和财务的对不上?

口径,只定义一次。

在画布上把表、关联、维度和度量搭成语义模型,验证后发布。报表、AI 助手与开放接口读的是同一份定义,没有人再各算各的。

  • 图形化建模表、关联、维度、度量在画布上完成,需要时可查看原生定义。
  • 草稿到发布先验证,再整体发布成新修订。历史口径不会被悄悄改写。
  • 统一计算口径报表、AI 助手与开放接口使用同一套语义模型计算,结果可复核。
了解更多
semantic_model · valuation示例数据
valuationsrevenue · count
funds
regions
calendar
products
measures:
  - name: revenue
    type: sum
    sql: amount
    filters:
      - sql: "{CUBE}.status = 'confirmed'"       

ref(revenue)

  • 报表
  • AI 助手
  • API
  • PG 端口
  • MCP

revenue = SUM(amount) WHERE status = 'confirmed'

03 / 05 · 分析

想看个数,又要等数据组排期。

业务自己点,
分析师不再排队。

在已发布的模型上选维度、拖度量、切图表、加筛选。一个数字背后的原因,点下去就能看到。

  • 拖拽探索维度、度量、图表类型随手切换,结果即时刷新。
  • 下钻与筛选从汇总到明细,筛选条件随图表一起保存。
  • 分析师有 SQL准备数据时可以写 SQL;但结果必须落成受管理的表,才能被报表消费。
了解更多
explore · revenue_model示例数据

维度

度量

收入

view → members → query → chart

04 / 05 · 问答

AI 给的数,我敢直接用吗?

问数据,答案带着来处。

用自然语言提问。助手只能通过语义层取数:列出模型、读取元数据、执行查询。每一步都摊开给你看,并且按提问者本人的权限执行。

  • 步骤可见用了哪个工具、查了哪些成员,一目了然,可以复核。
  • 同一权限边界你看不到的模型和行,助手同样看不到。
  • 自选模型服务管理员配置兼容 OpenAI 协议的服务商、模型与密钥,密钥加密保存。
了解更多
ask · revenue_model示例数据

哪个区域的收入更高?

  1. cube_list_models1 个模型
  2. cube_get_metadatarevenue_model
  3. cube_queryrevenue × region

仅限你有权限的数据

示例回答:北区收入更高。选择区域和季度,可以查看不同范围的示例结果。

北区
1,003,000.00
南区
666,000.00

cube_list_models → cube_get_metadata → cube_query

05 / 05 · 发布

报表改了好几版,没人说得清哪版是对的。

改动留痕,
随时可回。

图表组成看板,草稿自动保存,发布时固定一份不可变的版本。改坏了,恢复到任何一个历史版本;要迁移环境,就导出成 YAML。

  • 自动保存草稿编辑时自动保存到服务器,换一台电脑也能接着做。
  • 发布与恢复发布固定一份历史版本;恢复先为当前草稿留档,再回到所选版本。
  • 报表即代码图表与看板可导出为 YAML,整批校验、整批导入,失败即整体回滚。
了解更多
valuation.dashboard.yml示例数据
valuation已发布 · v7已自动保存
收入合计1,669,000.00

版本

  • v7当前
  • v6·
  • v5·

↺ 恢复到 v6

⇣ 导出 YAML

dashboard.yml · version 1 · dry-run → apply

03 · 数据结构

五层结构,
一个事实来源。

从原始来源到屏幕上的答案,每一层只做一件事、守一条边界。点一层,看那里放着什么。

  • 人们接触到的一切都读下面那一层,不绕路。笔记本、Agent、看板、数据应用、JSON API、MCP 和 PG 端口走的是同一扇门。

    • 笔记本与 SQL
    • Agent 对话
    • 看板与应用
    • API · MCP · PG 端口
  • 行级权限只在一个地方执行。拿不到决定时,查询被拒绝,而不是放行。

    • 唯一执行点
    • 拿不准就拒绝
    • 各处看到同样的行
  • 收入只定义一次,连同它的过滤条件,每张图、每个回答、每次 API 调用都复用它。已发布的模型会固定它读取的快照,查询不会读到一半混进新旧数据。

    • 维度
    • 度量
    • 关联
    • 固定快照
  • 每次刷新都写入一个新的不可变版本,没有原地修改。只有调度器写入,其余一律只读。

    • 不可变
    • Parquet
    • 主键必填
  • 连接十种数据库、上传文件、从接口拉取。工作流按计划抽取、转换、合并。

    • 10 种数据库
    • CSV · Excel
    • 接口拉取
    • 定时工作流

示意图。层的名称由产品架构简化而来。

04 · AI 生成

说出来,
就得到一个能用的应用。

告诉 Agent 你想看什么。它读取语义层,写出一个单文件数据应用,立即预览。你检查之后,保存为数据应用。

按区域和品类做一个销售看板。

app · sales_overviewAgent 生成

销售总览

1689万收入 · Q3 · 示例数据

045090013501800Q1Q2Q3全部区域
  • 服饰
  • 家居
  • 美妆
  • 数码
  • 食品
沙箱运行 · 按你的权限

让我试一下调价,看收入和毛利会怎样。

app · price_whatifAgent 生成

调价推演

收入
474万
+22万
毛利率
62.8%
+1.8

收入预测

今天
沙箱运行 · 按你的权限

按注册月份看客户留存。

app · retentionAgent 生成

留存分析

按批次与月份的留存

沙箱运行 · 按你的权限

把每个客户按收入和增长画出来,标出离群点。

app · account_mapAgent 生成

客户地图

收入 →↑ 增长离群点
沙箱运行 · 按你的权限

示意应用,数据取自一家虚构的零售公司。生成的应用跑在沙箱里,不能联网,通过宿主按你的权限取数。

05 · 治理

同一张表,不同的人,
看到不同的行。

身份认证、空间授权、行权限、审计,层层收紧。行权限只在语义层执行一次:报表、AI 助手、API 与 PG 端口一视同仁。拿不到决定就拒绝,不放行。

试一下:切换身份

当前身份
项目公司区域估值(元)
星河一号华东1,284,500.00
云杉资产华东963,200.50
澜湾能源华南752,100.00
北辰产园华北1,438,700.25
海棠基金华南612,000.00
松溪新能华东884,000.00
远岫物流华北523,300.00
朗润科技华南709,800.00
青禾农业华北381,600.75

可见行 9 / 9

过滤条件 — (no filter)

合计 7,549,201.50

四个入口,同一个结果

  • 报表7,549,201.50
  • AI 助手7,549,201.50
  • API7,549,201.50
  • PG 端口7,549,201.50
  1. 01

    身份

    账号与 OIDC 登录。访问任何数据之前,先验证你是谁。

  2. 02

    空间与资源授权

    资产归属个人或团队空间,文件夹与资源按成员授权。

  3. 03

    行权限

    权限表决定每个人能看哪些行,只在语义层执行一次。

  4. 04

    审计

    关键操作留下记录,谁在什么时候做了什么,可以查。

  • SQL 在沙箱里

    SQL 控制台在受限的 DuckDB 沙箱中执行,外部文件访问被关闭。

  • 出站有策略

    工作流与连接的出站请求,统一受全局出站访问策略约束。

  • AI 与你同权限

    助手按提问者的身份取数,不继承更大的权限。

06 · 开放

进得来,
也出得去。

原生 JSON API、MCP、PG 协议端口,以及 YAML 形式的图表与看板。数据与定义,不被锁在界面里。

数据来源

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • Doris · StarRocks
  • 文件上传 · 接口取数

Cube Core

  1. 数据建模维度、度量、关联与视图,只定义一次
  2. 访问控制行权限唯一执行点,只开放视图
  3. 快照固定每次查询读取不可变的数据版本
  4. 开放接口JSON API · MCP · PG 端口

语义层

消费端

  • 看板与数据应用工作台内
  • AI AgentMCP
  • 外部系统JSON API
  • BI 工具与 ExcelPG 端口 · Power Query
示意图。PG 端口由管理员在部署时开放,仅限内网;Excel 经 Power Query 调用 JSON API 或导入 CSV,Cube Core 本身没有 Excel 直连。
POST /api/v1/query
Authorization: Bearer <token>

{
  "model_id": "valuation",
  "view": "asset_view",
  "query": {
    "measures": ["asset_view.revenue"],
    "dimensions": ["asset_view.region"],
    "order": [["asset_view.revenue", "desc"]],
    "limit": 100
  }
}

// → { "data": [ … ], "release_id": "…", "snapshot_set_id": "…" }

原生 JSON 查询,结果附带发布版本与快照标识。

支持的数据库

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • TiDB
  • Doris
  • StarRocks
  • KingbaseES
  • DuckDB

另有 CSV / XLSX 上传与接口取数。

支持 SSH 跳板与双向 TLS 的数据库连接

07 · 谁在用

同一个平台,
三种角色各取所需。

业务团队

  • 过去等数据组排期拉数

    现在在已发布的模型上自己探索

  • 过去数字来源说不清

    现在AI 回答带着工具步骤与口径

  • 过去多份报表各有各的数

    现在共用同一份指标定义

了解更多

数据团队

  • 过去每张报表一套 SQL

    现在准备一次、建模一次、发布一次

  • 过去刷新靠手工,出错难追

    现在工作流刷新,每次都是新版本

  • 过去改口径怕牵一发动全身

    现在草稿验证,整体发布新修订

了解更多

IT 与管理者

  • 过去权限靠约定和群聊

    现在空间授权加行权限,统一执行

  • 过去导出和截图满天飞

    现在取数走授权接口,操作有审计

  • 过去AI 接入担心越权

    现在AI 与提问者同权限,步骤可查

了解更多

你可能想知道

梳子是什么?

梳子把数据接入、准备、语义建模、分析和发布连成一条链路,让团队使用共享的指标口径。

需要会写 SQL 吗?

业务人员可以使用已发布的报表、探索界面或 AI 助手;分析师可以在数据准备阶段使用 SQL。

AI 会看到我没有权限的数据吗?

不会。助手按提问者的身份,经同一套授权与行权限取数。

可以从其他工具查询吗?

可以。已发布的模型可通过 JSON API、MCP 或 PG 端口使用,实际访问需要身份认证与授权。

官网上的数据是真的吗?

不是。官网只使用本地示例数据与预置问答;进入系统并登录后,才按你的权限使用真实数据。

让数据,从乱到清楚。

先在示例里试一遍,再带上你自己的数据。