Получение данных с помощью объекта AdomdDataReader

При извлечении аналитических данных AdomdDataReader объект обеспечивает хороший баланс между нагрузкой и взаимодействием. AdomdDataReaderОбъект получает однонаправленный однопроходный плоский поток данных из источника аналитических данных. Этот небуферизованный поток данных позволяет применять процедурные средства для последовательной обработки результатов, получаемых из источника аналитических данных, с высокой эффективностью. Это позволяет AdomdDataReader получить хороший выбор при извлечении больших объемов данных в целях показа, поскольку данные не кэшируются в памяти.

AdomdDataReaderКроме того, может повысить производительность приложения, получая данные сразу после их доступности, а не ожидая выполнения всех результатов запроса. Кроме того, снижается нагрузка на AdomdDataReader систему, поскольку по умолчанию этот модуль чтения хранит только одну строку за раз в памяти.

Компромисс для оптимизированной производительности заключается в AdomdDataReader том, что объект предоставляет меньше информации о полученных данных, чем другие методы получения данных. AdomdDataReaderОбъект не поддерживает модель больших объектов для представления данных или метаданных, а также не позволяет этой объектной модели выполнять более сложные аналитические функции, такие как обратная запись в ячейки. AdomdDataReaderОднако объект предоставляет набор строго типизированных методов для получения данных набора ячеек и метод для получения метаданных набора ячеек в табличном формате. кроме того, AdomdDataReader реализует интерфейс идбдатареадер для поддержки привязки данных и получения данных с помощью метода SelectCommand из пространства имен System. data библиотеки классов Microsoft платформа .NET Framework.

Извлечение данных из AdomdDataReader

Чтобы использовать AdomdDataReader объект для получения данных, выполните следующие действия.

  1. Создайте новый экземпляр объекта.

    Чтобы создать новый экземпляр AdomdDataReader класса, вызывается Execute метод AdomdCommand или ExecuteReader объекта.

  2. Получение данных.

    По мере выполнения командой запроса ADOMD.NET возвращает результаты в формате ResultSet , табличном формате, как описано в спецификации XML для аналитики, для спрямления данных для AdomdDataReader объекта. С учетом переменной размерности аналитических данных табличный формат при запросе к ним используется редко.

    Компонент ADOMD.NET хранит эти табличные результаты в сетевом буфере на клиенте, пока они не будут запрошены при помощи одного из следующих методов.

    • Вызовите метод Read объекта AdomdDataReader.

      ReadМетод получает строку из результатов запроса. Затем можно передать имя или порядковую ссылку столбца в свойство Item , чтобы получить доступ к каждому столбцу возвращаемой строки. Например, имя первого столбца текущей строки — ColumnName. В этом случае либо метод reader[0].ToString(), либо метод reader["ColumnName"].ToString() возвратит содержимое первого столбца в текущей строке.

    • Вызовите один из типизированных методов доступа.

      AdomdDataReaderПредоставляет ряд типизированных методов доступа — методы, которые позволяют получать доступ к значениям столбцов в собственных типах данных. Если базовый тип данных значения столбца известен, типизированный метод доступа позволяет сократить объем преобразования типов, необходимый при извлечении значения столбца, обеспечивая тем самым наивысшую производительность.

      Некоторые доступные типизированные методы доступа включают GetDateTime , GetDouble и GetInt32 . Полный список типизированных методов доступа см. в разделе AdomdDataReader .

  3. Закройте модуль чтения.

    При завершении использования AdomdDataReader объекта следует всегда вызывать Close метод. При открытом AdomdConnection экземпляре AdomdDataReader объекта объект используется исключительно AdomdDataReader этим объектом. Вы не сможете выполнять команды на экземпляре AdomdConnection , включая создание другого AdomdDataReader или System.Xml. XmlReaderдо закрытия исходного AdomdDataReader .

Пример извлечения данных из AdomdDataReader

В следующем примере кода выполняется итерация по AdomdDataReader объекту и возвращаются первые два значения в виде строк из каждой строки.

If Reader.HasRows Then  
    Do While objReader.Read()  
        Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _  
            objReader.GetString(0), objReader.GetString(1))  
    Loop  
Else  
  Console.WriteLine("No rows returned.")  
End If  
  
objReader.Close()  
if (objReader.HasRows)  
  while (objReader.Read())  
    Console.WriteLine("\t{0}\t{1}", _  
        objReader.GetString(0), objReader.GetString(1));  
else  
  Console.WriteLine("No rows returned.");  
  
objReader.Close();  

Извлечение метаданных из AdomdDataReader

Когда экземпляр AdomdDataReader объекта открыт, можно получить сведения о схеме или метаданные о текущем наборе записей с помощью GetSchemaTable метода. GetSchemaTable Возвращает объект DataTable , который заполняется сведениями о схеме для текущего набора записей. Объект DataTable включает по одной строке для каждого столбца набора записей. Каждый столбец строки таблицы схемы соответствует свойству столбца, возвращенного в наборе ячеек, где ColumnName — это имя свойства, а значение столбца — это значение свойства.

Пример извлечения метаданных из AdomdDataReader

В следующем примере кода записывается информация о схеме для AdomdDataReader объекта.

Dim schemaTable As DataTable = objReader.GetSchemaTable()  
  
Dim objRow As DataRow  
Dim objColumn As DataColumn  
  
For Each objRow In schemaTable.Rows  
  For Each objColumn In schemaTable.Columns  
    Console.WriteLine(objColumn.ColumnName & " = " & objRow(objColumn).ToString())  
  Next  
  Console.WriteLine()  
Next  
DataTable schemaTable = objReader.GetSchemaTable();  
foreach (DataRow objRow in schemaTable.Rows)  
{  
  foreach (DataColumn objColumn in schemaTable.Columns)  
    Console.WriteLine(objColumn.ColumnName + " = " + objRow[objColumn]);  
  Console.WriteLine();  
}  

Извлечение нескольких результирующих наборов

Интеллектуальный анализ данных поддерживает концепцию вложенных таблиц, к которым ADOMD.NET предоставляет доступ как к вложенным наборам строк. Чтобы получить вложенный набор строк, связанный с каждой строкой, вызовите GetDataReader метод.