如何使用Cube.js的Node Express分析仪表板

474 阅读3分钟

使用Cube.js的Node Express分析仪表板

在本教程中,我将向你展示如何用Node.js、Express.js和Cube.js创建一个基本的分析仪表板。对于数据库,我们将使用MongoDB和MongoDB BI Connector。

BI Connector允许使用MongoDB作为基于SQL的商业智能和分析平台的数据源。

Cube.js解决了每个生产就绪的分析应用程序需要解决的大量不同问题。诸如分析性SQL生成、查询结果缓存和执行协调、数据预聚合、安全性、查询结果获取的API和可视化等问题。

前提条件

  • 本教程需要对MongoDB和MongoDB BI Connector有基本了解。
  • Node.js、Express.jsCube.js的基本知识。

目标

在本教程结束时,你应该能够结合Cube.js和MongoDB的力量,创建一个简单的Node.js应用仪表板进行分析。

设置开发环境

在开始开发过程之前,让我们先安装上述所有要求。

第1步: 为你的本地机器下载Node.js。在本教程中,我们将在Ubuntu 20.04上使用Node版本v16.5.0 。然而,需要注意的是,这些概念对于任何操作系统都是一样的。

通过运行以下命令检查你的安装版本。

node --version

输出。

v16.5.0 # note that this version may vary from yours

第2步: 让我们继续,通过运行以下命令,用Express创建我们的应用程序骨架。

npm install express-generator -g

我们继续通过执行下面的命令来生成我们的example-analytics-dashboard 应用程序。

express --view=hbs example-analytics-dashboard
# notice that the view is set to use hbs

预期的输出。

create : example-analytics-dashboard/
create : example-analytics-dashboard/public/
create : example-analytics-dashboard/public/javascripts/
create : example-analytics-dashboard/public/images/
create : example-analytics-dashboard/public/stylesheets/
create : example-analytics-dashboard/public/stylesheets/style.css
create : example-analytics-dashboard/routes/
create : example-analytics-dashboard/routes/index.js
create : example-analytics-dashboard/routes/users.js
create : example-analytics-dashboard/views/
create : example-analytics-dashboard/views/error.hbs
create : example-analytics-dashboard/views/index.hbs
create : example-analytics-dashboard/views/layout.hbs
create : example-analytics-dashboard/app.js
create : example-analytics-dashboard/package.json
create : example-analytics-dashboard/bin/
create : example-analytics-dashboard/bin/www

change directory:
  $ cd example-analytics-dashboard

install dependencies:
  $ npm install

run the app:
  $ DEBUG=example-analytics-dashboard:* npm start

第3步:现在让我们通过运行以下命令来安装本地MongoDB实例和MongoDB BI连接器。

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

预期的输出。

OK

接下来,运行以下命令,为MongoDB创建一个列表,并重新加载软件包。

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list && sudo apt-get update

通过在终端执行以下命令来安装MongoDB包。

sudo apt-get install -y mongodb-org

完成后,通过执行以下命令启动你的MongoDB。

sudo systemctl start mongod

第4步:有了本地的MongoDB实例,我们可以继续安装MongoDB BI连接器。

值得注意的是,你必须先在你的主机上安装OpenSSL。

  • 这里开始下载MongoDB BI Connector。
  • 通过运行以下命令解压下载的文件。
cd # to downloads
tar -xvzf mongodb-bi-xxxxxx.tgz 

预期的输出

mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/LICENSE
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/README
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/THIRD-PARTY-NOTICES
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/example-mongosqld-config.yml
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/bin/mongosqld
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/bin/mongodrdl
mongodb-bi-linux-x86_64-ubuntu2004-v2.14.3/bin/mongotranslate

第5步:现在我们已经有了一个完整的应用程序骨架,在下一步,我们将安装Cube.js

# cd into project root directory
cd example-analytics-dashboard
# then execute the command to add Cube.js to Express dependencies.
npm install 
# this installs all the dependencies for our application
npm install --save @cubejs-backend/server-core @cubejs-backend/mongobi dotenv

生成Cube.js模式

之前,我们已经看到如何设置我们的开发环境。在这一节中,我们将看到我们如何利用Cube.js 的力量,提出一个一般的模式来建立一个API分析仪表板。

我们使用Cube.js模式,因为它可以将原始数据生成一个有意义的业务定义。这个数据模式然后通过query API ,允许终端用户执行分析查询。

让我们创建一个简单的employees 表,其中有以下信息。

id姓氏薪资
1无名氏$200
2测试名称最后一个$500

在分析上表时,出现了各种问题。

  • 该公司有多少名员工?
  • 公司在工资上花了多少钱?

这些问题,以及其他问题,都可以通过为每个问题写一个查询来回答。但是,通过Cube.js 数据模式,我们可以建立组织良好、可重复使用的SQL。

让我们用Cube.js的数据模式来表示上面的表格。


cube('Employees', {
  sql: 'SELECT * FROM employees',

  measures: {
    count: {
      sql: 'id',
      type: 'count',
    },
  },

  dimensions: {
    first_name: {
      sql: 'first_name',
      type: 'string',
    },
  dimensions: {
    last_name: {
      sql: 'last_name',
      type: 'string',
    },

    salary: {
      sql: 'salary',
      type: 'number',
    },
  },
});

从上面的模式中,我们有措施和维度。措施是用来表示定量数据的,而维度是分类数据。

添加Cube.js环境变量

一开始,在向我们的Express应用程序添加Cube.js的时候,我们也添加了dotenv 包,我们用它来管理我们的凭证。
.env 文件中,添加以下内容。

CUBEJS_DB_HOST=localhost
CUBEJS_DB_NAME=employees
CUBEJS_DB_PORT=3307
CUBEJS_DB_TYPE=mongobi
CUBEJS_API_SECRET=SECRET

继续并初始化Cube.js,如下图所示。

// inde.js file
const cubejs = require('@cubejs-backend/server-core');
// ... some codes goes here
app.use('/', indexRouter);

require('dotenv').config();
cubejs.create().initApp(app);
// ... some codes

有了所有这些,你现在可以着手为任何应用程序建立一个仪表板。

总结

在本教程中,我们看到了如何使用Express.js、Cube.js和MongoDB实例建立一个分析仪表盘。我们还看到了为什么我们选择Cube.js来编写查询,而不是普通的重复性SQL查询。