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

原文地址:https://www.cnblogs.com/rongfengliang/p/10804569.html

时间: 2024-09-30 10:24:11

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

【JS学习笔记】js中关于传地址的问题

我觉得初学者应该会遇到很多这样的问题 条件1.不想定义全局变量的时候 条件2.定义了外围变量却又要引用并且修改其中内容的时候 以下转一篇文章 -------------------------------------------------------------------------------------------------------------------------------------------------------- 很多人,包括我,受书本知识消化不彻底的影响,认为 J

JS学习第一天----JS概述

JavaScript概述 今天开始正式学习JavaScript(以后简称JS).所谓的JS语言是面向web的编程语言,我们可能接触过面向过程和面向对象的编程语言.为什么要学习JS呢?因为绝大多数现代网站都使用了JS,并且所有的的现代web浏览器----基于桌面系统,游戏机,平板电脑和智能手机的浏览器----均包含了JS解释器,这使得JS能够称得上是史上使用最广泛的编程语言.JS也是前端开发工程师必须掌握的三种技能之一:描述网页内容的HTML,描述网页样式的CSS以及描述网页行为的JS. JS是一

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

可以对 Sea.js 进行配置,让模块编写.开发调试更方便. seajs.config seajs.config(options) 用来进行配置的方法. seajs.config({ // 别名配置 alias: { 'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe', 'json': 'gallery/json/1.0.2/json', 'jquery': 'jquery/jquery/1.10.1/jquery' }, // 路径配置 paths: {

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

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

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

在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范中,一个模块就是一个文件.代码的书写格式如下: define(factory); define Function define 是一个全局函数,用来定义模块. define define(factory) define 接受 factory 参数,factory 可以是一个函数,也可以是一个对象或字

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

如果项目遵循推荐的标准目录结构: foo-module/ |-- dist 存放构建好的文件 |-- src 存放 js.css 等源码 | |-- foo.js | `-- style.css `-- package.json 模块信息 那么构建很简单.首先安装 spm 工具(spm2): $ npm install [email protected] -g $ npm install spm[email protected] -g 然后运行构建命令: $ cd foo-module $ sp

JS学习第二天----JS语言核心

JS语言核心 有些东西,对于初学者来说,可能看不懂,我在这里只是想说一下,JS里面有这么个情况,并不是说让你掌握,你只需要大致浏览一下就可以了. // 所有在双斜杠之后的内容都属于注释 //变量是表示值的一个符号名字 //变量通过var关键字来声明,案例: var x;//声明一个变量x //值可以通过等号赋值给变量 x=0;  //现在变量x的值为0 x //=>0:通过变量获取其值 //JS支持多种数据类型 x=1; //数字 x=0.01; //整数和实数公用一种数据类型 x="he

Three.js学习笔记 – “我和小伙伴都惊呆了”的特效和Three.js初探

什么是Three.js three.js是JavaScript编写的WebGL第三方库.提供了非常多的3D显示功能.Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影.材质等各种对象.你可以在它的主页上看到许多精采的演示.不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏)three.js的代码托管在github上面. 上面摘自百度百科.依我来看就是一个在HTML5画布(ca

js学习

 一.什么是对象      所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念. 二.原型链因为每个对象和原型都有原型,对象的原型指向原型对象, 而父的原型又指向父的父,这种原型层层连接起来的就构成了原型链. 三.局部变量.全局变量 局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量.要使用全局变量,需要使用::.在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量