다음을 통해 공유


Azure Cosmos DB ODBC 드라이버를 사용하여 BI 및 데이터 분석 도구에 연결

적용 대상: NoSQL

이 문서에서는 Azure Cosmos DB ODBC 드라이버를 설치하고 사용하여 Azure Cosmos DB 데이터에 대한 정규화된 테이블과 뷰를 만드는 방법을 안내합니다. SQL 쿼리를 사용하여 정규화된 데이터를 쿼리하거나 Power BI 또는 다른 BI 및 분석 소프트웨어로 데이터를 가져와서 보고서 및 시각화를 만들 수 있습니다.

Azure Cosmos DB는 엄격한 스키마로 국한하지 않으면서 신속한 애플리케이션 개발과 데이터 모델 반복 기능을 지원하는 스키마 없는 데이터베이스입니다. 단일 Azure Cosmos DB 데이터베이스에 다양한 구조의 JSON 문서가 포함될 수 있습니다. 이 데이터를 분석하거나 보고하려면 스키마에 맞게 데이터를 평면화해야 할 수 있습니다.

ODBC 드라이버는 Azure Cosmos DB 데이터를 데이터 분석 및 보고 요구에 맞는 테이블 및 뷰로 정규화합니다. 정규화된 스키마를 사용하면 ODBC 규격 도구를 사용하여 데이터에 액세스할 수 있습니다. 스키마는 기본 데이터에 아무런 영향도 미치지 않으며 개발자도 이러한 스키마를 준수할 필요가 없습니다. ODBC 드라이버를 사용하면 데이터 분석가와 개발 팀이 Azure Cosmos DB 데이터베이스를 유용하게 사용할 수 있습니다.

정규화된 테이블 및 뷰에 대해 쿼리별 그룹화, 삽입, 업데이트 및 삭제 등의 SQL 작업을 수행할 수 있습니다. 이 드라이버는 ODBC 3.8을 준수하며 ANSI SQL-92 구문을 지원합니다.

Important

Azure Cosmos DB용 Azure Synapse Link를 사용하여 데이터에 대한 테이블과 뷰를 만드는 것이 좋습니다. Synapse Link는 ODBC 드라이버를 통해 큰 데이터 세트에 대한 고유한 성능 이점이 있습니다. 정규화된 Azure Cosmos DB 데이터를 SSIS(SQL Server Integration Services), QlikSense, Tableau 및 기타 분석 소프트웨어, BI 및 데이터 통합 도구와 같은 다른 소프트웨어 솔루션에 연결할 수도 있습니다. 이러한 솔루션을 사용하여 Azure Cosmos DB 데이터로 시각화를 분석, 이동, 변환 및 생성할 수 있습니다.

Important

  • Azure Cosmos DB와 ODBC 드라이버 연결은 현재 Azure Cosmos DB for NoSQL에서만 지원됩니다.
  • 현재 ODBC 드라이버는 집계 푸시다운을 지원하지 않으며 일부 분석 도구와 관련한 알려진 문제가 있습니다. 새 버전이 릴리스될 때까지 다음 대안 중 하나를 사용할 수 있습니다.
    • Azure Synapse Link는 Azure Cosmos DB에 대한 기본 분석 솔루션입니다. Azure Synapse Link 및 Azure Synapse SQL 서버리스 풀을 사용하면 모든 BI 도구를 사용하여 Azure Cosmos DB SQL 또는 API for MongoDB 데이터에서 근실시간 인사이트를 추출할 수 있습니다.
    • Power BI의 경우 Power BI용 Azure Cosmos DB 커넥터를 사용할 수 있습니다.
    • Qlik Sense는 Azure Cosmos DB용 Qlik Sense 연결을 참조하세요.

