cubeJS的使用

84 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情

说点题外话

今天式疯狂星期四,所以我也想疯狂一下,所以我打算出售我家小猫咪性感写真一份,有意的掘友们可以出价了,起拍价50元起,大家快冲啊

cubeJS的使用

使用Cube.js

  1. 运行Cube.js开发服务器

使用以下命令在本地环境中运行 Cube.js 服务端:npm run dev 启动服务器后,可以前往以下服务端连接:http://localhost:4000。

  1. 前端框架集成

Cube.js可以通过任何框架进行访问并与每个前端库进行集成。例如:React、Angular、Vue等。

3.为数据源构建模型

为数据源构建模型是Cube.js非常重要的一部分

一个模型定义了项目中所有信息的来源和定义,从数据源到维度和指标。模型通过定义数据流和逻辑来指示 Cube.js 来计算结果。您可以使用可视化模型构建器或手动定义模型。

在 Cube.js 示例项目中,模型定义在cube.js文件中,可以添加以下内容:

const { polymorphic } = require('@cubejs-backend/postgres-schema');
const airlineSchema = require('./airline-schema.json');

module.exports = {
  databases: {
    test: {
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      user: 'root',
      password: '',
      database: 'airline'
    }
  },
  schemaVersion: "1.0.0",
  caching: {
    "LogLevel": "info",
    "driver": "redis",
    "redisUrl": process.env.REDIS_URL || 'redis://localhost:6379/0'
  },
  apiSecret: "SECRET",
  dataSourceStorage: {
    type: 'fileSystem',
    path: './examples/schema-files'
  },
  preAggregations: {
    'flights_by_day_of_week_and_destination': {
      type: 'originalSql',
      sql: `SELECT
        'flights_by_day_of_week_and_destination' as generatedTableName,
        flights.destination_city,
        CAST(EXTRACT(dow FROM flights.flight_date) as INTEGER) as day_of_week,
        COUNT(*) as flights_count
      FROM
        flights
      GROUP BY
        flights.destination_city, CAST(EXTRACT(dow FROM flights.flight_date) as INTEGER)`,
      refreshKey: {
        sql: 'SELECT 1',
        invalidateKeyQueries: [],
      }
    }
  },
  cubeEvaluator: {
    external: {
      runningQuery: '/usr/bin/running-query'
    }
  },
 

以上代码定义了以下内容:

  1. 我们使用的数据源是本地的PostgreSQL实例。
  2. [可选] 系统访问日志级别进行日志记录,指定缓存驱动程序和其 Redis 的 PUB/SUB URL。
  3. 一个APISecret。
  4. 数据源存储设置为文件系统,以便将适当的代码存储在相应的目录中,并根据不同的源迭代版本。
  5. 缓存的定义,指示 Cube.js 如何缓存预聚合和SQL查询的结果。
  6. 未加工的聚合物,为减少查询时间而生成的精简视图。
  7. 嵌入式的代码映射器,为定制的代码映射器提供了一个配置接口。

如果大家有其他想要配置的,详情可参考官方手册,包括加密认证等等,大家可自行探索

说再见

今天就说到这里

难忘今宵