我想在cube.js中实现OR过滤器功能。 link表示我们可以通过在cubejs参数中使用细分选项来做到这一点。
如何使用细分,其目的是什么?我试图从网站上了解他们的5行文档,但未能理解如何使用它。
细分是预定义的过滤器。
您可以使用段在SQL中定义复杂的过滤逻辑。 例如,一个特定城市的用户可以被视为一个细分。
cube(`Users`,{
// ...
segments: {
sfUsers: {
sql: `${CUBE}.location = 'San Francisco'`
}
}
});
或使用句段实现跨列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']
}