ODBC 드라이버를 설치하고 데이터베이스에 연결

  1. 다음 중에서 환경에 맞는 드라이버를 다운로드합니다.

    설치 관리자 지원되는 운영 체제
    Windows 64비트용 Microsoft Azure Cosmos DB ODBC 64-bit.msi 64비트 버전의 Windows 8.1 이상, Windows 8, Windows 7. 64비트 버전의 Windows Server 2012 R2, Windows Server 2012 및 Windows Server 2008 R2. Windows 10 Windows Server 2012 R2입니다. Windows Server 2016
    Windows 32비트 또는 64비트용 Microsoft Azure Cosmos DB ODBC 32x64-bit.msi 64비트 버전의 Windows 8.1 이상, Windows 8, Windows 7, Windows XP, Windows Vista 64비트 버전의 Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 및 Windows Server 2003.
    Windows 32비트용 Microsoft Azure Cosmos DB ODBC 32-bit.msi 32비트 버전의 Windows 8.1 이상, Windows 8, Windows 7, Windows XP 및 Windows Vista
  2. .msi 파일을 로컬로 실행합니다. 그러면 Microsoft Azure Cosmos DB ODBC 드라이버 설치 마법사가 시작됩니다.

  3. 기본 입력을 사용하여 설치 마법사를 완료합니다.

  4. 드라이버가 설치되면 Windows 검색 상자에 ODBC 데이터 원본을 입력하고 ODBC 데이터 원본 관리자를 엽니다.

  5. 드라이버 탭에 Microsoft Azure DocumentDB ODBC 드라이버가 나열되어 있는지 확인합니다.

    ODBC 데이터 원본 관리자 창의 스크린샷

  6. 사용자 DSN 탭을 선택한 다음, 추가를 선택하여 새 DSN(데이터 원본 이름)을 만듭니다. 시스템 DSN을 만들 수도 있습니다.

  7. 새 데이터 원본 만들기 창에서 Microsoft Azure DocumentDB ODBC 드라이버를 선택하고 마침을 선택합니다.

  8. DocumentDB ODBC 드라이버 DSN 설정 창에서 다음 정보를 입력합니다.

    DNS(도메인 이름 서버) 설정 창의 스크린샷.

    • 데이터 원본 이름: ODBC DSN의 식별 이름입니다. 이 이름은 이 Azure Cosmos DB 계정에 고유합니다.
    • 설명: 데이터 원본에 대한 짧은 설명입니다.
    • 호스트: Azure Cosmos DB 계정의 URI입니다. Azure Portal에서 Azure Portal Azure Cosmos DB 계정의 페이지에서 이 정보를 가져올 수 있습니다.
    • 액세스 키: Azure Portal의 Azure Cosmos DB 페이지에 있는 기본 또는 보조 읽기-쓰기/읽기 전용 키입니다. 읽기 전용 데이터 처리 및 보고에 DSN을 사용하는 경우 읽기 전용 키를 사용하는 것이 가장 좋습니다.

    인증 오류를 방지하려면 Azure Portal에서 복사 단추를 사용하여 URI 및 키를 복사합니다.

    Azure Cosmos DB 키 페이지의 스크린샷.

    • 액세스 키 암호화: 컴퓨터의 사용자에 따라 가장 적합한 옵션을 선택합니다.
  9. Azure Cosmos DB 계정에 연결할 수 있는지 확인하려면 테스트를 선택합니다.

  10. 고급 옵션을 선택하고 다음 값을 설정합니다.

    • REST API 버전: 작업에 대한 REST API 버전을 선택합니다. 기본값은 2015-12-16입니다.

      REST API 버전 2018-12-31이 필요한 큰 파티션 키가 있는 컨테이너를 사용하는 경우 2018-12-31을 입력한 다음, 이 절차의 끝에 있는 단계를 따릅니다.

    • 쿼리 일관성: 작업에 대해 일관성 수준을 선택합니다. 기본값은 세션입니다.

    • 재시도 횟수: 초기 요청이 서비스 속도 제한으로 인해 완료되지 않은 경우 작업을 다시 시도할 횟수를 입력합니다.

    • 스키마 파일: 스키마 파일을 선택하지 않으면 드라이버가 각 컨테이너에 대한 데이터의 첫 번째 페이지를 검색하여 각 세션의 해당 스키마(컨테이너 매핑이라고 함)를 확인합니다. 이 프로세스로 인해 DSN을 사용하는 애플리케이션의 시작 시간이 길어질 수 있습니다. 스키마 파일을 DSN에 연결하는 것이 가장 좋습니다.

      • 스키마 파일이 이미 있는 경우 찾아보기를 선택하고 파일로 이동하고 저장, 확인을 차례로 선택합니다.

      • 스키마 파일이 아직 없는 경우 확인을 선택한 후 다음 섹션의 단계에 따라 스키마 정의를 생성합니다. 스키마를 만든 후 이 고급 옵션 창으로 돌아와서 스키마 파일을 추가합니다.

확인을 선택하여 DocumentDB ODBC 드라이버 DSN 설정 창을 완료하고 닫으면 ODBC 데이터 원본 관리자 창의 사용자 DSN 탭에 새 사용자 DSN이 나타납니다.

