使用 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.
这些文档页面可能会有帮助:
我有一个 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.
这些文档页面可能会有帮助: