zoukankan      html  css  js  c++  java
  • cube.js 执行环境

    cube.js 使用node vm 进行schema 的编译,提供了灵活的编译schema 的能力

    cube.js 提供的全局对象

    cube(), context() asyncModule()

    import && export 的处理

    数据schema 定义的es6 文件,将会被编译为nodejs 的调用,import 变为Require
    export 会被定义为exports ,当然核心依赖的还是babel

    asyncModule

    一个方便的动态schema 编译处理扩展

    上下文符号编译

    cube 对于部分保留的schema 定义进行了自己的编译处理(注意是在cube 函数内部定义的)
    内部需要处理的

     
    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`,
        },
      },
    });

    所以如果需要自己传递一些定义(cube 函数外部),就需要使用函数模式
    参考

     
    const measureRatioDefinition = {
      sql: (CUBE, count) => `sum(${CUBE}.amount) / ${count}`,
      type: `number`,
    };
    cube(`Users`, {
      // ...
      measures: {
        count: {
          type: `count`,
        },
        ratio: measureRatioDefinition,
      },
    });

    说明

    说明
    以上部分对于cube.js 内部的理解还是很有用的,以前官方文档并没有太多的介绍,目前来说文档还是比较全了

    参考资料

    https://cube.dev/docs/schema-execution-environment

  • 相关阅读:
    avaya电话重置
    Zscaler Client Connector
    tcpdump port 514
    rsyslog和过滤规则
    syslog,rsyslog和syslog-ng
    Ubuntu 搭建Rsyslog服务器
    syslog日志的类型和级别
    springboot_springSecurity整合
    springboot_整合JDBC_Druid数据源_MyBatis
    springboot_数据增删改查
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14319684.html
Copyright © 2011-2022 走看看