Share via


Power BI 및 서버리스 Synapse SQL 풀을 사용하여 Synapse Link를 통해 Azure Cosmos DB 데이터 분석

적용 대상: NoSQL MongoDB Gremlin

이 문서에서는 Azure Cosmos DB의 Synapse Link를 통해 서버리스 SQL 풀 데이터베이스와 보기를 빌드하는 방법에 대해 알아봅니다. Azure Cosmos DB 컨테이너를 쿼리한 다음 해당 쿼리를 반영하기 위해 관련 보기를 통해 Power BI를 사용하여 모델을 작성합니다.

Azure Synapse Link를 사용하여 Azure Cosmos DB 데이터를 분석하기 위해 거의 실시간으로 Power BI 대시보드를 빌드할 수 있습니다. 트랜잭션 워크로드에 대한 성능 또는 비용 영향은 없으며 ETL 파이프라인 관리의 복잡성도 없습니다. DirectQuery 또는 import 모드를 사용할 수 있습니다.

참고 항목

Azure Cosmos DB 포털을 사용하여 클릭 몇 번으로 Power BI 대시보드를 빌드할 수 있습니다. 자세한 내용은 Synapse Link 지원 계정에 대한 Azure Cosmos DB 포털의 통합 Power BI 환경을 참조하세요. 그러면 Azure Cosmos DB 컨테이너의 Synapse 서버리스 SQL 풀에 T-SQL 보기가 자동으로 만들어집니다. 이러한 T-SQL 보기에 연결하는 .pbids 파일을 다운로드하기만 하면 BI 대시보드 빌드를 시작할 수 있습니다.

이 시나리오에서는 파트너 소매점의 Surface 제품 판매에 대한 더미 데이터를 사용합니다. 대규모 가구 수에 대한 근접성 및 특정 주의 광고 영향을 기준으로 매장 당 수익을 분석합니다. 이 문서에서는 RetailSalesStoreDemographics라는 두 개의 보기와 그 둘 사이의 쿼리를 만듭니다. 이 GitHub 리포지토리에서 샘플 제품 데이터를 가져올 수 있습니다.

참고 항목

Gremlin API용 Synapse Link가 현재 미리 보기로 제공됩니다. Azure CLI를 사용하여 새 그래프 또는 기존 그래프에서 Synapse Link를 사용하도록 설정할 수 있습니다. 구성하는 방법에 대한 자세한 내용은 여기를 클릭하세요.

필수 조건

시작하기 전에 다음 리소스를 만들어야 합니다.

데이터베이스 및 보기 만들기

Synapse 작업 영역에서 개발 탭으로 이동하여 + 아이콘을 선택하고 SQL 스크립트를 선택합니다.

Add a SQL script to the Synapse Analytics workspace

모든 작업 영역이 서버리스 SQL 엔드포인트와 함께 제공됩니다. SQL 스크립트를 만든 후에는 맨 위의 도구 모음에서 기본 제공에 연결합니다.

Enable the SQL script to use the serverless SQL endpoint in the workspace

Master 또는 기본 데이터베이스에 보기를 만드는 것은 권장되거나 지원되지 않습니다. RetailCosmosDB라는 새 데이터베이스와 Synapse 링크를 지원하는 컨테이너에 대한 SQL 보기를 만듭니다. 다음 명령에서는 데이터베이스를 만드는 방법을 보여줍니다.

-- Create database
Create database RetailCosmosDB

다음으로 다른 Synapse Link 지원 Azure Cosmos DB 컨테이너에서 여러 보기를 만듭니다. 보기를 사용하면 T-SQL을 사용하여 서로 다른 컨테이너에 있는 Azure Cosmos DB 데이터를 조인하고 쿼리할 수 있습니다. 보기를 만들 때 RetailCosmosDB 데이터베이스를 선택해야 합니다.

다음 스크립트는 각 컨테이너에 대한 보기를 만드는 방법을 보여줍니다. 편의상 Synapse Link 지원 컨테이너를 통한 서버리스 SQL 풀의 자동 스키마 유추 기능을 사용하겠습니다.

RetailSales 보기:

-- Create view for RetailSales container
CREATE VIEW  RetailSales
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>',RetailSales)
AS q1

