使用 AbstractCube.sql() 的扩展立方体中未定义的安全上下文。多维数据集

Undefined Security Context in extended cube using AbstractCube.sql(). CubeJS

我有一个 sql 属性基于 BaseCube/AbstractCube 的扩展多维数据集。基础立方体在其 sql 属性中使用 SECURITY_CONTEXT。 当我查询扩展立方体时,我得到 TypeError: Cannot read property 'tenantId' of undefined

SECURITY_CONTEXT如下:

{
    "tenantId": 1,
    "iat": 1630526261,
    "exp": 1808403576,
    ...
}

多维数据集定义是这样的:

const BaseOrders = cube({
  sql: `SELECT * FROM orders WHERE ${SECURITY_CONTEXT.tenantId.requiredFilter('tenantId')}`

  measures: {
    count: {
      type: `count`,
      sql: `id`
    }
  }
});

cube(`RestrictedOrderFacts`, {
  extends: BaseOrders,
  sql: `
    SELECT * FROM (${BaseOrders.sql()}) AS bo WHERE status = 'RESTRICTED'
  `,
  measures: {
    doubleCount: {
      type: `number`,
      sql: `${count} * 2`
    }
  }
});

查询 RestrictedOrderFacts 时,似乎 SQL 编译器没有可用的安全上下文。我在做不该做的事吗? 如何根据用例向抽象立方体添加额外的过滤器?

注意:抽象多维数据集的想法是为所有扩展多维数据集提供行级安全性。因此,我们可以将租户行级别的权限集中在Abstract Cube上。

我们不建议使用 SECURITY_CONTEXT 和抽象多维数据集来管理数据访问。为此,我们建议使用 queryRewrite.
这些文档页面可能会有帮助: