@finos/legend-cube

中文文档
0.0.10发布于 2026/11/12Apache-2.0TypeScriptES Module零依赖近 30 天下载 2155

图例 Cube 核心: 图例 Cube 查询构建器的无主域模型

中文使用文档
文档目录5 节
  1. 如何融为一体
  2. 已保存的光谱
  3. 无东道规则
  4. 发展
  5. 文档

@ finos/legend-cube (法语)

Legend Cube的无主机核心,基于画布的可视化查询构建器(不是Legend DataCube,即: @finos/legend-data-cube) (中文(简体) ). 它持有域模型: 精确的类型和值, 计划,查询图及其 schema 推论与验证,变换,滤取,Cube IR及其放出器,和被保存的谱码.

UI,商店和"传奇"引擎适配器都住在 @finos/legend-cube-builder。 。 。 .

状态 : 工作正在进行,第0.0.x版。 它有关系表,数据产品访问点和摄取数据集(均为β),相接,相接,相接,相接(并有其聚合),相接(一列的值入列,通过引擎相接) pivot(),拒绝在无法运行它的数据库中),Filter, Retricted, Record, Record, Discription, Drop, Licet, Concat, Difference, Partition, Explor (窗口函数), Explor (计算列,由引擎键入) 和 Filter (纯条件,由引擎检查) 。 API没有 1.0前稳定: src/index.ts 再出口整个模块.

如何融为一体

  • 查询图是唯一的真相来源. A 类 CubeDocument 上下文(模型和运行时间),a 不可改变 Query 联 合 国 QueryNodes 和 Connections,和演示文稿设置:显示或不显示的图表,列宽 和数字格式,和网格的钻入。 每次编辑都会产生新的 Query。 。 。 .
  • 钻倒: checkDrilldown 对照跑道的柱子检查所节省的钻头 deriveDrilldownLevel 作为 Cube 自己的节点( 扩展后键的过滤器、 组合、 排序), 生成每个关卡的查询, 所以 每个数据库都适用.
  • 推论 : buildSchemasAndValidity 给出每个节点的输出方案及其出错.
  • 爱慕: QueryEmitter 将一个有效的查询转换为 Cube IR, 一个没有主机的纯 AST ()printIR 打印出来 调试). A Sort 的顺序是使用它的地方: 在限制、 丢放或切片之前, 在跑行之前 限制。 建筑师的 v1/ 适配器将IR写作引擎的JSON协议. 引擎的纯文本是 从来没有解析回来.
  • 保存 : encodeCubeSpec 财务报告和审定财务报表 decodeCubeSpec (或 serializeCubeSpec 财务报告和审定财务报表 parseCubeSpec写和 读取保存的光谱.
  • 节点类型 : createNodeRegistry() 按调色板顺序列出它们。 调色板、上下文菜单和编码器 都读了.
文件夹持有
types/CubeType,精确原始类型、类型家族的登记,兼容性
values/每个类型读取和检查的字数
schema/Schema 财务报告和审定财务报表 SchemaColumn, 计划 diffs
graph/QueryNode 及其班级, Connection, (中文(简体) ), Query, (中文(简体) ), CubeDocument
inference/schema 推论,它标志不完整和上游无效的节点; 验证帮助; 列的顺序通过图(RowOrder.ts(中文(简体) )
nodes/节点登记册; sources/ (关系表、数据产品存取点、摄入数据集和一等规则), transforms/ (Join, Sort, Group and its community, Pivot, Filter, Relicted, Record, Record, Discription, Dropp, Licet, Concat, Difference, Partition 及其窗口函数, 扩展及其打字, 通过表达式及其检查过滤, 其共享的行设置, join and Concat自定义), 未知
filter/过滤树,按类型家族排列的运算符,构建过滤器的助手
messages/验证消息,包括 ERR_INCOMPLETE 财务报告和审定财务报表 ERR_SCHEMAS 用于不完整和上游无效的节点
ir/立方体IR,每个节点类型的发射器(emitters/,以 lets 分隔窗口的查询发送器,调试打印机
drilldown/网格的钻入- 下: 其水平和组行汇总, 对照运行检查, 以及每个关的所衍生的查询
presentation/数字列格式,按列或每个数字列分列
spec/每个节点类型的编码器(codecs/页:1
utils/断言和JSON帮助者

已保存的光谱

立方体保存为JSON,格式版本1(CURRENT_FORMAT_VERSION: formatVersion, (中文(简体) ), name, (中文(简体) ), context (模型, 和运行的时间, query (单位:千美元)selected 财务报告和审定财务报表 nodes和 meta。每个节点都有 kind, (中文(简体) ), id页:1 inputs (左边) 和自己的田地.

  • 字符值被输入,数字写作字符串,所以没有数字丢失;节点的设置,例如 限制的大小,是JSON数字。 解析源保存有 它的图案; 一个未解决的图案被保存, 没有它, 并在导入立方体时再次输入 .
  • 此版本不知道的密钥被保存并回写,一个未知类型的节点被保存为未知节点.
  • 一个 spec 最多为 1 MiB (MAX_SPEC_BYTES) (中文(简体) ). 由更新版本保存的一被读作只读. 没有 移徙情况CUBE_SPEC_MIGRATIONS),因为第一版是第一版.
  • 格式为草稿 直到 Cube 商店存在 : 它可能仍然会改变, 并有迁移 .

无东道规则

这个软件包运行在 JavaScript 运行的任何地方:没有浏览器,没有节点,也没有"传奇"主机代码. 在代码外部测试中 :

  • 只有相对进口. 软件包没有运行时间依赖性 .
  • 只有ECMAScript环球. window, (中文(简体) ), document, (中文(简体) ), fetch, (中文(简体) ), console, (中文(简体) ), setTimeout, (中文(简体) ), structuredClone, (中文(简体) ), URL, (中文(简体) ), TextEncoder 和类似的失败 建设.

四个警卫执行:

  1. package.json 声明不依赖关系,而仅是工具性依赖关系.
  2. 这个 legendCubeHostFree 根 ESLint 配置的块禁止其他导入并标记普通浏览器 输入时使用 global .
  3. tsconfig.build.json 无环境类型的编译( n)"types": []) (中文(简体) ).
  4. src/__tests__/LegendCubeHostFree.test.ts 检查依赖性和进口,并编译软件包 仅针对ECMAScript图书馆.

测试、测试公用事业和模拟__tests__, (中文(简体) ), __test-utils__ 财务报告和审定财务报表 __mocks__ 文件夹)是免责的:它们可能使用节点 还有杰斯特.

类型仅来自 resolveCubeType, (中文(简体) ), PrimitiveType.get 财务报告和审定财务报表 new EnumType将计划中的改变保持在内部: 魔方的类型是移动到"传说-图"的元模型上,核心可能随后依赖于"传说-图"的元模型,但是 从来没有过 V1_* 协议课.

发展

  • yarn workspace @finos/legend-cube test 运行测试test:watch (请看) 他们运行在节点下,不需要 发动机.
  • yarn workspace @finos/legend-cube dev,或 yarn dev:ts 在根部,重建 在变化.

文档

版本与发布记录

@finos/legend-cube 共发布 10 个版本,首次发布于 2026/10/08;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.0.10latest2026/11/122 天前
0.0.92026/11/104 天前
0.0.82026/11/0212 天前
0.0.72026/10/1926 天前
0.0.62026/10/1629 天前
0.0.52026/10/1530 天前

关于 @finos/legend-cube 的常见问题

@finos/legend-cube 是什么?

图例 Cube 核心: 图例 Cube 查询构建器的无主域模型

如何安装 @finos/legend-cube?

在项目目录运行 npm install @finos/legend-cube,或使用 pnpm add / yarn add / bun add。

@finos/legend-cube 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@finos/legend-cube 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@finos/legend-cube 可以商用吗?

@finos/legend-cube 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@finos/legend-cube 的下载量有多少?

根据 npm 官方下载统计,@finos/legend-cube 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,155 次,日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@finos/legend-cube 还在维护吗?

最新版本 0.0.10 发布于 2026/11/12(2 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/10/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。