적용 대상:Azure SQL Database
이 자습서에서는 단일 테넌트 구현에 대한 전체 분석 시나리오를 안내합니다. 이 시나리오에서는 분석으로 기업이 현명한 결정을 내릴 수 있는 방법을 보여 줍니다. 각 테넌트 데이터베이스에서 추출된 데이터를 분석을 통해 샘플 Wingtip Tickets SaaS 애플리케이션 사용을 포함한 테넌트 동작에 대한 인사이트를 얻습니다. 이 시나리오에는 다음 세 단계가 포함됩니다.
- 각 테넌트 데이터베이스에서 데이터를 추출하고 분석 저장소로 로드합니다.
- 분석 처리를 위해 추출된 데이터를 변환합니다.
- 비즈니스 인텔리전스 도구를 사용하여 의사 결정을 안내할 수 있는 유용한 인사이트를 도출합니다.
이 자습서에서는 다음 방법을 알아봅니다.
- 테넌트 분석 저장소를 만들어 데이터를 추출합니다.
- 탄력적 작업을 사용하여 각 테넌트 데이터베이스에서 분석 저장소로 데이터를 추출합니다.
- 추출된 데이터를 최적화합니다(별모양 스키마로 다시 구성).
- 분석 데이터베이스를 쿼리합니다.
- 데이터 시각화에 Power BI를 사용하여 테넌트 데이터의 추세를 강조 표시하고 개선 사항을 권장합니다.
오프라인 테넌트 분석 패턴
다중 테넌트 SaaS 애플리케이션은 일반적으로 클라우드에 대량의 테넌트 데이터를 저장합니다. 이 데이터는 애플리케이션의 작업 및 사용 및 테넌트 동작에 대한 풍부한 인사이트를 제공합니다. 이러한 인사이트는 기능 개발, 유용성 개선 및 앱 및 플랫폼에 대한 기타 투자를 안내할 수 있습니다.
모든 데이터가 하나의 다중 테넌트 데이터베이스에 있는 경우 모든 테넌트에 대한 데이터에 액세스하는 것은 간단합니다. 그러나 잠재적으로 수천 개의 데이터베이스에 대규모로 분산될 경우 액세스가 더 복잡합니다. 복잡성을 길들이고 트랜잭션 데이터에 대한 분석 쿼리의 영향을 최소화하는 한 가지 방법은 용도로 설계된 분석 데이터베이스 또는 데이터 웨어하우스로 데이터를 추출하는 것입니다.
이 자습서에서는 Wingtip Tickets SaaS 애플리케이션에 대한 전체 분석 시나리오를 제공합니다. 먼저 Elastic Jobs 를 사용하여 각 테넌트 데이터베이스에서 데이터를 추출하고 분석 저장소의 준비 테이블에 로드합니다. 분석 저장소는 SQL Database 또는 전용 SQL 풀일 수 있습니다. 대규모 데이터 추출의 경우 Azure Data Factory 를 사용하는 것이 좋습니다.
다음으로 집계된 데이터는 스타 스키마 테이블 집합으로 변환됩니다. 테이블은 중앙 팩트 테이블과 관련 차원 테이블로 구성됩니다. Wingtip 티켓의 경우:
- 스타 스키마의 중앙 팩트 테이블에는 티켓 데이터가 포함됩니다.
- 차원 테이블은 장소, 이벤트, 고객 및 구매 날짜를 설명합니다.
중앙 팩트 및 차원 테이블을 함께 사용하면 효율적인 분석 처리를 수행할 수 있습니다. 이 자습서에 사용된 별표 스키마는 다음 이미지에 나와 있습니다.
마지막으로, 분석 저장소는 Power BI 를 사용하여 테넌트 동작 및 Wingtip Tickets 애플리케이션 사용에 대한 인사이트를 강조 표시하기 위해 쿼리됩니다. 다음 쿼리를 실행합니다.
- 각 장소의 상대적 인기도 표시
- 다양한 이벤트의 티켓 판매 패턴 강조 표시
- 이벤트가 매진되는 데 있어 다양한 장소의 상대적 성공을 보여줍니다.
각 테넌트가 서비스를 사용하는 방법을 이해하면 서비스 수익을 창출하고 서비스를 개선하여 테넌트 성공에 도움이 되는 옵션을 탐색합니다. 이 자습서에서는 테넌트 데이터에서 수집할 수 있는 인사이트 종류의 기본 예제를 제공합니다.
설치
필수 조건
이 자습서를 완료하려면 다음 필수 구성 요소가 충족되는지 확인합니다.
- Wingtip Tickets SaaS 테넌트별 데이터베이스 애플리케이션이 배포됩니다. 5분 이내에 배포하려면 Wingtip SaaS 애플리케이션 배포 및 탐색을 참조하세요.
- Wingtip Tickets SaaS Database Per Tenant 스크립트 및 애플리케이션 소스 코드 는 GitHub에서 다운로드됩니다. 다운로드 지침을 참조하세요. 콘텐츠를 추출하기 전에 zip 파일의 차단을 해제 해야 합니다. Wingtip Tickets SaaS 스크립트를 다운로드하고 차단을 해제하는 단계에 대한 일반적인 지침을 확인하세요.
- Power BI Desktop이 설치됩니다. 다운로드 Power BI Desktop
- 추가 테넌트가 프로비저닝되었습니다. 테넌트 프로비저닝 자습서를 참조하세요.
- 작업 계정 및 작업 계정 데이터베이스가 만들어졌습니다. 스키마 관리 자습서의 적절한 단계를 참조하세요.
데모에 대한 데이터 만들기
이 자습서에서는 티켓 판매 데이터에 대한 분석을 수행합니다. 현재 단계에서는 모든 테넌트에 대한 티켓 데이터를 생성합니다. 나중에 이 데이터는 분석을 위해 추출됩니다. 의미 있는 양의 데이터를 갖도록 앞에서 설명한 대로 테넌트 일괄 처리를 프로비전했는지 확인합니다. 충분히 많은 양의 데이터가 다양한 티켓 구매 패턴을 노출할 수 있습니다.
- PowerShell ISE에서 ...\Learning Modules\Operational Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1열고 다음 값을 설정합니다.
- = $DemoScenario1 모든 장소에서 이벤트 티켓 구매
- F5 키를 눌러 스크립트를 실행하고 각 행사장의 모든 이벤트에 대한 티켓 구매 기록을 만듭니다. 스크립트는 수만 개의 티켓을 생성하기 위해 몇 분 동안 실행됩니다.
분석 저장소 배포
종종 모든 테넌트 데이터를 함께 보유하는 수많은 트랜잭션 데이터베이스가 있습니다. 여러 트랜잭션 데이터베이스의 테넌트 데이터를 하나의 분석 저장소로 집계해야 합니다. 집계를 사용하면 데이터를 효율적으로 쿼리할 수 있습니다. 이 자습서에서는 집계된 데이터를 저장하는 데 Azure SQL Database를 사용합니다.
다음 단계에서는 tenantanalytics라고 하는 분석 저장소를 배포합니다. 또한 자습서 후반부에 채워질 미리 정의된 테이블을 배포합니다.
- PowerShell ISE에서 ...\Learning Modules\Operational Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1 엽니다.
- 선택한 분석 저장소와 일치하도록 스크립트의 $DemoScenario 변수를 설정합니다.
- columnstore 없이 SQL Database를 사용하려면 $DemoScenario = 2로 설정합니다.
- columnstore에서 SQL Database를 사용하려면 $DemoScenario = 3으로 설정합니다.
- F5 키를 눌러 테넌트 분석 저장소를 만드는 데모 스크립트(Deploy-TenantAnalytics<XX>.ps1 스크립트를 호출)를 실행합니다.
이제 애플리케이션을 배포하고 흥미로운 테넌트 데이터로 채웠으므로 SSMS(SQL Server Management Studio)를 사용하여 login = <, Password = > 사용하여 > 및 catalog-dpt-User 서버를 연결합니다. 자세한 지침은 소개 자습서 를 참조하세요.
개체 탐색기에서 다음 단계를 수행합니다.
- tenants1-dpt-<User> 서버를 확장합니다.
- 데이터베이스 노드를 확장하고 테넌트 데이터베이스 목록을 확인합니다.
- catalog-dpt-<User> 서버를 확장하세요.
- 분석 저장소 및 jobaccount 데이터베이스가 표시되는지 확인합니다.
분석 저장소 노드를 확장하여 SSMS 개체 탐색기에서 다음 데이터베이스 항목을 참조하세요.
- Tables TicketsRawData 및 EventsRawData는 테넌트 데이터베이스에서 추출된 원시 데이터를 저장합니다.
- 별표 스키마 테이블은 fact_Tickets, dim_Customers, dim_Venues, dim_Events 및 dim_Dates.
- 저장 프로시저는 원시 데이터 테이블에서 스타 스키마 테이블을 채우는 데 사용됩니다.
데이터 추출
대상 그룹 만들기
계속하기 전에 작업 계정 및 jobaccount 데이터베이스를 배포했는지 확인합니다. 다음 단계 집합에서는 Elastic Jobs를 사용하여 각 테넌트 데이터베이스에서 데이터를 추출하고 분석 저장소에 데이터를 저장합니다. 그런 다음 두 번째 작업은 데이터를 파쇄하고 스타 스키마의 테이블에 저장합니다. 이 두 작업은 TenantGroup 과 AnalyticsGroup이라는 두 개의 서로 다른 대상 그룹에 대해 실행됩니다. 추출 작업은 모든 테넌트 데이터베이스를 포함하는 TenantGroup에 대해 실행됩니다. 조각화 작업은 분석 저장소만 포함하는 AnalyticsGroup을 대상으로 실행됩니다. 다음 단계를 사용하여 대상 그룹을 만듭니다.
- SSMS에서 catalog-dpt-User<의 > 데이터베이스에 연결합니다.
- SSMS에서 ...\Learning Modules\Operational Analytics\Tenant Analytics\ TargetGroups.sql 엽니다.
- 스크립트 맨 위에 있는 @User 변수를 수정하여 Wingtip SaaS 앱을 배포할 때 사용한 사용자 값으로
<User>
을 대체합니다. - F5 키를 눌러 두 대상 그룹을 만드는 스크립트를 실행합니다.
모든 테넌트에서 원시 데이터 추출
이벤트 및 장소 데이터보다 티켓 및 고객 데이터에 대해 광범위한 데이터 수정이 더 자주 발생할 수 있습니다. 따라서 이벤트 및 장소 데이터를 추출하는 것보다 티켓과 고객 데이터를 개별적으로 그리고 더 자주 추출하는 것이 좋습니다. 이 섹션에서는 두 개의 별도 작업을 정의하고 예약합니다.
- 티켓 및 고객 데이터를 추출합니다.
- 이벤트 및 장소 데이터를 추출합니다.
각 작업은 데이터를 추출하고 분석 저장소에 게시합니다. 추출된 데이터를 분석 스타 스키마로 분할하는 별도의 작업이 있습니다.
- SSMS에서 catalog-dpt-User< 서버의 > 데이터베이스에 연결합니다.
- SSMS에서 ...\Learning Modules\Operational Analytics\Tenant Analytics\ExtractTickets.sql 엽니다.
- 스크립트 맨 위에서 @User을(를) 수정한 후, Wingtip SaaS 앱을 배포할 때 사용한 사용자 이름으로
<User>
을(를) 바꿉니다. - F5 키를 눌러 각 테넌트 데이터베이스에서 티켓 및 고객 데이터를 추출하는 작업을 만들고 실행하는 스크립트를 실행합니다. 작업은 분석 저장소에 데이터를 저장합니다.
- Tenantanalytics 데이터베이스에서 TicketsRawData 테이블을 쿼리하여 테이블이 모든 테넌트에서 티켓 정보로 채워지도록 합니다.
이전 단계를 반복하되, 이번에는 2단계에서 \ExtractTickets.sql을 \ExtractVenuesEvents.sql로 바꿉니다.
작업을 성공적으로 실행하면 분석 저장소의 EventsRawData 테이블이 모든 테넌트에서 새 이벤트 및 장소 정보로 채워집니다.
데이터 재구성
추출된 데이터를 조각화하여 스타 스키마 테이블을 채웁니다.
다음 단계는 추출된 원시 데이터를 분석 쿼리에 최적화된 테이블 집합으로 분할하는 것입니다. 별표 스키마가 사용됩니다. 중앙 팩트 테이블에는 개별 티켓 판매 레코드가 있습니다. 다른 테이블은 장소, 이벤트 및 고객에 대한 관련 데이터로 채워집니다. 그리고 시간 차원 테이블이 있습니다.
자습서의 이 섹션에서는 추출된 원시 데이터를 스타 스키마 테이블의 데이터와 병합하는 작업을 정의하고 실행합니다. 병합 작업이 완료되면 원시 데이터가 삭제되고 다음 테넌트 데이터 추출 작업으로 테이블을 채울 준비가 된 상태로 둡니다.
- SSMS에서 catalog-dpt-User<의 > 데이터베이스에 연결합니다.
- SSMS에서 ...\Learning Modules\Operational Analytics\Tenant Analytics\ShredRawExtractedData.sql 엽니다.
- F5 키를 눌러 스크립트를 실행하여 분석 저장소에서 sp_ShredRawExtractedData 저장 프로시저를 호출하는 작업을 정의합니다.
- 작업이 성공적으로 실행되도록 충분한 시간을 허용합니다.
- jobs.jobs_execution 테이블의 수명 주기 열에서 작업 상태를 확인합니다. 계속하기 전에 작업이 성공했는지 확인합니다. 실행이 성공하면 다음 차트와 유사한 데이터가 표시됩니다.
데이터 살펴보기
테넌트 데이터 시각화
스타 스키마 테이블의 데이터는 분석에 필요한 모든 티켓 판매 데이터를 제공합니다. 큰 데이터 집합의 추세를 더 쉽게 볼 수 있도록 그래픽으로 시각화해야 합니다. 이 섹션에서는 Power BI 를 사용하여 추출하고 구성한 테넌트 데이터를 조작하고 시각화하는 방법을 알아봅니다.
다음 단계를 사용하여 Power BI에 연결하고 이전에 만든 보기를 가져옵니다.
Power BI 데스크톱을 시작합니다.
홈 리본에서 데이터 가져오기를 선택하고 메뉴에서 자세히... 를 선택합니다.
데이터 가져오기 창에서 Azure SQL Database를 선택합니다.
데이터베이스 로그인 창에서 서버 이름(catalog-dpt-User.database.windows.net<>)을 입력합니다. 데이터 연결 모드에 대한 가져오기를 선택한 다음 확인을 클릭합니다.
왼쪽 창에서 데이터베이스 를 선택한 다음, 사용자 이름 = 개발자를 입력하고 암호 = P@ssword1 입력합니다. 연결을 클릭합니다.
탐색기 창의 분석 데이터베이스에서 별모양 스키마 테이블(fact_Tickets, dim_Events, dim_Venues, dim_Customers 및 dim_Dates)을 선택합니다. 그런 다음 로드를 선택합니다.
축하합니다! Power BI에 데이터를 성공적으로 로드했습니다. 이제 테넌트에 대한 인사이트를 얻는 데 도움이 되는 흥미로운 시각화 탐색을 시작할 수 있습니다. 다음으로 분석을 통해 Wingtip Tickets 비즈니스 팀에 데이터 기반 권장 사항을 제공할 수 있는 방법을 안내합니다. 권장 사항은 비즈니스 모델 및 고객 환경을 최적화하는 데 도움이 될 수 있습니다.
먼저 티켓 판매 데이터를 분석하여 행사장 전체의 사용량 변화를 확인합니다. Power BI에서 다음 옵션을 선택하여 각 장소에서 판매된 총 티켓 수의 가로 막대형 차트를 표시합니다. 티켓 생성기의 임의 변형으로 인해 결과가 다를 수 있습니다.
위의 플롯은 각 장소에서 판매되는 티켓의 수가 다르다는 것을 확인합니다. 더 많은 티켓을 판매하는 장소는 더 적은 티켓을 판매하는 장소보다 서비스를 더 많이 사용하고 있습니다. 다양한 테넌트 요구에 따라 리소스 할당을 조정할 수 있는 기회가 있을 수 있습니다.
데이터를 추가로 분석하여 티켓 판매가 시간에 따라 어떻게 달라지는지 확인할 수 있습니다. Power BI에서 다음 옵션을 선택하여 60일 동안 매일 판매된 총 티켓 수를 표시합니다.
앞의 차트에는 일부 장소의 티켓 판매 급증이 표시됩니다. 이러한 급증은 일부 장소가 시스템 리소스를 불균형적으로 소비할 수 있다는 생각을 강화합니다. 지금까지 급증이 발생할 때 명백한 패턴은 없습니다.
다음으로 이러한 피크 판매 일의 중요성을 추가로 조사하려고 합니다. 티켓이 판매된 후 이러한 피크는 언제 발생합니까? 하루에 판매된 티켓을 그리려면 Power BI에서 다음 옵션을 선택합니다.
이전 플롯은 일부 장소가 판매 첫날에 많은 티켓을 판매한다는 것을 보여줍니다. 티켓이 이 장소에서 판매되자마자 미친 듯이 서두르는 것 같습니다. 일부 장소에서 이러한 활동이 급증하면 다른 테넌트의 서비스에 영향을 미칠 수 있습니다.
데이터를 자세히 분석하여 이러한 장소에서 개최되는 모든 이벤트에 대해 이 급격한 증가 현상이 사실인지 확인할 수 있습니다. 이전 그림에서 Contoso Concert Hall은 많은 티켓을 판매하고 있으며 Contoso는 특정 날짜에 티켓 판매가 급증한다는 것을 확인했습니다. Contoso Concert Hall의 누적 티켓 판매를 계획하는 Power BI 옵션을 사용하여 각 이벤트의 판매 추세에 초점을 맞춥니다. 모든 이벤트가 동일한 판매 패턴을 따르나요?
Contoso 콘서트 홀에 대한 이전 그래프는 모든 행사에서 혼잡한 상황이 발생하지 않는다는 것을 보여줍니다. 필터 옵션을 사용하여 다른 장소의 판매 추세를 확인하세요.
티켓 판매 패턴에 대한 인사이트를 통해 Wingtip Tickets는 비즈니스 모델을 최적화할 수 있습니다. 모든 테넌트를 동일하게 청구하는 대신 Wingtip은 컴퓨팅 크기가 다른 서비스 계층을 도입해야 할 수 있습니다. 하루에 더 많은 티켓을 판매해야 하는 대규모 장소는 더 높은 SLA(서비스 수준 계약)를 통해 더 높은 계층을 제공받을 수 있습니다. 이러한 장소는 데이터베이스당 리소스 제한이 더 높은 풀에 데이터베이스를 배치할 수 있습니다. 각 서비스 계층에는 시간별 판매 할당이 있을 수 있으며 할당을 초과하는 추가 요금이 부과됩니다. 정기적으로 판매가 급증한 대규모 장소는 더 높은 계층의 혜택을 누릴 수 있으며 Wingtip Tickets는 서비스를 보다 효율적으로 수익을 창출할 수 있습니다.
한편, 일부 Wingtip Tickets 고객은 서비스 비용을 정당화하기에 충분한 티켓을 판매하는 데 어려움을 겪고 있다고 불평합니다. 아마도 이러한 인사이트에서 실적이 저조한 장소의 티켓 판매를 높일 수 있는 기회가 있을 것입니다. 판매량이 높을수록 서비스의 인식된 가치가 높아질 것입니다. fact_Tickets 마우스 오른쪽 단추로 클릭하고 새 측정값을 선택합니다. AverageTicketsSold라는 새 측정값에 대해 다음 식을 입력합니다.
AverageTicketsSold = AVERAGEX( SUMMARIZE( TableName, TableName[Venue Name] ), CALCULATE( SUM(TableName[Tickets Sold] ) ) )
다음 시각화 옵션을 선택하여 각 장소에서 판매된 백분율 티켓을 그려 상대적 성공을 결정합니다.
이전 플롯은 대부분의 장소가 티켓의 80% 이상을 판매하지만 일부는 좌석의 절반 이상을 채우기 위해 고군분투하고 있음을 보여줍니다. 값 웰을 사용하여 각 장소에 대해 판매된 티켓의 최대 또는 최소 비율을 선택합니다.
이전에 티켓 판매가 예측 가능한 패턴을 따르는 경향이 있음을 발견하기 위해 분석을 심화시켰습니다. Wingtip Tickets는 이 발견을 통해 실적이 저조한 장소에게 동적 가격 책정을 추천함으로써 티켓 판매를 높일 수 있습니다. 이 검색은 기계 학습 기술을 사용하여 각 이벤트에 대한 티켓 판매를 예측할 수 있는 기회를 드러낼 수 있습니다. 티켓 판매에 대한 할인을 제공하는 수익에 미치는 영향에 대한 예측을 할 수도 있습니다. Power BI Embedded를 이벤트 관리 애플리케이션에 통합할 수 있습니다. 통합은 예측된 판매액과 다양한 할인의 영향을 시각화하는 데 도움이 될 수 있습니다. 이 애플리케이션은 분석 디스플레이에서 직접 적용할 최적의 할인을 고안하는 데 도움이 될 수 있습니다.
WingTip 애플리케이션에서 테넌트 데이터의 추세를 관찰했습니다. 앱이 SaaS 애플리케이션 공급업체의 비즈니스 의사 결정을 알리는 다른 방법을 고려할 수 있습니다. 공급업체는 테넌트 요구에 더 잘 부합할 수 있습니다. 이 자습서를 통해 테넌트 데이터에 대한 분석을 수행하는 데 필요한 도구를 갖추어 비즈니스에서 데이터 기반 의사 결정을 내릴 수 있기를 바랍니다.
다음 단계
이 자습서에서는 다음 방법을 알아보았습니다.
- 미리 정의된 스타 스키마 테이블을 사용하여 테넌트 분석 데이터베이스 배포
- 탄력적 작업을 사용하여 모든 테넌트 데이터베이스에서 데이터 추출
- 추출된 데이터를 분석을 위해 설계된 별표 스키마의 테이블에 병합
- 분석 데이터베이스 쿼리
- 데이터 시각화에 Power BI를 사용하여 테넌트 데이터의 추세 관찰
축하합니다!