zoukankan      html  css  js  c++  java
  • cube.js data Blending

    cube.js 的 data Blending,主要是解决多数据schema 数据集成(数据charts的集成)的问题
    官方的解决方法还是比较简单的,核心是使用了sql 的union all 同时引用了数据schema 的sql
    同时cube.js 也提供了多查询的处理,会自己进行转换处理

    参考

    • 数据schema
     
    cube(`AllSales`, {
     sql: `
     select amount, user_id as customer_id, created_at, 'Transactions' row_type from ${Transactions.sql()}
     UNION ALL
     select amount, customer_id, created_at, 'Orders' row_type from ${Orders.sql()}
     `,
     measures: {
       customerCount: {
         sql: `customer_id`,
         type: `countDistinct`
       },
       revenue: {
         sql: `amount`,
         type: `sum`
       },
       onlineRevenue: {
         sql: `amount`,
         type: `sum`,
         filters: [{ sql: `${CUBE}.row_type = 'Transactions'` }]
       },
       offlineRevenue: {
         sql: `amount`,
         type: `sum`,
         filters: [{ sql: `${CUBE}.row_type = 'Orders'` }]
       },
       onlineRevenuePercentage: {
         sql: `${onlineRevenue} / NULLIF(${onlineRevenue} + ${offlineRevenue}, 0)`,
         type: `number`,
         format: `percent`
       }
     },
     dimensions: {
       createdAt: {
         sql: `created_at`,
         type: `time`
       },
       revenueType: {
         sql: `row_type`,
         type: `string`
       }
     }
    }); 
    • api 查询
    import cubejs from '@cubejs-client/core';
    const API_URL = 'http://localhost:4000';
    const CUBEJS_TOKEN = 'YOUR_TOKEN';
    const cubejsApi = cubejs(CUBEJS_TOKEN, {
      apiUrl: `${API_URL}/cubejs-api/v1`
    });
    const queries = [
      {
        measures: ['Transactions.revenue'],
        timeDimensions: [
          {
            dimension: 'Transactions.createdAt',
            granularity: 'day',
            dateRange: ['2020-08-01', '2020-08-07']
          }
        ]
      },
      {
        measures: ['Orders.revenue'],
        timeDimensions: [
          {
            dimension: 'Orders.createdAt',
            granularity: 'day',
            dateRange: ['2020-08-01', '2020-08-07']
          }
        ]
      }
    ];
    const resultSet = await cubejsApi.load(queries);

    参考资料

    https://cube.dev/docs/data-blending

  • 相关阅读:
    在linux服务器上搭建nvidia-docker环境
    Mysql入门
    POSTMAN关联
    SQL之内连接与外连接
    JMeter线程组参数含义
    JMeter基本概念
    JMeter聚合报告参数含义
    JMeter录制脚本
    Mysql日期与时间类型及函数
    linux服务器上安装mysql
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14221242.html
Copyright © 2011-2022 走看看