# @finos/legend-cube 中文文档

规范地址：https://npmcn.com/package/%40finos/legend-cube/

版本：0\.0\.10
npm 元数据更新时间：2026-11-12T13:44:23.393Z
中文译文更新时间：2026-11-14T20:15:28.728Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40finos/legend-cube
原文对照：https://npmcn.com/package/%40finos/legend-cube/?lang=original
项目主页：https://github.com/finos/legend-studio/tree/master/packages/legend-cube
源码仓库：https://github.com/finos/legend-studio

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2.5 MB，634 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-10-08T15:46:28.570Z
- 最新版本发布：2026-11-12T13:44:23.011Z
- 近 30 天下载量：2155（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

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

## 安装

```sh
npm install @finos/legend-cube
```

也可以使用：`pnpm add @finos/legend-cube`、`yarn add @finos/legend-cube`、`bun add @finos/legend-cube`

## README

# @ finos/legend-cube (法语)

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

UI,商店和"传奇"引擎适配器都住在 [`@finos/legend-cube-builder`](https://npmcn.com/package/%40finos/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` 联 合 国 `QueryNode`s 和 `Connection`s,和演示文稿设置:显示或不显示的图表,列宽 和数字格式,和网格的钻入。 每次编辑都会产生新的 `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` 在根部,重建 在变化.

## 文档

-   [添加一个操作](https://npmcn.com/package/%40finos/legend-cube/docs/adding-an-operation.md):新变换的核心半. 建筑师一半在 [`@finos/legend-cube-builder`](https://npmcn.com/package/%40finos/legend-cube-builder/docs/adding-an-operation.md)。 。 。 .
-   [计划](https://npmcn.com/package/docs/wip/legend-cube/PLAN.md),在与它不同的地方获胜 [光谱](https://npmcn.com/package/docs/design/WIP-CUBE-SPEC.md),以及 [已知问题](https://npmcn.com/package/docs/wip/legend-cube/ISSUES.md)。 。 。 .

## 常见问题

### @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 和提交记录判断。

