Frage

Einige Dimensionstabellen in meinem Lagerhaus:

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

Mein SSAS -Projekt:Ich habe diese beiden Dimensionstabellen in einer Dimension in einem Gebotsprojekt verwendet, das mit dem Dimension Assistent erstellt wurde. Die Benutzernamen beziehen sich auf zwei lokale Windows -Benutzerkonten auf dem SSAS -Server. Sie sind Mitglieder eines lokalen Windows Group ReportBrowser. Ich habe eine Rolle für diese Gruppe in Bids erstellt und für diese Dimension im Feld Zulässige Kästchen für das Benutzername -Attribut eine MDX -Expression für diese Dimension hinzugefügt:

STRTOMEMBER("[UserSiteSite].[Username].["+Trim(Mid( UserName, InStr(1, UserName, "\")+ 1,128))+"]")

Diese Dimension wird in einem Würfel verwendet, der alle verarbeitet und bereitgestellt wird. Ich habe dann einen SSRS -Bericht, der auf diesem Würfel basiert.

Meine Absicht:Ich versuche, das protokollierte Benutzer zu nehmen, das derzeit SSRs stöbert und die "entfernen"u003Cdomain> "Teil der Zeichenfolge, die die Ergebnisse effektiv auf die Websites filtert, für den Benutzername einen Datensatz hat.

Für EMSUSER1 sollte ich also Datensätze für beide Websites sehen, aber es scheint nur die erste zuzulassen ("Seite 2" mit ID 2). Es gibt keine Anzeichen von "Site A", obwohl Datensätze für diese Site in der Tatsachentabelle vorhanden sind.

Ich habe durch die Analyse Services 2008 entfesselt und das Schritt -für -Schritt -Buch und über alle Blogs usw. usw. Ich kann die internen Arbeiten einfach nicht ganz streichen, um mein Ziel zu erreichen.

Was mache ich falsch?

War es hilfreich?

Lösung

Nun, es ist jetzt einige Zeit her. Ich habe noch nicht die vollständige Antwort, aber ich habe etwas Hilfe bekommen, wo mich das zu einer Lösung geführt hat. Die Details können gefunden werden hier.

Es gibt viele Möglichkeiten, diese Art von Szenario zu lösen. Ich habe das Gefühl, dass es für mich immer noch besser gibt, aber ich habe etwas, das zumindest funktioniert. Erstellen Sie im Grunde eine separate Klassenbibliothek mit einer statischen Klasse und Funktion, die eine eigene Verbindung zur Datenbank herstellt, und wählt den zulässigen Satz aus. Wenn Sie auf Microsoft.AnalysisServices und Microsoft.AnalysisServices.AdomdServer -Namespaces verweisen, können Sie ein 'Set' -Objekt zurückgeben. Sie können diese Funktion dann auf der Registerkarte "Rollenobjekte Dimension Data Advance" aufrufen:

MyAssembly.MyMethod(UserName)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top