@ 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和类似的失败 建设.
四个警卫执行:
package.json声明不依赖关系,而仅是工具性依赖关系.- 这个
legendCubeHostFree根 ESLint 配置的块禁止其他导入并标记普通浏览器 输入时使用 global . tsconfig.build.json无环境类型的编译( n)"types": []) (中文(简体) ).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-builder。 。 。 . - 计划,在与它不同的地方获胜 光谱,以及 已知问题。 。 。 .