AdomdDataReader를 사용하여 데이터 검색

분석 데이터를 검색할 때 개체는 AdomdDataReader 오버헤드와 대화형 작업 간에 적절한 균형을 제공합니다. 이 개체는 AdomdDataReader 분석 데이터 원본에서 읽기 전용의 전방 전용 평면화된 데이터 스트림을 검색합니다. 이 버퍼링되지 않은 데이터 스트림을 사용하면 절차적인 논리에서 분석 데이터 원본의 결과를 순차적으로 처리할 수 있습니다. 이렇게 하면 AdomdDataReader 데이터가 메모리에 캐시되지 않으므로 표시 목적으로 대량의 데이터를 검색할 때 적합합니다.

AdomdDataReader 또한 쿼리의 전체 결과가 반환될 때까지 기다리는 대신 사용 가능한 즉시 데이터를 검색하여 애플리케이션 성능을 높일 수 있습니다. 또한 기본적으로 이 판독기는 AdomdDataReader 메모리에 한 번에 하나의 행만 저장하기 때문에 시스템 오버헤드를 줄입니다.

최적화된 성능의 단점은 개체가 AdomdDataReader 다른 데이터 검색 방법보다 검색된 데이터에 대한 정보를 더 적게 제공한다는 것입니다. 개체는 AdomdDataReader 데이터 또는 메타데이터를 나타내는 큰 개체 모델을 지원하지 않으며, 이 개체 모델에서는 셀 쓰기 저장과 같은 보다 복잡한 분석 기능을 허용하지 않습니다. 그러나 AdomdDataReader 개체는 셀 집합 데이터를 검색하기 위한 강력한 형식의 메서드 집합과 셀 집합 메타데이터를 테이블 형식으로 검색하는 메서드를 제공합니다. AdomdDataReader 또한 Microsoft .NET Framework 클래스 라이브러리의 System.Data 네임스페이스에서 데이터 바인딩을 지원하고 SelectCommand 메서드를 사용하여 데이터를 검색할 수 있도록 IDbDataReader 인터페이스를 구현합니다.

AdomdDataReader에서 데이터 검색

개체를 AdomdDataReader 사용하여 데이터를 검색하려면 다음 단계를 수행합니다.

  1. 개체의 새 인스턴스를 만듭니다.

    클래스의 새 인스턴스를 AdomdDataReader 만들려면 개체의 Execute 메서드 또는 ExecuteReader 메서드를 호출합니다 AdomdCommand .

  2. 데이터를 검색합니다.

    명령이 쿼리를 실행하면 ADOMD.NET 결과를 XML for Analysis 사양에 설명된 테이블 형식인 결과 집합 형식으로 반환하여 개체의 데이터를 AdomdDataReader 평면화합니다. 테이블 형식은 분석 데이터의 일정하지 않은 차원 때문에 분석 데이터 쿼리에는 잘 사용되지 않습니다.

    다음 메서드 중 하나를 사용하여 테이블 형식의 결과를 요청할 때까지 ADOMD.NET은 클라이언트의 네트워크 버퍼에 결과를 저장합니다.

    • Read 개체의 AdomdDataReader 메서드를 호출합니다.

      메서드는 Read 쿼리 결과에서 행을 가져옵니다. 그런 다음, 열의 이름 또는 서수 참조를 Item 속성에 전달하여 반환된 행의 각 열에 액세스할 수 있습니다. 예를 들어 현재 행의 첫째 열 이름이 ColumnName인 경우 reader[0].ToString() 또는 reader["ColumnName"].ToString()은 현재 행의 첫째 열에 있는 내용을 반환합니다.

    • 형식화된 접근자 메서드 중 하나를 호출합니다.

      이 메서드는 네이 AdomdDataReader 티브 데이터 형식의 열 값에 액세스할 수 있는 일련의 형식화된 접근자 메서드를 제공합니다. 열 값의 기본 데이터 형식을 알고 있으면 형식화된 접근자 메서드에서 열 값을 검색할 때 수행해야 하는 형식 변환이 줄기 때문에 최고의 높은 성능을 얻을 수 있습니다.

      사용할 수 있는 형식화된 접근자 메서드 중 일부는 , GetDoubleGetInt32를 포함합니다GetDateTime. 형식화된 접근자 메서드의 전체 목록은 다음을 참조하세요 AdomdDataReader.

  3. 판독기를 닫습니다.

    개체 사용을 마쳤을 때 항상 메서드를 AdomdDataReader 호출 Close 해야 합니다. '개체의 AdomdDataReader 인스턴스가 열려 AdomdConnection 있는 동안 해당 개체가 단독으로 AdomdDataReader사용됩니다. 다른 AdomdDataReader 또는System.Xml 만드는 것을 포함하여 인스턴스AdomdConnection에서 명령을 실행할 수 없습니다 . 원본AdomdDataReader을 닫을 때까지 XmlReader.

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 .