检索元数据 - 使用 ADOMD.NET 对象模型

ADOMD.NET 提供了一个对象模型,用于查看分析数据源中包含的多维数据集和从属对象。 但通过对象模型并不能获得给定分析数据源中的所有元数据。 通过对象模型只可访问那些对客户端应用程序的显示而言最有用的信息,以允许用户以交互方式构造命令。 由于要显示的元数据的复杂性较低,因而 ADOMD.NET 对象模型的使用较为简单。

在 ADOMD.NET AdomdConnection 对象模型中,对象提供对联机分析处理 (OLAP) 多维数据集和挖掘模型(在分析数据源上定义)以及相关对象(如维度、命名集和挖掘算法)的信息。

检索 OLAP 元数据

每个 AdomdConnection 对象都有一个 CubeDef 对象集合,这些对象表示可供用户或应用程序使用多维数据集。 对象 CubeDef 公开有关多维数据集的信息,以及与多维数据集相关的各种对象的信息,例如维度、关键绩效指标、度量值、命名集等。

应尽可能使用 对象来 CubeDef 表示客户端应用程序中的元数据,这些元数据旨在支持多个 OLAP 服务器,或者用于常规元数据显示和访问目的。

注意

对于特定于访问接口的元数据,或用于元数据的详细显示和访问,请使用架构行集检索元数据。 有关详细信息,请参阅 Working with Schema Rowsets in ADOMD.NET

以下示例使用 对象 CubeDef 从本地服务器检索可见多维数据集及其维度:

private string RetrieveCubesAndDimensions()
{
    System.Text.StringBuilder result = new System.Text.StringBuilder();

    //Connect to the local server
    using (AdomdConnection conn = new AdomdConnection("Data Source=localhost;"))
    {
        conn.Open();

        //Loop through every cube
        foreach (CubeDef cube in conn.Cubes)
        {
            //Skip hidden cubes.
            if (cube.Name.StartsWith("$"))
                continue; 

            //Write the cube name
            result.AppendLine(cube.Name);

            //Write out all dimensions, indented by a tab.
            foreach (Dimension dim in cube.Dimensions)
            {
                result.Append("\t");
                result.AppendLine(dim.Name);
            }
        }

        //Close the connection
        conn.Close();
    }

    //Return the results
    return result.ToString();
}

检索数据挖掘元数据

每个 AdomdConnection 对象都有多个集合,这些集合提供有关数据源的数据挖掘功能的信息:

若要确定如何针对服务器的挖掘模型进行查询,请浏览 Microsoft.AnalysisServices.AdomdServer.MiningModel.Columns 集合。 每个 MiningModelColumn 对象都公开以下特征:

  • 对象是否是输入列 () IsInput

  • 对象是否是预测列 () IsPredictable

  • 与离散列关联的值 () Values

  • 列的数据类型 () Type