이전 SQL 스크립트에 Azure Cosmos DB 지역 및 기본 키를 삽입해야 합니다. 지역 이름에 있는 모든 문자는 공백 없이 소문자여야 합니다. OPENROWSET 명령의 다른 매개 변수와 달리 컨테이너 이름 매개 변수는 따옴표로 묶지 않고 지정해야 합니다.

StoreDemographics 보기:

-- Create view for StoreDemographics container
CREATE VIEW StoreDemographics
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>', StoreDemographics)
AS q1

이제 실행 명령을 선택하여 SQL 스크립트를 실행합니다.

보기 쿼리

이제 두 개의 보기를 만들었으므로 다음과 같이 두 보기를 조인하는 쿼리를 정의하겠습니다.

SELECT 
sum(p.[revenue]) as revenue
,p.[advertising]
,p.[storeId]
,p.[weekStarting]
,q.[largeHH]
 FROM [dbo].[RetailSales] as p
INNER JOIN [dbo].[StoreDemographics] as q ON q.[storeId] = p.[storeId]
GROUP BY p.[advertising], p.[storeId], p.[weekStarting], q.[largeHH]

다음 테이블을 결과로 제공하는 실행을 선택합니다.

Query results after joining the StoreDemographics and RetailSales views

Power BI가 지원되는 컨테이너에 대한 모델 보기

그리고 다음 단계를 사용하여 Power BI Desktop을 열고 서버리스 SQL 엔드포인트에 연결합니다.

  1. Power BI Desktop 애플리케이션을 엽니다. 데이터 가져오기 를 선택하고 자세히를 선택합니다.

  2. 연결 옵션 목록에서 Azure Synapse Analytics(SQL DW)를 선택합니다.

  3. 데이터베이스가 있는 SQL 엔드포인트의 이름을 입력합니다. 서버 필드 내에 SynapseLinkBI-ondemand.sql.azuresynapse.net을 입력합니다. 이 예제에서 SynapseLinkBI는 작업 영역의 이름입니다. 작업 영역에 다른 이름을 지정한 경우 이를 대체합니다. 데이터 연결 모드에 직접 쿼리를 선택하고 확인을 선택합니다.

  4. Microsoft Entra ID와 같은 기본 인증 방법을 선택합니다.

  5. RetailCosmosDB 데이터베이스와 RetailSales, StoreDemographics 보기를 선택합니다.

  6. 로드를 선택하여 두 보기를 직접 쿼리 모드로 로드합니다.

  7. 모델을 선택하여 storeId 열을 통해 두 보기 간의 관계를 만듭니다.

  8. RetailSales 보기에서 StoreId 열을 StoreDemographics 보기의 StoreId 열로 끌어다 놓습니다.

  9. RetailSales 보기에 동일한 저장소 ID를 사용하는 행이 여러 개 있으므로 다대일(*: 1) 관계를 선택합니다. StoreDemographics에는 하나의 저장소 ID 행만 있습니다(차원 테이블).

이제 보고서 창으로 이동하여 수익과 LargeHH 인덱스의 분산된 표시를 기준으로 매장별 평균 수익 대비 상대적 가구 규모 중요도를 비교하는 보고서를 만듭니다.

  1. 분산형 차트를 선택합니다.

  2. LargeHHStoreDemographics 보기에서 X-축으로 끌어 놓습니다.

  3. RetailSales 보기에서 Y-축으로 수익을 끌어서 놓습니다. 평균을 선택하여 매장당 및 주당 평균 판매량을 가져옵니다.

  4. RetailSales 보기의 productCode를 범례에 끌어서 놓고 특정 제품 라인을 선택합니다. 해당 옵션을 선택하면 다음 스크린샷처럼 그래프가 표시됩니다.

Report that compares the relative importance of household size to the average revenue per store

다음 단계

Synapse Link 사용 계정에 대한 Azure Cosmos DB 포털의 통합 Power BI 환경

T-SQL을 사용하여 Azure Synapse Link를 통해 Azure Cosmos DB 데이터 쿼리

서버리스 SQL 풀을 사용하여 Azure Open Datasets를 분석하고 그 결과를 Azure Synapse Studio에서 시각화