cube.js 对于measure以及dimension 提供了丰富的数据类型,基本满足我们常见应用的开发,同时对于不同类型也提供了
格式化的操作

measure类型

number

  • 格式
purchasesRatio: {
sql: `${purchases} / ${count} * 100.0`,
type: `number`,
format: `percent`
}

count

  • 格式
numerOfUsers: {
type: `count`,
// optional
drillMembers: [id, name, email, company]
}

countDistinct

类似sql 的count distinct

  • 格式
uniqueUserCount: {
sql: `user_id`,
type: "countDistinct"
}

countDistinctApprox

字面意思是countDistinct 的添加剂,同时和countDistinct 不一样,他是利用rollup-pre-aggregations,后端利用
hll或者类似的算法,加速数据的计算

  • 格式
uniqueUserCount: {
sql: `user_id`,
type: "countDistinctApprox"
}

sum

类似sql 的sum,但是与原生sql 不同,他将正确的计算数据,尽管连接可能导致数据重复

  • 格式
revenue: {
sql: `amount`,
type: `sum`
}

avg

类似sql 的avg 进行平均数的计算,但是与原生sql 不同,他将正确的计算数据,尽管连接可能导致数据重复

  • 格式
averageTransaction: {
sql: `${transactionAmount}`,
type: `avg`
}

min

  • 格式
dateFirstPurchase: {
sql: `date_purchase`,
type: `min`
}

max

  • 格式
dateLastPurchase: {
sql: `date_purchase`,
type: `max`
}

runningTotal

计算概述sql 中的值

  • 格式
totalSubscriptions: {
sql: `subscription_amount`,
type: `runningTotal`
}

measure格式化

百分比

  • 格式
purchaseConversion: {
sql: `${purchase}/${checkout}*100.0`,
type: `number`,
format: `percent`
}

货币

  • 格式
totalAmount: {
sql: `amount`,
type: `runningTotal`,
format: `currency`
}

dimension 类型

time

  • 格式
completedAt: {
sql: `completed_at`,
type: `time`
}

string

  • 格式
fullName: {
sql: `CONCAT(${firstName}, ' ', ${lastName})`,
type: `string`
}

number

  • 格式
amount: {
sql: `amount`,
type: `number`
}

geo

  • 格式
location: {
type: `geo`,
latitude: {
sql: `${TABLE}.latitude`,
},
longitude: {
sql: `${TABLE}.longitude`
}
}

dimension 格式

imageUrl

  • 格式
image: {
sql: `CONCAT('https://img.example.com/id/', ${id})`,
type: `string`,
format: `imageUrl`
}

id

  • 格式
image: {
sql: `id`,
type: `number`,
format: `id`
}

link

  • 格式
orderLink: {
sql: `'http://myswebsite.com/orders/' || id`,
type: `string`,
format: `link`
} crmLink: {
sql: `'https://na1.salesforce.com/' || id`,
type: `string`,
format: {
label: `View in Salesforce`,
type: `link`
}
}

货币

  • 格式
amount: {
sql: `abount`,
type: `number`,
format: `currency`
}

百分比

  • 格式
penRate: {
sql: `COALESCE(100.0 * ${uniqOpenCount} / NULLIF(${deliveredCount}, 0), 0)`,
type: `number`,
format: `percent`
}

参考资料

https://cube.dev/docs/types-and-formats

 

cube.js 学习(七)cube.js type 以及format 说明的更多相关文章

  1. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  2. Sea.js学习4——Sea.js的配置

    可以对 Sea.js 进行配置,让模块编写.开发调试更方便. seajs.config seajs.config(options) 用来进行配置的方法. seajs.config({ // 别名配置 ...

  3. Node.js学习(Node.js基础)

    1.开发环境搭建 v8引擎是作为解析JavaScript程序来运行的 nodejs是一个高性能的,第一个体现在他的JavaScript解析速度很快,v8引擎性能很高,第二个事件驱动和非阻塞 2.全局对 ...

  4. Sea.js学习5——Sea.js的构建工具spm

    如果项目遵循推荐的标准目录结构: foo-module/ |-- dist 存放构建好的文件 |-- src 存放 js.css 等源码 | |-- foo.js | `-- style.css `- ...

  5. Sea.js学习3——Sea.js的CMD 模块定义规范

    在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范 ...

  6. Sea.js学习2——Sea.js的API 快速参考

    (7 个接口是最常用的) 一.seajs.config:用来对 Sea.js 进行配置. seajs.config({ // 设置路径,方便跨目录调用 paths: { 'arale': 'https ...

  7. [node.js学习]为node.js写的一个操作mysql的类

    不支持一个对象在不同异步中使用,模仿的php框架 speedphp中的model模块 GaryMysql.js var mysql = require('mysql'); var pool = nul ...

  8. js学习之原生js实现懒加载

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. cube.js 学习(十一)cube + gitbase 分析git 代码

    这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码 需求 我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大 ...

随机推荐

  1. QT支持TTF字体

    1.编译QT库时需要支持TTF字体 ./configure -qt-freetype -fontconfig ... 2.将TTF字符库拷贝到QT_QPA_FONTDIR下 # 注意,如果不清楚字体所 ...

  2. Kubernetes1.11.1 使用Nvidia显卡配置方法

    一.安装 1.1.kubernetes硬件支持问题说明 Kubernetes目前主要在很小程度上支持CPU和内存的发现.Kubelet本身处理的设备非常少.Kubernetes对于硬件都使用都依赖于硬 ...

  3. Redis之RDB和AOF持久化介绍

    什么是数据库状态 redis是一个键值对的数据库服务器,服务器中通常包含中任意个非空的数据库,而每个数据库又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及他们的键值对统称为数据库状 ...

  4. object-c 连接mysql

    1. 通读 'mysql的使用' 2. 在Target->build setting 修改配置 User Header Search Paths 加入 /usr/local/mysql/incl ...

  5. 阅读笔记---第三章 Xen信息页

    1.文件/xen/include/public/xen.h 2.第一个数据结构:启动信息页strat_info,启动信息页是GuestOS内核启动时,由Xen映射到GusetOS内存空间的一个物理页面 ...

  6. ViewBag---MVC3中 ViewBag、ViewData和TempData的使用和差别-------与ViewBag+Hashtable应用例子

    ViewBag 在MVC3開始.视图数据能够通过ViewBag属性訪问.在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),Vi ...

  7. RabbitMQ topic 交换器

    topic交换器:"."将路由键分为几个标识符,"*"匹配一个, "#"可以匹配多个 1:路由键为*或者#的时候 *:只能匹配单个的字符串 ...

  8. Kubernetes 1.15部署日记-使用kubeadm--<1-2-3-4>

    2019年9月17日 由于此次日记篇幅较长blog限制直接使用word发布所以分成几篇来发. 1.环境准备 10.110.149.172|192.168.111.51 K8s-1 Centos7.5 ...

  9. Kubernetes- Dashboard 部署

    获取dashboard 的yaml文件 wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/dep ...

  10. SQL SERVER-Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)

    Q:先在一个实例中恢复一个数据A,然后又想在恢复一次,取别名为A2,这是报异常SQL SERVER-Exclusive access could not be obtained because the ...