zoukankan      html  css  js  c++  java
  • cube.js dimensions 的一些说明

    部分参数

    • show
      控制维度的可见性
     
    dimensions: {
      comment: {
        type: `string`,
        sql: `comments`,
        shown: false
      }
    }
    • case
      进行case 的支持
     
    cube("caseapp",{
        sql: `select * from demoapp`,
        measures:{
            type_count:{
                sql:`type`,
                type:`count`
            },
            name_count:{
                sql:`name`,
                type:`count`
            }
        },
        dimensions:{
            type:{
                sql:`type`,
                type:`string`
            },
            myversioninfo: {
                type: `string`,
                case: {
                  when: [
                      { sql: `${CUBE}.type = 'v1'`, label: `old` },
                      { sql: `${CUBE}.type = 'v2'`, label: `not old` },
                      { sql: `${CUBE}.type = 'v4'`, label: `new` }
                  ],
                  else: { label: `Unknown` }
                }
            },
            name:{
                sql:`name`,
                type:`string`
            },
            id:{
                sql:`id`,
                type:`number`,
                primaryKey:true
            }
        }
    })

    参考生成的sql

    SELECT
      "caseapp".type "caseapp__type",
      CASE
        WHEN "caseapp".type = 'v1' THEN 'old'
        WHEN "caseapp".type = 'v2' THEN 'not old'
        WHEN "caseapp".type = 'v4' THEN 'new'
        ELSE 'Unknown'
      END "caseapp__myversioninfo",
      count("caseapp".type) "caseapp__type_count"
    FROM
      demoapp AS "caseapp"
    GROUP BY
      1,
      2
    ORDER BY
      3 DESC
    LIMIT
      10000
    • primaryKey
      主键配置,在进行joins 处理的时候很重要
     
    dimensions: {
      id: {
        sql: `id`,
        type: `number`,
        primaryKey: true
      }
    }
    • subQuery
      可以方便的引用measure 在dimensions中
    • propagateFiltersToSubQuery
      可以过滤条件应用到子查询中
     
    dimensions: {
      usersCount: {
        sql: `${Users.count}`,
        type: `number`,
        subQuery: true,
        propagateFiltersToSubQuery: true
      }
    }

    说明

    subQuery 还是比较强大的,但是也有一些问题,比如目前能使用subQuery 的都必须是定义好的measure
    同时不支持复杂的处理

     
    cube(`Deals`, {
      sql: `select * from deals`,
      measures: {
        amount: {
          sql: `amount`,
          type: `sum`
        }
      }
    });
    cube(`SalesManagers`, {
      // ...
      dimensions: {
        // ...
        dealsAmount: {
          sql: `sum(${Deals}.amount)`, // !!! Doesn't work!
          type: `number`,
          subQuery: true
        }
      }
    });

    同时subQuery定义的维度也可以在measures中引用
    同时subQuery实现是基于join的(join 使用left join)所以需要配置主键,不然会有错误提示
    同一个cube 中subQuery定义的维度不能引用measures(这个是目前的一个约定,可能后期会变动)

    说明

    cube.js 目前的官方文档,好多地方还不是很清晰(有一些隐藏点,目前还好看到有专门的人员在进行更新)

    参考资料

    https://cube.dev/docs/dimensions
    https://cube.dev/docs/subquery

  • 相关阅读:
    MySQL IO线程及相关参数调优
    mysql InnoDB index 主键采用聚簇索引,二级索引不采用聚簇索引
    Mysql怎么判断繁忙 checkpoint机制 innodb的主要参数
    遇见 TiDB
    TiDB 深度实践之旅--真实“踩坑”经历
    tidb使用坑记录
    MySQL mysql server与存储引擎
    DBProxy 读写分离使用说明
    DBProxy 项目全解
    Mysql 数据库意向锁意义
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14347253.html
Copyright © 2011-2022 走看看