Saiku Analytics:用语义层把多维分析交给浏览器與 API
此專案圍繞「Open-source semantic layer: one cube for Excel (MDX/XMLA), dashboards, and AI agents (MCP). Mondrian + Apache Calcite.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。
秒懂
- 它是什麼?
- 面向多维資料立方体的开源语义层分析工具,组合浏览器拖拽、Mondrian 與 Calcite SQL,以及类型化 REST 接口。
- 適合誰用?
- Saiku Analytics 适合已经有 OLAP 立方体或语义模型,希望让分析人员拖拽查询,同时为程序和代理提供统一查询接口的团队。不适合只需要简单报表、没有维护資料模型能力,或需要把 live demo 当成生产部署依据的使用者。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 3 天前。
- 用什麼語言寫的?
- 主要是 Java(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
saiku-embed 标签是什么 · spiculedata-saiku-deep-analysis
此倉庫的 README 聚焦于 `<saiku-embed>`,一个可在任意页面上渲染已保存的 Saiku 查询或仪表板的自定义元素。由于它是一个标准 Web 组件,同一个标签可应用于 React、Vue、Svelte 和原生 HTML,且宿主页面无需了解 Saiku 内部实现。该组件在后台與 Saiku 服务器通信,使用属性指向资源,並使用令牌进行授权。
安装與全局注册 · spiculedata-saiku-deep-analysis
文档说明了两种安装路径。对于简单页面,可在 Saiku 启动器源上包含指向 `/ui/saiku-embed.js` 的脚本标签。对于基于打包器的專案,可从 npm 安装 `@concepttocloud/saiku-embed` 並导入一次;该导入会作为副作用全局注册 `saiku-embed` 标签,因此无需进一步设置。README 展示了脚本标签和 npm 导入,並注明导入具有注册标签的副作用。
以表格、矩阵、图表或 KPI 渲染已保存的查询 · spiculedata-saiku-deep-analysis
預設的 `kind="query"` 透過 `render` 属性支持四种渲染模式。`table` 将结果扁平化为行键映射。`matrix`(v3.19)保留行和列轴结构,将度量放在列上,维度成员放在行上。`chart` 使用 `mode` 属性选择 `bar`、`line` 或 `pie`。`kpi`(v3.20)显示已保存查询最后一个度量的单个大数字,並在存在前一度量列时显示增量标签。`height` 属性控制渲染表面的 CSS 高度。
在嵌入时使用 filter 对查询进行切片 · spiculedata-saiku-deep-analysis
`filter` 属性(v3.20)接受一个 JSON 数组形式的切片器覆盖。这些覆盖使用與仪表板筛选器磁贴相同的经过核驗的切片器路径,因此已保存查询的立方体绑定和轴保持不变。README 展示了一个示例,将 `Time` 维度的 `Year` 级别固定为 `[Time].[2024]`,使宿主无需重新编写查询即可参数化嵌入。
AI 提问與角色作用域答案 · spiculedata-saiku-deep-analysis
对于 `kind="ai"`(v3.19),嵌入在立方体之上呈现一个自然语言提问框。`path` 是形如 `connection/catalog/schema/cubeName` 的立方体引用,且令牌必须是 AI 类型的令牌。在后台,组件向 `/rest/saiku/api/embed/ai/{cubeId}/ask` 发送 POST,透過服务器設定的 LLM 提供商在固定的所有者資料范围内執行问题。`space` 属性(v3.20)将提问范围限定为管理员编写的 Agent Space 角色,在服务器端应用角色的系统提示、技能过滤器和立方体允许列表。如果空间的允许列表排除了固定的立方体,则提问以失败关闭。
仪表板和 App Builder 应用作为单令牌嵌入 · spiculedata-saiku-deep-analysis
另外两种类型涵盖更大的文档。`kind="dashboard"` 渲染已保存的 `.saikudash` 仪表板。`kind="app"`(v3.20)将整个 App Builder 文档(`.saikuapp`)作为单个令牌作用域单元嵌入:令牌仅授予该应用,所有页面都依赖同一授权。应用文档在服务器端获取,每个页面的磁贴查询與仪表板磁贴查询完全相同,因此行级安全和 PII 编辑以相同方式强制执行。作者自定义 CSS 在第一阶段仅限设计器使用;嵌入表面透過现有的 `--saiku-embed-*` 变量进行主题化。
Saiku Analytics 现场核验边界
Saiku Analytics 验收第1项:输入样例必须可重复,保存原始檔案、命令输出和版本資訊。
Saiku Analytics 验收第2项:结果观察要落到字段、路径、页码、任务或请求,而不是只记录成功提示。
Saiku Analytics 验收第3项:出现异常时先缩小到一个组件和一个输入,再與 README 的明确限制对照。
Saiku Analytics 验收第4项:冷启动與重复執行应分别记录,因为缓存和持久状态会改变表现。
Saiku Analytics 验收第5项:权限、網路和本地資料目錄要单独检查,功能透過不代表部署边界已经清楚。
Saiku Analytics 验收第6项:升级前复制資料或索引,升级后重跑相同样例並比较差异。
Saiku Analytics 验收第7项:專案没有说明的預設值不能补成肯定结论,应在自己的环境里留下观测记录。
Saiku Analytics 验收第8项:最终采用范围只覆盖已测试的格式、后端、语言、框架和執行时。
Saiku Analytics 的部署记录应可回放
Saiku Analytics 的部署评估应把事实與判断分开。在正式采用前,先建立一个只包含必要資料的隔离样例,固定输入、設定和執行版本。每次只改变一个变量,保存命令、日志和结果截图,把成功、失败、警告與未覆盖的能力分开记录。
Saiku Analytics 的功能验收需要具体观察点。验收不能只看页面或命令返回成功。要检查实际输出是否包含预期字段、内容、索引、表格、调用边、任务、音频或檔案,並确认错误发生时不会静默生成错误结果。
Saiku Analytics 的資料边界需要具体控制。涉及網路、凭证、权限和持久資料时,先使用低权限账号與脱敏檔案,确认服务监听地址、缓存目錄、备份方式和清理动作。升级前保留可恢复副本,升级后用同一组样例比较差异。
Saiku Analytics 的结论需要限定范围。README 未说明的兼容性、性能和預設值都不能由專案热度推断。结论只适用于已经测过的语言、框架、格式、后端、设备和版本组合,超出范围时应重新建立测试记录。
完成一次完整回放后,再决定是否扩大输入规模、连接更多来源或开放更多调用入口。若结果发生变化,优先比较版本、設定、缓存和输入差异,並回到对应的官方 README、倉庫檔案與发布记录核对。
Saiku Analytics 的结果记录还应包含输入规模、首次執行與重复執行的差异、失败后的恢复动作,以及最终由谁审核输出。对于服务类專案,补充监听地址、依赖进程和重启后的状态;对于库类專案,补充构建产物、测试框架和索引或缓存的生命周期。对于文档、程式碼和資料处理工具,补充原始檔案、生成檔案和人工比对的位置。这样的记录让一次试用能够被另一位维护者重新执行,也能明确哪些结论来自 README,哪些结论只来自本地样例。
針對 spiculedata/saiku,素材記錄的主要語言是 Java,授權為 Apache-2.0。核驗時先對照 README 的專案名稱、安裝入口與實際命令,再觀察輸出或畫面;不把未記載的效能、安全性或相容性推成承諾。 在 spiculedata/saiku 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spiculedata/saiku 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。 評估 spiculedata/saiku 時回到它自己的輸入、輸出、依賴和限制,檢查 README 提到的檔案是否存在。 在 spiculedata/saiku 的情境中,先確認 README 指向的安裝方式與作業系統,再保存版本、設定檔位置和終端機輸出。 對照 spiculedata/saiku 的範例、腳本或路由名稱與參數,記錄成功結果及錯誤訊息,分辨文件描述和環境差異。 素材沒有說明的功能保持未知,不能以倉庫統計推斷品質;授權也不等於維護或支援保證。
編輯結論
Saiku Analytics 适合已经有 OLAP 立方体或语义模型,希望让分析人员拖拽查询,同时为程序和代理提供统一查询接口的团队。不适合只需要简单报表、没有维护資料模型能力,或需要把 live demo 当成生产部署依据的使用者。先用倉庫中的示例立方体和 demo.saiku.bi 对照同一指标,检查筛选、聚合、SQL 與 REST 返回是否一致,再决定部署边界。 spiculedata/saiku 適合需要 README 已列功能且能符合環境條件的使用者,不適合把未記錄行為當成既定保證的場景。先依 README 的專案專屬命令或檔案入口核對安裝結果。
社群筆記