Compartir a través de


Funcionalidad de cliente de ADOMD.NET

ADOMD.NET actúa como un puente entre una aplicación y un origen de datos, como ocurre con otros proveedores de datos de .NET Framework Microsoft. Sin embargo, ADOMD.NET, a diferencia de otros proveedores de datos de .NET Framework en ese ADOMD.NET, funciona con datos analíticos. Para funcionar con datos analíticos, ADOMD.NET admite una funcionalidad muy distinta de la funcionalidad de otros proveedores de datos de .NET Framework. ADOMD.NET no sólo permite recuperar datos, sino también metadatos y cambiar la estructura del almacén de datos analíticos:

  • Recuperar metadatos
    Las aplicaciones pueden obtener más información sobre los datos que se pueden recuperar desde el origen de datos a través de la recuperación de metadatos, mediante conjuntos de filas de esquema o del modelo de objetos. Se reconoce toda la información, como los tipos disponibles de cada indicador clave de rendimiento (KPI), las dimensiones de un cubo y los parámetros que necesitan los modelos de minería de datos. Los metadatos son muy importantes para las aplicaciones dinámicas que requieren que una entrada de usuario determine el tipo, profundidad y ámbito de los datos que se van a recuperar. En los ejemplos se incluye el Analizador de consultas, Microsoft Excel y otras herramientas para realizar consultas. Los metadatos son menos críticos para las aplicaciones estáticas que realizan un conjunto predefinido de acciones.

    Para obtener más información: Recuperar metadatos de un origen de datos analíticos.

  • Recuperar datos
    La recuperación de datos es la recuperación real de la información almacenada en el origen de datos. La recuperación de datos es la función primaria de las aplicaciones "estáticas", que conocen la estructura del origen de datos. Además, la recuperación de datos es el resultado final de las aplicaciones "dinámicas". El valor del KPI para una hora determinada del día, el número de bicicletas vendidas en la última hora en cada almacén y los factores que rigen el rendimiento anual de los empleados, son ejemplos de datos que se pueden recuperar. Recuperar datos es vital para cualquier aplicación de consulta.

    Para obtener más información: Recuperar datos de un origen de datos analíticos.

  • Cambiar la estructura de datos analíticos
    ADOMD.NET también se pueden usar para cambiar realmente la estructura del almacén de datos analíticos. Aunque esto se realiza normalmente a través de AMO (Objetos de administración de análisis), puede usar ADOMD.NET para enviar comandos de ASSL (Analysis Services Scripting Language) para crear, modificar o eliminar objetos en el servidor.

    Para obtener más información: Ejecutar comandos en un origen de datos analíticos, Objetos de administración de análisis (AMO), Referencia de Analysis Services Scripting Language

Cada recuperación de metadatos, recuperación de datos y cambio de la estructura de datos, se produce en un momento determinado del flujo de trabajo de una aplicación típica de ADOMD.NET.

Flujo típico del proceso

Normalmente, las aplicaciones de ADOMD.NET tradicionales siguen el mismo flujo de trabajo cuando trabajan con una base de datos analítica:

  1. Primero, se realiza una conexión a la base de datos, mediante el objeto AdomdConnection. Al abrir la conexión, el objeto AdomdConnection expone los metadatos del servidor al que ha realizado la conexión. En una aplicación dinámica, normalmente parte de esta información se muestra al usuario de manera pueda realizar una selección, como qué cubo desea consultar. La aplicación puede volver a usar varias veces la conexión creada en este paso, reduciendo la sobrecarga.

    Para obtener más información: Establecer conexiones en ADOMD.NET

  2. Una vez realizada una conexión, una aplicación dinámica realizaría una consulta al servidor acerca de metadatos más concretos. En una aplicación estática, el programador conoce de antemano los objetos que la aplicación consultará y así no necesitará recuperar estos metadatos. Tanto la aplicación como el usuario pueden usar los metadatos que se recuperan en el paso siguiente.

    Para obtener más información: Recuperar metadatos de un origen de datos analíticos

  3. A continuación, la aplicación ejecuta un comando en el servidor. Este comando puede ser para recuperar metadatos adicionales, recuperar datos o modificar la estructura de base de datos. Para cualquiera de estas tareas, la aplicación podría usar una consulta previamente determinada o hacer uso de los metadatos recién recuperados para crear consultas adicionales.

    Para obtener más información: Recuperar metadatos de un origen de datos analíticos, Recuperar datos de un origen de datos analíticos, Ejecutar comandos en un origen de datos analíticos

  4. Una vez enviado el comando al servidor, éste inicia la devolución de los metadatos o datos al cliente. Esta información se puede ver mediante un objeto CellSet, un objeto AdomdDataReader o un objeto System.XmlReader.

Para ilustrar este flujo de trabajo tradicional, en el ejemplo siguiente se incluye un método que abre una conexión a la base de datos, ejecuta un comando con un cubo conocido y recupera los resultados en un conjunto de celdas. A continuación, el conjunto de celdas devuelve una cadena delimitada por tabuladores que contiene encabezados de columna, encabezados de fila y datos de celda.

string ReturnCommandUsingCellSet()
{
    //Create a new string builder to store the results
    System.Text.StringBuilder result = new System.Text.StringBuilder();

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

        //Create a command, using this connection
        AdomdCommand cmd = conn.CreateCommand();
        cmd.CommandText = @"
                      WITH MEMBER [Measures].[FreightCostPerOrder] AS 
                            [Measures].[Reseller Freight Cost]/[Measures].[Reseller Order Quantity],  
                            FORMAT_STRING = 'Currency'
                      SELECT 
                            [Geography].[Geography].[Country].&[United States].Children ON ROWS, 
                            [Date].[Calendar].[Calendar Year] ON COLUMNS
                      FROM [Adventure Works]
                      WHERE [Measures].[FreightCostPerOrder]";

        //Execute the query, returning a cellset
        CellSet cs = cmd.ExecuteCellSet();

        //Output the column captions from the first axis
        //Note that this procedure assumes a single member exists per column.
        result.Append("\t");
        TupleCollection tuplesOnColumns = cs.Axes[0].Set.Tuples;
        foreach (Tuple column in tuplesOnColumns)
        {
            result.Append(column.Members[0].Caption + "\t");
        }
        result.AppendLine();

        //Output the row captions from the second axis and cell data
        //Note that this procedure assumes a two-dimensional cellset
        TupleCollection tuplesOnRows = cs.Axes[1].Set.Tuples;
        for (int row = 0; row < tuplesOnRows.Count; row++)
        {
            result.Append(tuplesOnRows[row].Members[0].Caption + "\t");
            for (int col = 0; col < tuplesOnColumns.Count; col++)
            {
                result.Append(cs.Cells[col, row].FormattedValue + "\t");
            }
            result.AppendLine();
        }
        conn.Close();

        return result.ToString();
    } // using connection
}

Vea también

Referencia