设置计算维度的角色(SSAS多维数据集)

问题描述:

多维数据集(SQL Server 2016)包含维度[Unit].[Unit].&[1][Unit].[Unit].&[2]。我创建了一个计算维度:设置计算维度的角色(SSAS多维数据集)

CREATE MEMBER CURRENTCUBE.[Unit].[Unit].[All].[1/2] AS [Unit].[Unit].&[1]/[Unit].[Unit].&[2] 

限制访问我创建了角色的[Unit].[Unit].[All].[1/2]尺寸。 但我无法在DimensionData-Basic选项卡中选择[Unit].[Unit].[All].[1/2],因为此属性未出现在属性列表中。 如果我在MDX脚本Denied member set: {[Unit].[Unit].[All].[1/2]}的DimensionData-Advanced选项卡中指定属性[Unit].[Unit].[All].[1/2],则用户会看到此属性。 如何限制对计算维度的访问?

如果您将DimUnit SQL表更改为包含“1/2”行,则将​​3210语句替换为以下内容,它应该工作相同,并且您应该能够在部署完成后在维度数据安全性中看到此成员处理多维数据集:

([Unit].[Unit].[1/2]) 
    = DIVIDE([Unit].[Unit].&[1], [Unit].[Unit].&[2]); 

那么你已经创建了一个角色,使1/2的成员消失浏览与该用户的多维数据集时,你会得到一个错误之后。上述行更改为以下:

(IIf(IsError(StrToMember("[Unit].[Unit].[1/2]",CONSTRAINED)),Head([Unit].[Unit].Members,0),StrToMember("[Unit].[Unit].[1/2]",CONSTRAINED)) 
    = DIVIDE([Unit].[Unit].&[1], [Unit].[Unit].&[2]); 

BTW,DIVIDE做安全的鸿沟,从而被零除不会造成问题。

关闭我的头顶我不记得StrToMember是否有必要而不仅仅是一个成员参考,所以我玩它安全。随意尝试没有StrToMember。

要清楚整个脚本应该说:

CALCULATE; 

(IIf(IsError(StrToMember("[Unit].[Unit].[1/2]",CONSTRAINED)),Head([Unit].[Unit].Members,0),StrToMember("[Unit].[Unit].[1/2]",CONSTRAINED)) 
    = DIVIDE([Unit].[Unit].&[1], [Unit].[Unit].&[2]); 
+0

我取代旧的“创建成员”,并浏览与该用户的多维数据集时我有错误。 我不明白我该在哪里插入 '(IIf(IsError(StrToMember(“[Unit]。[Unit]。[1/2]”,CONSTRAINED)),Head([Unit]。[Unit] .Members ,[0],0),StrToMember(“[Unit]。[Unit] .1/2”,CONSTRAINED))= DIVIDE([Unit]。[Unit]。&[1],[Unit]。[Unit]。& [012]] 在多维数据集中的“计算”或角色中的DimensionData-Advanced选项卡(“Denied member set”)? – Natalya

+0

转到计算选项卡并翻转到脚本视图。 !'CALCULATE' – GregGalloway

+0

感谢您的帮助 我在写一个脚本:。 'CALCULATE; 创建成员CURRENTCUBE [单位] [单位] [1/2] AS (IIF(ISERROR(StrToMember(“[单位]。[Unit] .1/2',CONSTRAINED)), HEAD([U (Unit)。[Unit]。[Unit] .Members,0), StrToMember('[Unit]。[Unit]。1/2'',CONSTRAINED))= DIVIDE ,[单位]。[单位]。 &[2]));' 但是我得到一个错误“当字符串[Unit]。[Unit]。&[1/2]被解析时,在该立方体中找不到该对象。 – Natalya