cube.js 执行环境
2021-03-02 20:29
标签:sch async import rip 需要 dem Dimension node 动态 cube.js 使用node vm 进行schema 的编译,提供了灵活的编译schema 的能力 数据schema 定义的es6 文件,将会被编译为nodejs 的调用,import 变为Require 一个方便的动态schema 编译处理扩展 cube 对于部分保留的schema 定义进行了自己的编译处理(注意是在cube 函数内部定义的) 以上的定义会被编译为函数,同时保留传递的参数,参考 编译为 所以如果需要自己传递一些定义(cube 函数外部),就需要使用函数模式 说明 https://cube.dev/docs/schema-execution-environment cube.js 执行环境 标签:sch async import rip 需要 dem Dimension node 动态 原文地址:https://www.cnblogs.com/rongfengliang/p/14319684.htmlcube.js 提供的全局对象
cube()
, context()
asyncModule()
import && export 的处理
export 会被定义为exports ,当然核心依赖的还是babelasyncModule
上下文符号编译
内部需要处理的sql
measureReferences
dimensionReferences
segmentReferences
timeDimensionReference
drillMembers
drillMemberReferences
contextMembers
cube(`Users`, {
// ...
measures: {
count: {
type: `count`,
},
ratio: {
sql: `sum(${CUBE}.amount) / ${count}`,
type: `number`,
},
},
});
cube(`Users`, {
// ...
measures: {
count: {
type: `count`,
},
ratio: {
sql: (CUBE, count) => `sum(${CUBE}.amount) / ${count}`,
type: `number`,
},
},
});
参考const measureRatioDefinition = {
sql: (CUBE, count) => `sum(${CUBE}.amount) / ${count}`,
type: `number`,
};
cube(`Users`, {
// ...
measures: {
count: {
type: `count`,
},
ratio: measureRatioDefinition,
},
});
说明
以上部分对于cube.js 内部的理解还是很有用的,以前官方文档并没有太多的介绍,目前来说文档还是比较全了参考资料