Das CubeDef Objekt ist der naheliegendste Weg, um Metadaten per ADOMD.NET aus einer SSAS Datenbank zu lesen.
 
Nicht immer ist das die beste Lösung. Das CubeDef Objekt stresst den SSAS-Server gehörig.
Das macht sich bermerkbar, wenn eine sehr grosse Datenbank mit einer vielzahl von Measures abgefragt
werden soll.
 
Eine Alternative sind SchemaDatasets, welche es uns eine defensive Möglichkeit bieten Metadaten aus einer Datenbank zu ermitteln. SchemaDatasets enthalten die Metadaten in Tabellenform.
 
Die SchemaDatasets verschaffen uns auch einen hervorragenden Überblick
über die SSAS Architektur.
 
Welche Datenbanken sind auf dem Server?
 
Public Class Form1
    Sub SSASDatenbanken()
        Dim conn As New AdomdClient.AdomdConnection
        Dim ds As New DataSet
        conn.ConnectionString = "Data Source=NX7000JS\SQL2005"
        conn.Open()
        ds = conn.GetSchemaDataSet(AdomdSchemaGuid.Catalogs, Nothing)
        For i As Integer = 0 To ds.Tables(0).Rows.Count – 1
            Console.WriteLine(ds.Tables(0).Rows(i)("CATALOG_NAME"))
        Next
        ds.Dispose()
        conn.Close() : conn.Dispose()
    End Sub
Welche SchemaRowsets werden vom Provider angeboten?
 
ds = conn.GetSchemaDataSet(AdomdSchemaGuid.SchemaRowsets, Nothing)
For i As Integer = 0 To ds.Tables(0).Rows.Count – 1
   Console.WriteLine(ds.Tables(0).Rows(i)(0))
Next
Hier eine Überladung von GetSchemaDataSet inkl. AdomdRestrictionCollection
Wir geben keine GUID an, sondern den Schema Namen als String.
Welche Hierarchien gibt es in Adventure Works DW/Customers?
 
 
Dim rest As New AdomdRestrictionCollection
rest.Add(New AdomdRestriction("CATALOG_NAME", "ADVENTURE WORKS DW"))
rest.Add(New AdomdRestriction("DIMENSION_UNIQUE_NAME", "[CUSTOMER]"))
ds = conn.GetSchemaDataSet("MDSCHEMA_HIERARCHIES", rest)
For i As Integer = 0 To ds.Tables(0).Rows.Count – 1
    Console.WriteLine(ds.Tables(0).Rows(i)("HIERARCHY_CAPTION"))
Next
Advertisements