cube.js dimensions 的一些说明
部分参数
- show
控制维度的可见性
dimensions: {
comment: {
type: `string`,
sql: `comments`,
shown: false
}
}
- case
进行case 的支持
cube("caseapp",{
sql: `select * from demoapp`,
measures:{
type_count:{
sql:`type`,
type:`count`
},
name_count:{
sql:`name`,
type:`count`
}
},
dimensions:{
type:{
sql:`type`,
type:`string`
},
myversioninfo: {
type: `string`,
case: {
when: [
{ sql: `${CUBE}.type = 'v1'`, label: `old` },
{ sql: `${CUBE}.type = 'v2'`, label: `not old` },
{ sql: `${CUBE}.type = 'v4'`, label: `new` }
],
else: { label: `Unknown` }
}
},
name:{
sql:`name`,
type:`string`
},
id:{
sql:`id`,
type:`number`,
primaryKey:true
}
}
})
参考生成的sql
SELECT
"caseapp".type "caseapp__type",
CASE
WHEN "caseapp".type = 'v1' THEN 'old'
WHEN "caseapp".type = 'v2' THEN 'not old'
WHEN "caseapp".type = 'v4' THEN 'new'
ELSE 'Unknown'
END "caseapp__myversioninfo",
count("caseapp".type) "caseapp__type_count"
FROM
demoapp AS "caseapp"
GROUP BY
1,
2
ORDER BY
3 DESC
LIMIT
10000
- primaryKey
主键配置,在进行joins 处理的时候很重要
dimensions: {
id: {
sql: `id`,
type: `number`,
primaryKey: true
}
}
- subQuery
可以方便的引用measure 在dimensions中 - propagateFiltersToSubQuery
可以过滤条件应用到子查询中
dimensions: {
usersCount: {
sql: `${Users.count}`,
type: `number`,
subQuery: true,
propagateFiltersToSubQuery: true
}
}
说明
subQuery 还是比较强大的,但是也有一些问题,比如目前能使用subQuery 的都必须是定义好的measure
同时不支持复杂的处理
cube(`Deals`, {
sql: `select * from deals`,
measures: {
amount: {
sql: `amount`,
type: `sum`
}
}
});
cube(`SalesManagers`, {
// ...
dimensions: {
// ...
dealsAmount: {
sql: `sum(${Deals}.amount)`, // !!! Doesn't work!
type: `number`,
subQuery: true
}
}
});
同时subQuery定义的维度也可以在measures中引用
同时subQuery实现是基于join的(join 使用left join)所以需要配置主键,不然会有错误提示
同一个cube 中subQuery定义的维度不能引用measures(这个是目前的一个约定,可能后期会变动)
说明
cube.js 目前的官方文档,好多地方还不是很清晰(有一些隐藏点,目前还好看到有专门的人员在进行更新)
参考资料
https://cube.dev/docs/dimensions
https://cube.dev/docs/subquery
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-01-29 hasura graphql-engine v1.0 发布了
2019-01-29 使用kube_ping进行Keycloak群集设置 - DZone Cloud
2019-01-29 jenkins 集成 keycloak 认证
2019-01-29 openresty 集成 keycloak-oauth-oidc