多维数据集js中的段
Segments in cube js
我想在 cube.js 中实现 OR 过滤器功能。 link 说我们可以通过在 cubejs 参数中使用 segments 选项来做到这一点。
如何使用分段,它的用途是什么?我尝试从网站上了解有关它的 5 行文档,但未能理解如何使用它。
细分是预定义的过滤器。
您可以在SQL中使用段来定义复杂的过滤逻辑。
例如,一个特定城市的用户可以被视为一个细分。
cube(`Users`, {
// ...
segments: {
sfUsers: {
sql: `${CUBE}.location = 'San Francisco'`
}
}
});
或者使用segments实现跨栏OR
逻辑:
cube(`Users`, {
// ...
segments: {
sfUsers: {
sql: `${CUBE}.location = 'San Francisco' or ${CUBE}.state = 'CA'`
}
}
});
与其他多维数据集成员定义一样,段可以是 generated:
const userSegments = {
sfUsers: ['San Francisco', 'CA'],
nyUsers: ['New York City', 'NY']
}
cube(`Users`, {
// ...
segments: {
...(Object.keys(userSegments).map(segment => ({
[segment]: {
sql: `${CUBE}.location = '${userSegments[segment][0]}' or ${CUBE}.state = '${userSegments[segment][1]}'`
}
})).reduce((a, b) => ({ ...a, ...b })))
}
});
定义段后,可以传入query object:
{
measures: ['Users.count'],
segments: ['Users.sfUsers']
}
我想在 cube.js 中实现 OR 过滤器功能。 link 说我们可以通过在 cubejs 参数中使用 segments 选项来做到这一点。
如何使用分段,它的用途是什么?我尝试从网站上了解有关它的 5 行文档,但未能理解如何使用它。
细分是预定义的过滤器。
您可以在SQL中使用段来定义复杂的过滤逻辑。 例如,一个特定城市的用户可以被视为一个细分。
cube(`Users`, {
// ...
segments: {
sfUsers: {
sql: `${CUBE}.location = 'San Francisco'`
}
}
});
或者使用segments实现跨栏OR
逻辑:
cube(`Users`, {
// ...
segments: {
sfUsers: {
sql: `${CUBE}.location = 'San Francisco' or ${CUBE}.state = 'CA'`
}
}
});
与其他多维数据集成员定义一样,段可以是 generated:
const userSegments = {
sfUsers: ['San Francisco', 'CA'],
nyUsers: ['New York City', 'NY']
}
cube(`Users`, {
// ...
segments: {
...(Object.keys(userSegments).map(segment => ({
[segment]: {
sql: `${CUBE}.location = '${userSegments[segment][0]}' or ${CUBE}.state = '${userSegments[segment][1]}'`
}
})).reduce((a, b) => ({ ...a, ...b })))
}
});
定义段后,可以传入query object:
{
measures: ['Users.count'],
segments: ['Users.sfUsers']
}