Ich habe eine Reihe von Objekten in meinem SSAS-Cube, von denen viele erstellt wurden, um unsichtbar zu sein. Zum Beispiel:SQL Analysis Services-Metadaten lesen
CREATE MEMBER CURRENTCUBE.[Measures].[Latency Backcolor]
AS CASE
WHEN [Average Latency] > [Web Alert] THEN 6384849
WHEN [Average Latency] > [Web Warn] THEN 4577517
ELSE IIF ([measures].[Query count] > NULL, 14876123, null)
END, VISIBLE = 0;
das ist nicht sichtbar und:
CREATE MEMBER CURRENTCUBE.[Measures].[Average Latency]
AS IIF ([Measures].[Query Count] > 0, [Measures].[Total Ms]/[Measures].[Query Count], null),
FORMAT_STRING = "#,##0.00000;-#,##0.00000",
BACK_COLOR = [Latency Backcolor],
VISIBLE = 1,
DISPLAY_FOLDER = 'Overall',
ASSOCIATED_MEASURE_GROUP = 'Fact Raw FD';
die ist.
Ich habe zwei Methoden zur Abfrage des Cubes ausprobiert. Zuerst den Namespace Microsoft.AnalysisServices.AdomdClient
verwenden. Zum Beispiel:
using Microsoft.AnalysisServices.AdomdClient;
var _connection = new AdomdConnection
{
ConnectionString = "Data Source=localhost;User ID=me;Password=secret;Initial Catalog=dbname",
ShowHiddenObjects = true
};
_connection.Open();
CubeDef _cube = _connection.Cubes["MyCube"];
// _cube.Measures
Ich habe auch versucht, den Microsoft.AnalysisServices
Namespace. Zum Beispiel:
using Microsoft.AnalysisServices;
Server server = new Server();
server.Connect("Data Source=localhost;User ID=me;Password=secret");
Database database = server.Databases.GetByName("dbname");
Cube cube = database.Cubes.FindByName("MyCube");
// cube.Dimensions
// cube.MeasureGroups[].Measures
Alle oben genannten wird direkt vom Arbeits Code genommen (obwohl die Frage zu stellen für die Zwecke auf das absolute Minimum reduziert). Alles funktioniert perfekt mit jedem Code, mit der einzigen Ausnahme, dass ich keines meiner versteckten Objekte, wie "Measures", "sehen" kann. I könnte die rohe MDX verwenden, die ich aus der Datenbank mit der zweiten Technik abrufen kann. Die (ernste) schlechte Seite ist, dass ich es selbst analysieren muss, was ein echter Buzz-Kill wäre. Es gibt bekommen zu einem Weg, um die tatsächlichen Objekte zu bekommen, ohne durch so viele Reifen springen müssen.
Danke!