SSAS:对某些用户隐藏 table 中某些字段的方法
SSAS: The way to hide certain fields in a table from certain users
对于 Microsoft Analysis Services 表格 (1500) 数据立方体,给定销售额 table:
CREATE TABLE SalesActual (
Id Int,
InvoiceNumber Char(10),
InvoiceLineNumber Char(3),
DateKey Date,
SalesAmount money,
CostAmount money )
DAX 中的 GP 计算在哪里
GP := SUM('SalesActual'[SalesAmount]) - SUM('SalesActual'[CostAmount])
我想限制某些用户访问成本/GP 数据。您会推荐哪种方法?
我能想到的是:
将所有销售额和成本拆分到单独的行中,并创建一个 MetricType 标志 'C'、'S' 等,并设置行级安全性,以便某些人不会无法看到成本线。
分成两个不同的table通过OLS处理
还有其他推荐吗?
我倾向于方法 1,因为我有一些其他的 RLS 设置并且 OLS 不能很好地与 RLS 混合,但我也想听听专家的意见还有什么其他方法可以满足这些要求。
谢谢!
更新:我最终采用了第一种方法。
- 表格数据库对于这种拆分来说速度很快
- OLS = 使字段无效;而且我必须创建和维护两个报告...这是不可取的
- RLS更容易控制;我认为 cost / GP 是我现在唯一需要排除的东西,但如果我需要限制其他字段,它也给了我一些过滤器的灵活性;我的数据会垂直增长,但我也可以在未来向模型中添加其他数据类型,如销售预算、销售预测、费用和其他成本等。全部由 RLS
轻松控制
已接受的答案有效并且适用于许多情况。感谢回答者的分享,只是不能解决我的特殊情况。
您可以创建一个由 CLS 完成工作的角色。 CLS 没有 gui,但我们可以使用脚本(您可以从 SSMS“Script Role As”编写您当前角色的脚本来修改 - 但最好在新角色上测试它)
{
"createOrReplace": {
"object": {
"database": "YourDatabase",
"role": "CLS1"
},
"role": {
"name": "CLS1",
"modelPermission": "read",
"members": [
{
"memberName": "YourOrganization\userName"
}
],
"tablePermissions": [
{
"name": "Sales",
"columnPermissions": [
{
"name": "SalesBonus",
"metadataPermission": "none"
},
{
"name": "CostAmount",
"metadataPermission": "none"
}
]
}
]
}
}
}
关键元素是 TablePermissions 和 columnPermissions,我们在其中定义用户不能使用的列。
对于 Microsoft Analysis Services 表格 (1500) 数据立方体,给定销售额 table:
CREATE TABLE SalesActual (
Id Int,
InvoiceNumber Char(10),
InvoiceLineNumber Char(3),
DateKey Date,
SalesAmount money,
CostAmount money )
DAX 中的 GP 计算在哪里
GP := SUM('SalesActual'[SalesAmount]) - SUM('SalesActual'[CostAmount])
我想限制某些用户访问成本/GP 数据。您会推荐哪种方法?
我能想到的是:
将所有销售额和成本拆分到单独的行中,并创建一个 MetricType 标志 'C'、'S' 等,并设置行级安全性,以便某些人不会无法看到成本线。
分成两个不同的table通过OLS处理
还有其他推荐吗?
我倾向于方法 1,因为我有一些其他的 RLS 设置并且 OLS 不能很好地与 RLS 混合,但我也想听听专家的意见还有什么其他方法可以满足这些要求。
谢谢!
更新:我最终采用了第一种方法。
- 表格数据库对于这种拆分来说速度很快
- OLS = 使字段无效;而且我必须创建和维护两个报告...这是不可取的
- RLS更容易控制;我认为 cost / GP 是我现在唯一需要排除的东西,但如果我需要限制其他字段,它也给了我一些过滤器的灵活性;我的数据会垂直增长,但我也可以在未来向模型中添加其他数据类型,如销售预算、销售预测、费用和其他成本等。全部由 RLS 轻松控制
已接受的答案有效并且适用于许多情况。感谢回答者的分享,只是不能解决我的特殊情况。
您可以创建一个由 CLS 完成工作的角色。 CLS 没有 gui,但我们可以使用脚本(您可以从 SSMS“Script Role As”编写您当前角色的脚本来修改 - 但最好在新角色上测试它)
{
"createOrReplace": {
"object": {
"database": "YourDatabase",
"role": "CLS1"
},
"role": {
"name": "CLS1",
"modelPermission": "read",
"members": [
{
"memberName": "YourOrganization\userName"
}
],
"tablePermissions": [
{
"name": "Sales",
"columnPermissions": [
{
"name": "SalesBonus",
"metadataPermission": "none"
},
{
"name": "CostAmount",
"metadataPermission": "none"
}
]
}
]
}
}
}
关键元素是 TablePermissions 和 columnPermissions,我们在其中定义用户不能使用的列。