我仓库中的一些维度表:
DML
Site
Id bigint
Name nvarchar(256)
Primary key (Id)
DATA
SiteId Name
2 Site 2
3 Site A
DML
UserSite
Username nvarchar(256)
SiteId bigint
Primary key (Username, SiteId)
Foreign key (SiteId) referrences Site(Id)
DATA
Username SiteId
EMSUser1 2
EMSUser1 3
EMSUser2 3
我的 SSAS 项目: 我在一个使用维度向导创建的 BIDS 项目中的一个维度中使用了这两个维度表。用户名与 SSAS 服务器上的两个本地 windows 用户帐户相关,它们是本地 windows 组 ReportBrowsers 的成员。我在 BIDS 中为该组创建了一个角色,并在 Username 属性的 AllowedSet 框中为该维度的维度数据选项卡添加了一个 MDX 表达式:
STRTOMEMBER("[UserSiteSite].[Username].["+Trim(Mid( UserName, InStr(1, UserName, "\")+ 1,128))+"]")
此维度用于已全部处理和部署的多维数据集。然后我有一个基于该多维数据集的 SSRS 报告。
我的意图: 我要做的是获取当前正在浏览 SSRS 的登录用户并删除返回的字符串的“<domain>\”部分,从而有效地将结果过滤到用户名有记录的站点。
因此,对于 EMSUser1,我应该看到两个站点的记录,但它似乎只允许第一个(“站点 2”,ID 为 2)即使事实表中存在该站点的记录,也没有“站点 A”的迹象。
我一直在浏览Analysis Services 2008 的发布和分步手册以及所有博客等。我只是无法完全了解内部工作以实现我的目标。
我究竟做错了什么?