• 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

  • 相关阅读:
    canvas gamebricks
    javascript 判断对象的值是否相等
    让控件全屏显示(WinForm)
    网络视频监控
    回调函数
    [导入][链接]FreeBSD + Sun Java
    [导入][一点一滴学英语]20060330
    [导入][来自网络] 酸酸甜甜就是我 不用我多介绍了 可是你是否听过天津话的版本?
    [导入][链接]差点漏掉 Eclipse 3.2 M6出来了
    [导入][链接]Five reasons why you should never use PostgreSQL
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14347253.html
Copyright © 2020-2023  润新知