1

MDX クエリと ADOMD アダプターを使用してキューブからデータを取得するために、次の C# コード スニペットを使用しています。

public DataTable GetDataTable(string query, string connectionString)
{
    DataTable data = new DataTable();
    using (AdomdConnection cubeConnection = new AdomdConnection(connectionString))
    {
        cubeConnection.Open();
        try
        {
            using (AdomdDataAdapter adapter = new AdomdDataAdapter(query, cubeConnection))
            {
                adapter.Fill(data);
            }
        }
        catch (Exception)
        {
            throw new Exception("An error occurred while retrieving the data");
        }
    }
    return data;
}

私が書いたクエリは、SSMS で次の結果を返します。

ここに画像の説明を入力

上記のコードを使用してデータを取得した後、以下に示すように列全体が削除されます (Visual Studio のデータ テーブル ビジュアライザーから取得したスクリーンショット)。

ここに画像の説明を入力

上記のように、2 番目の列が削除されています。列をデータテーブルに入れるための解決策はありますか?

追加情報:

AdomdClient DLL 名: Microsoft.AnalysisServices.AdomdClient

AdomdClient DLL バージョン: 11.0.0.0

4

1 に答える 1

1

これは設計によるものですが、やや直感に反します。返されるディメンション列の数は、返されるレベルから 1 を引いた値に基づきます。

単一のレベル (つまり、すべて) のみを返すため、ADOMD は列を表示しません。2 次元レベル (つまり、すべて + 名前) を返すと、結果に名前列が表示されます。

于 2012-11-09T20:24:42.197 に答える