사용자 DSN 탭의 새 사용자 DSN을 보여 주는 스크린샷.

REST API 버전 2018-12-31을 지원하도록 Windows 레지스트리 편집

REST API 버전 2018-12-31이 필요한 큰 파티션 키가 있는 컨테이너를 사용하는 경우 다음 단계에 따라 이 버전을 지원하도록 Windows 레지스트리를 업데이트합니다.

  1. Windows 시작 메뉴에서 regedit를 입력하고 레지스트리 편집기를 찾아 엽니다.

  2. 레지스트리 편집기에서 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 경로로 이동합니다.

  3. DSN과 이름이 같은 새 하위 키(예: Contoso Account ODBC DSN)를 만듭니다.

  4. Contoso 계정 ODBC DSN 하위 키로 이동하고 마우스 오른쪽 단추를 클릭하여 새 문자열 값을 추가합니다.

    • 값 이름: IgnoreSessionToken

    • 값 데이터: 1

    Windows 레지스트리 편집기 설정을 보여 주는 스크린샷.

스키마 정의 만들기

스키마를 만드는 데 사용할 수 있는 샘플링 방법에는 컨테이너 매핑 또는 테이블 구분 기호 매핑의 두 가지 유형이 있습니다. 샘플링 세션은 두 샘플링 메서드를 모두 사용할 수 있지만 각 컨테이너는 샘플링 메서드 중 하나만 사용할 수 있습니다. 사용할 방법은 데이터의 특성에 따라 달라집니다.

  • 컨테이너 매핑은 컨테이너 페이지의 데이터를 검색하여 데이터 구조를 확인하고 컨테이너를 ODBC 쪽의 테이블로 바꿉니다. 이 샘플링 메서드는 컨테이너의 데이터가 동일한 형식일 때 효율적이고 빠릅니다.

  • 테이블 구분 기호 매핑은 다른 유형의 데이터에 대해 보다 강력한 샘플링을 제공합니다. 이 메서드는 샘플링 범위를 특성 세트 및 해당 값으로 지정합니다.

    예를 들어 문서에 Type 속성이 포함된 경우 샘플링 범위를 이 속성의 값으로 지정할 수 있습니다. 샘플링의 최종 결과는 지정한 Type의 각 값에 대한 테이블 세트입니다. Type = CarCar 테이블을 생성하고, Type = PlanePlane 테이블을 생성합니다.

스키마를 정의하려면 다음 단계를 수행합니다. 테이블 구분 기호 매핑 방법의 경우 스키마에 대한 특성 및 값을 정의하는 추가 단계를 수행합니다.

  1. ODBC 데이터 원본 관리자 창의 사용자 DSN 탭에서 Azure Cosmos DB 사용자 DSN 이름을 선택한 다음, 구성을 선택합니다.

  2. DocumentDB ODBC 드라이버 DSN 설정 창에서 스키마 편집기를 선택합니다.

    DS N 설정 창의 스키마 편집기 단추를 보여 주는 스크린샷

  3. 스키마 편집기 창에서 새로 만들기를 선택합니다.

  4. 스키마 생성 창에 Azure Cosmos DB 계정의 모든 컬렉션이 표시됩니다. 샘플링하려는 컨테이너 옆에 있는 확인란을 선택합니다.

  5. 컨테이너 매핑 방법을 사용하려면 샘플을 선택합니다.

    또는 테이블 구분 기호 매핑을 사용하려면 다음 단계를 수행하여 샘플 범위 지정에 대한 특성 및 값을 정의합니다.

    1. DSN에 대한 매핑 정의 열에서 편집을 선택합니다.

    2. 매핑 정의 창의 매핑 방법에서 테이블 구분 기호를 선택합니다.

    3. 특성 상자에 문서에서 샘플링 범위를 지정할 구분 기호 속성의 이름을 입력합니다(예: City). Enter 키를 누릅니다.

    4. 입력한 특성에 대한 특정 값으로 샘플링 범위를 지정하려는 경우 해당 특성을 선택하고 상자에 값(예: Seattle)을 입력하고 Enter 키를 누릅니다. 특성에 대해 여러 값을 추가할 수 있습니다. 값을 입력할 때 올바른 속성이 선택되어 있는지 확인하기만 하면 됩니다.

    5. 특성 및 값 입력이 완료되면 확인을 선택합니다.

    6. 스키마 생성 창에서 샘플을 선택합니다.

  6. 디자인 뷰 탭에서 스키마를 구체화합니다. 디자인 뷰는 데이터베이스, 스키마 및 테이블을 나타냅니다. 테이블 뷰는 열 이름(예: SQL 이름원본 이름)과 관련된 속성 세트를 표시합니다.

    각 열의 SQL 이름, SQL 형식, SQL 길이, 소수 자릿수, 전체 자릿수null 허용을 수정할 수 있습니다.

    쿼리 결과에서 해당 열을 제외하려면 Hide Columntrue로 설정합니다. Hide Column = true로 표시된 열은 스키마의 일부이지만 선택 및 프로젝션의 경우에는 반환되지 않습니다. 예를 들어 _로 시작하는 모든 Azure Cosmos DB 시스템 필수 속성을 숨길 수 있습니다. id 열은 정규화된 스키마의 기본 키이므로 숨길 수 없는 유일한 필드입니다.

  7. 스키마 정의를 마친 후 파일>저장을 선택하고 스키마를 저장할 디렉터리로 이동하고 저장을 선택합니다.

  8. DSN에서 이 스키마를 사용하려면 DocumentDB ODBC 드라이버 DSN 설정 창에서 고급 옵션을 선택합니다. 스키마 파일 상자를 선택하고 저장된 스키마로 이동한 후 확인을 선택한 다음, 확인을 다시 선택합니다. 스키마 파일을 저장하면 스키마 정의 데이터 및 구조로 범위가 지정되도록 DSN 연결이 수정됩니다.

