Mam wiele obiektów w mojej kostce SSAS, z których wiele zostało stworzonych, aby były niewidoczne. NpCzytanie metadanych usług analizy SQL
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;
który nie widoczne i:
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';
które jest.
Próbowałem dwóch metod przesłuchania kostki. Po pierwsze, używając przestrzeni nazw Microsoft.AnalysisServices.AdomdClient
. Na przykład:
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
Próbowałem również przestrzeni nazw Microsoft.AnalysisServices
. Na przykład:
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
Wszystkie powyższe są pobierane bezpośrednio z działającego kodu (ale zredukowane do absolutnego minimum w celu zadawania pytania). Wszystko działa idealnie z każdym kodem, z jednym wyjątkiem, że nie mogę "zobaczyć" żadnego z moich ukrytych obiektów, takich jak miary. I could użyć surowego MDX, który mogę pobrać z bazy danych przy użyciu drugiej techniki. (Poważnie) wadą jest to, że sam musiałbym je przeanalizować, co byłoby prawdziwym zabójstwem buzzów. There's dostał, aby być sposobem na dotarcie do rzeczywistych obiektów bez konieczności przeskakiwania przez tyle obręcze.
Dzięki!