2012-03-30 2 views
0

Ich verwende VB.NET, um eine Verbindung zu und Analysieren von Daten aus einer Analysis Services-Datenbank herzustellen.Effiziente Methode zum Abrufen verwandter Measuregruppen mit einer Dimension in VB.NET

Das Problem, das ich habe, ist beim Versuch, alle Measuregruppen zu finden, die sich auf eine bestimmte Dimension beziehen. Ich habe durch die API gegraben und es scheint nicht, dass Dimensions irgendwelche Informationen über Measuregruppen enthält, aber Measuregruppen können Dimensionen enthalten.

Dies macht es einfach, wenn ich eine Liste der verwandten Dimensionen für eine Measuregruppe (measureGroup.Dimensions) erhalten möchte, aber was ich suche ist das Gegenteil.

Das einzige, was ich denken kann, ist eine Schleife durch die alle Measuregruppen im Cube und überprüfen, ob es einen Verweis auf die Dimension in Frage enthält:

Dim dimID As String = "SOME_DIM_ID" 
Dim relatedMeasureGroups As New List(Of Amo.MeasureGroup) 
For Each mg As Amo.MeasureGroup In _cube.MeasureGroups 
    If mg.Dimensions.Contains(dimID) Then 
     relatedMeasureGroups.Add(mg) 
     Continue For 
    End If 
Next 

Dies funktioniert, aber ist natürlich sehr langsam und ineffizient. Gibt es einen direkteren Weg, den ich gerade nicht sehe?


EDIT: Ich würde sagen, ich brauche, dies zu tun, weil ich all potenziellen many-to-many Measure Groups for a Dimension zu finden versuchen. Wie Sie sehen können, ist die Art, wie ich es mache, ein wenig manuell (Suche nach Maßeinheiten, die mit der ursprünglichen Dimension zusammenhängen, alle Dimensionen finden und wieder alle Maßeinheiten finden, die sich auf beziehen, also) ist ein direkterer Weg, um dieses Problem zu lösen, könnte es umgehen meine Notwendigkeit, das ursprüngliche Problem zu lösen.

Antwort

0

Sie konnten die SSAS DMV abfragen ... $ SYSTEM.MDSCHEMA_MEASUREGROUP_DIMENSIONS

SELECT * 
FROM $SYSTEM.MDSCHEMA_MEASUREGROUP_DIMENSIONS 
WHERE MEASUREGROUP_CARDINALITY = 'MANY' AND 
     DIMENSION_CARDINALITY = 'MANY' AND 
     [DIMENSION_UNIQUE_NAME] = '[Business Unit]' 

Auch kann dies nützlich sein ->http://www.ssas-info.com/VidasMatelisBlog/wp-content/uploads/2008/07/mdschema.jpg

Hier ist die XMLA-Version ...

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis"> 
    <RequestType>MDSCHEMA_MEASUREGROUP_DIMENSIONS</RequestType> 
    <Restrictions> 
     <RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis"> 
      <DIMENSION_UNIQUE_NAME>[<<insert dimension>>]</DIMENSION_UNIQUE_NAME> 
     </RestrictionList> 
    </Restrictions> 
    <Properties/> 
</Discover> 
+0

Das sah vielversprechend aus, aber nach mehr Graben kann ich nicht die Annahme machen, dass der Client ["Systemadministratorberechtigungen für die Analysis Services-Instanz" haben wird.] (Http://msdn.microsoft.wikipedia.org/wiki/Android_Microsoft .com/de-us/library/hh230820.aspx # bkmk_tools) – renolc

+0

Vielleicht funktioniert die XMLA-Version mit Nicht-Admins (ich bin mir nicht ganz sicher) ... –

+0

Danke für die Hilfe. Ich glaube, das ist der richtige Weg, aber ich habe immer noch ein bisschen Schwierigkeiten. Wenn es nicht schon offensichtlich war, bin ich ziemlich grün, wenn es um SSAS-Zeug geht. : P Die XMLA-Ansatz funktioniert teilweise, aber jede Abfrage zu einem MDSCHEMA-Typ scheint keine tatsächlichen Zeilen zurückzugeben. Stattdessen erhalte ich nur die xsd-Definitionen. Zum Beispiel gibt die Abfrage von MDSCHEMA_CUBES [this] (http://pastebin.com/jGfbTVa5) zurück, was mir nichts über die Cubes auf dem Server sagt. Vermisse ich etwas anderes? – renolc

Verwandte Themen