cube.js 学习(七)cube.js type 以及format 说明
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 说明的更多相关文章
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- Sea.js学习4——Sea.js的配置
可以对 Sea.js 进行配置,让模块编写.开发调试更方便. seajs.config seajs.config(options) 用来进行配置的方法. seajs.config({ // 别名配置 ...
- Node.js学习(Node.js基础)
1.开发环境搭建 v8引擎是作为解析JavaScript程序来运行的 nodejs是一个高性能的,第一个体现在他的JavaScript解析速度很快,v8引擎性能很高,第二个事件驱动和非阻塞 2.全局对 ...
- Sea.js学习5——Sea.js的构建工具spm
如果项目遵循推荐的标准目录结构: foo-module/ |-- dist 存放构建好的文件 |-- src 存放 js.css 等源码 | |-- foo.js | `-- style.css `- ...
- Sea.js学习3——Sea.js的CMD 模块定义规范
在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范 ...
- Sea.js学习2——Sea.js的API 快速参考
(7 个接口是最常用的) 一.seajs.config:用来对 Sea.js 进行配置. seajs.config({ // 设置路径,方便跨目录调用 paths: { 'arale': 'https ...
- [node.js学习]为node.js写的一个操作mysql的类
不支持一个对象在不同异步中使用,模仿的php框架 speedphp中的model模块 GaryMysql.js var mysql = require('mysql'); var pool = nul ...
- js学习之原生js实现懒加载
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- cube.js 学习(十一)cube + gitbase 分析git 代码
这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码 需求 我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大 ...
随机推荐
- -Dmaven.test.skip=true 和 -DskipTests
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...
- mysql_select 多表查询
一.等值连接 原理:将多张单表组成一张逻辑大表 语法: select * from 表A,表B where 表A.主键=表B.外键 and 查询条件 select * from 表A,表B ...
- yield再理解--绝对够透彻
首先,拿好宝剑: 先把yield看做“return”, 普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了. 看做return之后再把它看做一个是生成器(generat ...
- Centos7部署开源聊天软件rocket.chat
一.部署rocket.chat 1.看官方文档部署,很简单,一步一步跟着部署即可 注意:需要部署节点需要联网主要是yum方式 https://rocket.chat/docs/installation ...
- Jekyll自动检测代码更新
Jekyll自动检测代码更新 jekyll是一个静态博客生成软件, 我们把代码放在一个仓库里, 只要远程代码更新, 我们就从把它拉到自己的服务器, 然后重新启动jekyll. cd /root/blo ...
- C#混音同时录制采集声卡和麦克风话筒
在项目中,我们可能需要同时录制声卡的声音和麦克风的声音,比如直播间,在线教学.那么如何实现呢?当然是采用SharpCapture!下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步: ...
- ADO.NET 六(DataRow DataColumn)
已经介绍了使用 SqlCommand 对象中的 ExecuteNonQuery 方法执行非查询 SQL 语句来实现对数据表的更新操作,使用 DataSet 对象也能实现相同的功能, 并且能节省数据访问 ...
- Oracle统计、分析和优化环境配置
Oracle统计.分析和优化环境配置 创建批处理文件Login.bat 用于初始化设置系统环境 Login.bat @echo off title eoda mode con cols=140 col ...
- django后台标题替换
在制作django后台的时候,默认的django admin界面标题为“django管理”,找了许多的资料都很麻烦,偶与好友一起探讨,找到了新的解决方法 在django的py文件中插入 from dj ...
- 关于SqlServer数据库数据备份失败的问题
当备份的失败,出现说什么应该支持多少个介质簇,但实际出现了多少介质簇,这个时候就要考虑备份的地址是不是出现问题. 首先,检查备份地址,是不是多于两个以上,那么在备份的时候应该注意,备份地址最好留一个, ...