2012-01-10 10 views
3

Adomdclientライブラリを使用してMDXクエリからデータを取得しようとしています。私はこの例であるhttp://www.yaldex.com/sql_server/progsqlsvr-CHP-20-SECT-6.htmlに頼っていました。C#でmdxクエリからデータを取り出す方法は?

MDXクエリ:例えばのSqlClientなどの他の名前空間と同様

SELECT {[Measures].[Cantidad Vta],[Measures].[Monto Vta],[Measures].[ExistenciaHistorica],[Measures].[Valor Inventario historico]} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize({DrilldownLevel({[DIM SUBMARCA].[Código].[All]})}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM (SELECT ({[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Bodega],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Cadena],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Outlet]}) ON COLUMNS FROM [JUGUETRONHQ]) WHERE ([DIM FECHA VENTA].[JERARQUIA FECHA VENTA].[Time].&[2012-01-01T00:00:00],[DIM FECHA EXISTENCIA].[JERARQUIA FECHA EXISTENCIA].[All]) CELL PROPERTIES VALUE 

、接続、コマンドとDataReaderの使用:

using Microsoft.AnalysisServices.AdomdClient; 

... 

using (AdomdConnection con = new AdomdConnection(connection_string)) 
{ 
    con.Open(); 

    using (AdomdCommand command = new AdomdCommand(query, con)) 
    { 
    using (AdomdDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
     for (int i = 0; i < reader.FieldCount; i++) 
      Console.Write(reader[i] + (i == reader.FieldCount - 1 ? "" : ", ")); 
      Console.WriteLine(""); 

     } 
    } 
    } 
} 

しかしながら、このスニペットは、正しく4の列を示しています。

[DIM SUBMARCA].[Código].[All], , , 3, 825 

それはでなければなりません。

115200081, , , 3, 825 

おそらくキャストが必要ですが、どのように行うのかわかりません。

答えて

1

これは、データの取得ではなく、MDXクエリの問題のようです。 [DIM SUBMARCA]。[Codigo]ディメンションに正しく拘束されていません。

+0

が、私はこのプラグインのHTTPを使用して、そのクエリを取得する手順:// olappivottableextend .codeplex.com/on excel。スプレッドシートにクエリが正しく表示されます(115200081、3、825 ) – aurahama

0

あなたのクエリは1 [ALL]レベル外形寸法および4つの措置があります。

[DIM SUBMARCA].[Código].[All], 
[Measures].[Cantidad Vta], 
[Measures].[Monto Vta], 
[Measures].[ExistenciaHistorica], 
[Measures].[Valor Inventario historico] 

これは1 [ALL]列と4値取得します。。

[DIM SUBMARCA] [Código]を[すべて]、、、3,825

115200081はキー値ですか?あなたは "DIMENSION PROPERTIES MEMBER_HEY"を使ってこの値を得ることができます。

0

MDXクエリからデータを取得

がMicrosoft.AnalysisServices.AdomdClient.dllのための参照を追加
のAdomdConnectionが

AdomdConnection con = new AdomdConnection("connectionstring"); // connect DB con.Open(); AdomdCommand cmd = new AdomdCommand("MDX query", con); //query 

AdomdDataReader reader = cmd.ExecuteReader(); //Execute query 

    while (reader.Read()) // read 
     { 
      Data dt = new Data(); // custom class 
      dt.Gender = reader[0].ToString(); 

      dt.Eid = reader[1].ToString(); 
      dt.salary = reader[2].ToString(); 
      data.Add(dt); 
     } 
+0

Windows認証用の接続文字列connectionString = "データソース= ServeName;統合セキュリティ= SSPI;初期カタログ= DBName; – user3904340

関連する問題