뷰 만들기

필요에 따라 샘플링 프로세스의 일부로 스키마 편집기에서 뷰를 정의하고 만들 수 있습니다. 이러한 뷰는 SQL 뷰와 비슷합니다. 뷰는 읽기 전용이며, 정의된 Azure Cosmos DB SQL 쿼리의 선택 및 프로젝션으로 범위가 지정됩니다.

데이터에 대한 뷰를 만들려면 다음 단계를 수행합니다.

  1. 스키마 편집기 창의 샘플 보기 탭에서 샘플링할 컨테이너를 선택한 다음, 보기 정의 열에서 추가를 선택합니다.

    드라이버 내에서 뷰를 만드는 스크린샷.

  2. 보기 정의 창에서 새로 만들기를 선택합니다. 뷰 이름(예: EmployeesfromSeattleView)을 입력한 후 확인을 선택합니다.

  3. 뷰 편집 창에서 Azure Cosmos DB 쿼리를 입력합니다. 예를 들면 다음과 같습니다.

    SELECT c.City, c.EmployeeName, c.Level, c.Age, c.Manager FROM c WHERE c.City = "Seattle"

  4. 확인을 선택합니다.

    보기를 만들 때 쿼리를 추가하는 스크린샷.

원하는 수만큼 뷰를 만들 수 있습니다. 뷰 정의가 완료되면 샘플을 선택하여 데이터를 샘플링합니다.

Important

보기 정의의 쿼리 텍스트에는 줄 바꿈이 포함되어서는 안 됩니다. 그렇지 않으면 보기를 미리 볼 때 일반 오류가 발생합니다.

SQL Server Management Studio로 쿼리

Azure Cosmos DB ODBC 드라이버 사용자 DSN을 설정하면 연결된 서버 연결을 설정하여 SSMS(SQL Server Management Studio)에서 Azure Cosmos DB를 쿼리할 수 있습니다.

  1. SQL Server Management Studio를 설치하고 서버에 연결합니다.

  2. SSMS 쿼리 편집기에서 다음 명령을 사용하여 데이터 원본에 대한 연결된 서버 개체를 만듭니다. DEMOCOSMOS는 연결된 서버의 이름으로, SDS Name은 데이터 원본 이름으로 바꿉니다.

    USE [master]
    GO
    
    EXEC master.dbo.sp_addlinkedserver @server = N'DEMOCOSMOS', @srvproduct=N'', @provider=N'MSDASQL', @datasrc=N'SDS Name'
    
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'DEMOCOSMOS', @useself=N'False', @locallogin=NULL, @rmtuser=NULL, @rmtpassword=NULL
    
    GO
    

새 연결된 서버 이름을 보려면 연결된 서버 목록을 새로 고칩니다.

S S M S에 연결된 서버를 보여 주는 스크린샷.

