多维数据集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']
}