私の倉庫のいくつかのディメンションテーブル:
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プロジェクトの1つのディメンションでこれらの2つのディメンションテーブルを使用しました。ユーザー名は、SSASサーバー上の2つのローカルWindowsユーザーアカウントに関連しており、ローカルWindowsグループReportBrowsersのメンバーです。BIDSでそのグループの役割を作成し、ユーザー名属性の[許可されたセット]ボックスのこのディメンションの[ディメンションデータ]タブにMDX式を追加しました。
STRTOMEMBER("[UserSiteSite].[Username].["+Trim(Mid( UserName, InStr(1, UserName, "\")+ 1,128))+"]")
このディメンションは、すべて処理およびデプロイされるキューブで使用されます。次に、そのキューブに基づくSSRSレポートがあります。
私の意図: 私がやろうとしているのは、現在SSRSを閲覧しているログインユーザーを取得し、返された文字列の「<domain>」部分を削除して、ユーザー名がレコードを持っているサイトだけに結果を効果的にフィルタリングすることです。
したがって、EMSUser1の場合、両方のサイトのレコードが表示されますが、最初のサイトのみが許可されているようです(ID 2の「サイト2」)ファクトテーブルにそのサイトのレコードが存在する場合でも、「サイトA」の兆候はありません。
私はAnalysisServices2008を解き放ち、ステップバイステップの本やブログなどを巡回してきました。目標を達成するために内部の仕組みを完全に理解することはできません。
私は何が間違っているのですか?