연결된 데이터베이스를 쿼리하려면 SSMS 쿼리를 입력합니다. 이 예제에서 쿼리는 customers라는 컨테이너의 테이블에서 선택합니다.

SELECT * FROM OPENQUERY(DEMOCOSMOS, 'SELECT *  FROM [customers].[customers]')

쿼리를 실행합니다. 결과는 다음 출력과 비슷합니다.

attachments/  1507476156    521 Bassett Avenue, Wikieup, Missouri, 5422   "2602bc56-0000-0000-0000-59da42bc0000"   2015-02-06T05:32:32 +05:00 f1ca3044f17149f3bc61f7b9c78a26df
attachments/  1507476156    167 Nassau Street, Tuskahoma, Illinois, 5998   "2602bd56-0000-0000-0000-59da42bc0000"   2015-06-16T08:54:17 +04:00 f75f949ea8de466a9ef2bdb7ce065ac8
attachments/  1507476156    885 Strong Place, Cassel, Montana, 2069       "2602be56-0000-0000-0000-59da42bc0000"   2015-03-20T07:21:47 +04:00 ef0365fb40c04bb6a3ffc4bc77c905fd
attachments/  1507476156    515 Barwell Terrace, Defiance, Tennessee, 6439     "2602c056-0000-0000-0000-59da42bc0000"   2014-10-16T06:49:04 +04:00      e913fe543490432f871bc42019663518
attachments/  1507476156    570 Ruby Street, Spokane, Idaho, 9025       "2602c156-0000-0000-0000-59da42bc0000"   2014-10-30T05:49:33 +04:00 e53072057d314bc9b36c89a8350048f3

Power BI Desktop에서 데이터 보기

원하는 ODBC 규격 도구에서 DSN을 사용하여 Azure Cosmos DB에 연결할 수 있습니다. 이 절차에서는 Power BI Desktop에 연결하여 Power BI 시각화를 만드는 방법을 보여줍니다.

  1. Power BI Desktop에서 데이터 가져오기를 선택합니다.

    Power B I Desktop에서 데이터 가져오기를 보여 주는 스크린샷

  2. 데이터 가져오기 창에서 기타>ODBC를 선택한 다음, 연결을 선택합니다.

    Power BI 데이터 가져오기에서 ODBC 데이터 원본 선택을 보여 주는 스크린샷

  3. ODBC에서 창에서 만든 DSN을 선택한 후 확인을 선택합니다.

    Power B I 데이터 가져오기에서 D S N을 선택하는 방법을 보여 주는 스크린샷.

  4. ODBC 드라이버를 사용하여 데이터 원본에 액세스합니다. 창에서 기본 또는 사용자 지정을 클릭하고 연결을 선택합니다.

  5. 탐색 창의 왼쪽 분할 창에서 데이터베이스, 스키마를 펼치고 테이블을 선택합니다. 결과 분할 창에는 사용자가 만든 스키마를 사용하는 데이터가 포함됩니다.

    Power B I 데이터 가져오기에서 테이블 선택 스크린샷.

  6. Power BI 데스크톱에서 데이터를 시각화하려면 테이블 이름 옆에 있는 확인란을 선택한 다음, 로드를 선택합니다.

  7. Power BI Desktop에서 화면 왼쪽의 데이터 탭을 선택하여 데이터를 가져온 것을 확인합니다.

  8. 화면 왼쪽의 보고서 탭을 선택하고 리본에서 새 시각적 개체를 선택한 다음, 시각적 개체를 사용자 지정합니다.

문제 해결

  • 문제: 연결을 시도할 때 다음 오류가 발생합니다.

    [HY000]: [Microsoft][Azure Cosmos DB] (401) HTTP 401 Authentication Error: {"code":"Unauthorized","message":"The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'get\ndbs\n\nfri, 20 jan 2017 03:43:55 gmt\n\n'\r\nActivityId: 9acb3c0d-cb31-4b78-ac0a-413c8d33e373"}
    

    해결 방법: Azure Portal에서 복사한 호스트액세스 키 값이 올바른지 확인하고 다시 시도합니다.

  • 문제: 연결된 Azure Cosmos DB 서버를 만들려고 할 때 SSMS에서 다음 오류가 발생합니다.

    Msg 7312, Level 16, State 1, Line 44
    
    Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server "DEMOCOSMOS". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.
    

    해결 방법: 연결된 Azure Cosmos DB 서버는 네 부분으로 구성된 명명을 지원하지 않습니다.

다음 단계