olapR(SQL Server Machine Learning Services의 R 패키지)

적용 대상: SQL Server 2016(13.x) 이상

olapR은 SQL Server Analysis Services OLAP 큐브에 대한 MDX 쿼리에 사용되는 Microsoft의 R 패키지입니다. 함수는 일부 MDX 작업을 지원하지 않지만 차원에서 조각화, 분석, 드릴다운, 롤업 및 피벗을 수행하는 쿼리를 작성할 수 있습니다. 이 패키지는 SQL Server Machine Learning ServicesSQL Server 2016 R Services에 포함되어 있습니다.

지원되는 모든 SQL Server 버전에서 Analysis Services OLAP 큐브에 연결하는 데 이 패키지를 사용할 수 있습니다. 현재, 테이블 형식 모델에는 연결할 수 없습니다.

패키지 로드

olapR 패키지는 R 세션으로 미리 로드되지 않습니다. 다음 명령을 실행하여 패키지를 로드합니다.

library(olapR)

패키지 버전

현재 버전은 패키지를 제공하는 모든 Windows 전용 제품 및 다운로드에서 1.0.0입니다.

가용성 및 위치

이 패키지는 다음 제품 뿐만 아니라 Azure의 여러 가상 머신 이미지에도 제공됩니다. 패키지 위치는 그에 따라 다릅니다.

Product 위치
SQL Server Machine Learning Services(R 통합 포함) C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library
SQL Server 2016 R Services C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
Microsoft Machine Learning Server(R Server) C:\Program Files\Microsoft\R_SERVER\library
Microsoft R Client C:\Program Files\Microsoft\R Client\R_SERVER\library
데이터 과학 가상 머신(Azure) C:\Program Files\Microsoft\R Client\R_SERVER\library
SQL Server 가상 머신(Azure)1 C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library

1 R 통합은 SQL Server에서 선택 사항입니다. VM을 구성하는 동안 Machine Learning 또는 R 기능을 추가하면 olapR 패키지가 설치됩니다.

olapR을 사용하는 방법

olapR 라이브러리는 Analysis Services 큐브에 대해 MDX 쿼리를 생성하고 유효성을 검사하기 위한 간단한 R 스타일 API를 제공합니다. olapR은 모든 MDX 시나리오에 대한 API를 제공하지는 않지만 N 차원에서 조각, 주사위, 드릴다운, 롤업, 피벗 시나리오를 비롯한 대부분의 사용 사례를 다룹니다. olapR API를 사용하여 생성할 수 없는 쿼리 대신 Analysis Services에 대한 직접 MDX 쿼리를 입력할 수도 있습니다.

olapR 사용을 위한 워크플로

  1. 라이브러리를 로드합니다.
  2. Analysis Services에서 MOLAP 큐브를 가리키는 연결 문자열을 만듭니다.
  3. 큐브에 대한 읽기 권한이 있는지 확인합니다.
  4. 연결에 대한 연결 문자열을 사용합니다.
  5. explore 함수를 사용하여 연결을 확인합니다.
  6. MDX 쿼리 문자열을 제출하거나 쿼리 구조를 빌드하여 쿼리를 설정합니다.
  7. 쿼리를 실행하고 결과를 확인합니다.

OLAP 큐브에 대한 MDX 쿼리를 실행하려면 먼저 연결 문자열(olapCnn)을 만들고 OlapConnection(connectionString) 함수를 사용하여 유효성을 검사해야 합니다. 연결 문자열에는 데이터 원본(예: localhost)과 공급자(MSOLAP)가 있어야 합니다.

연결이 설정된 후 완전히 정의된 MDX 쿼리를 전달하거나, Query() 개체를 사용하여 쿼리를 생성하고 cube(), axis(), columns(), slicers() 등을 사용하여 쿼리 세부 정보를 설정할 수 있습니다.

마지막으로 olapCnn과 쿼리를 executeMD 또는 execute2D에 전달하여 다차원 배열 또는 데이터 프레임을 다시 가져옵니다.

중요

olapR에는 Analysis Services OLE DB 공급자가 필요합니다. 컴퓨터에 SQL Server Analysis Services가 설치되어 있지 않으면 Microsoft에서 Analysis Services 연결에 사용되는 데이터 공급자를 다운로드합니다.

여기에서 SQL Server 2016의 정확한 버전을 설치해야 합니다.

함수 목록

기능 설명
OlapConnection Analysis Services 데이터베이스에 액세스하기 위한 연결 문자열을 만듭니다.
Query Analysis Services 데이터베이스에서 사용할 쿼리 개체를 생성합니다. 큐브, 축, 열, 행, 페이지, 장, 슬라이서를 사용하여 쿼리에 세부 정보를 추가합니다.
executeMD Query 개체나 MDX 문자열을 사용하고 결과를 다차원 배열로 반환합니다.
execute2D Query 개체나 MDX 문자열을 사용하고 결과를 2D 데이터 프레임으로 반환합니다.
explore 큐브 메타데이터 탐색을 허용합니다.

MDX 개념

MDX는 데이터 분석과 탐색을 위해 최적화된 구조로 저장된 처리된 데이터와 집계된 데이터를 포함하는 MOLAP(다차원 OLAP) 큐브의 쿼리 언어입니다. 큐브는 비즈니스 및 과학 애플리케이션에서 기록 데이터의 관계에 관한 인사이트를 도출하는 데 사용됩니다. 내부적으로 큐브는 날짜/시간, 지리 또는 기타 엔터티 같은 차원을 따라 조각화되는 주로 정량적인 숫자 데이터로 구성됩니다. 일반적인 쿼리는 제품 범주, 판촉, 판매 채널 등으로 조각화된 특정 지역과 기간에 해당하는 판매를 롤업할 수 있습니다.

다음과 같은 다양한 작업을 사용하여 큐브 데이터에 액세스할 수 있습니다.

  • 조각화 - 한 차원의 값을 선택하여 한 차원 더 작은 큐브를 생성하는 방식으로 큐브의 하위 집합을 사용합니다.

  • 분할 - 여러 차원에서 값 범위를 지정하여 하위 큐브를 만듭니다.

  • 드릴다운/드릴업 - 더 일반적인 데이터 범위에서 더 자세한 데이터 범위로 또는 그 반대로 이동합니다.

  • 롤업 - 차원에 관한 데이터를 요약합니다.

  • 피벗 - 큐브를 회전합니다.

MDX 쿼리는 SQL 쿼리와 비슷하지만, OLAP 데이터베이스의 유연성 때문에 최대 128개의 쿼리 축을 포함할 수 있습니다. 처음 네 축에는 편의를 위해 열, 행, 페이지, 장이라는 이름이 지정됩니다. 또한 다음 예제와 같이 두 개(행과 열)만 사용하는 것이 일반적입니다.

SELECT {[Measures].[Internet Sales Count], [Measures].[Internet Sales-Sales Amount]} ON COLUMNS, 
{[Product].[Product Line].[Product Line].MEMBERS} ON ROWS
FROM [Analysis Services Tutorial]
WHERE [Sales Territory].[Sales Territory Country].[Australia]

다차원 큐브 자습서에서 AdventureWorks OLAP 큐브를 사용하면 이 MDX 쿼리는 인터넷 판매 개수와 판매량을 선택하고 열 축에 배치합니다. 행 축에는 “제품군” 차원의 가능한 모든 값이 배치됩니다. 그런 다음, WHERE 절(MDX 쿼리의 슬라이서 축)을 사용하여 오스트레일리아의 판매만 표시되도록 쿼리를 필터링합니다. 슬라이서 축이 없으면 모든 국가/지역의 판매를 롤업하고 요약합니다.

olapR 예제

# load the library
library(olapR)

# Connect to a local SSAS default instance and the Analysis Services Tutorial database.
# For named instances, use server-name\\instancename, escaping the instance name delimiter.
# For databases containing multiple cubes, use the cube= parameter to specify which one to use.
cnnstr <- "Data Source=localhost; Provider=MSOLAP; initial catalog=Analysis Services Tutorial"
olapCnn <- OlapConnection(cnnstr)

# Approach 1 - build the mdx query in R
qry <- Query()

cube(qry) <- "[Analysis Services Tutorial]"
columns(qry) <- c("[Measures].[Internet Sales Count]", "[Measures].[Internet Sales-Sales Amount]")
rows(qry) <- c("[Product].[Product Line].[Product Line].MEMBERS") 
slicers(qry) <- c("[Sales Territory].[Sales Territory Country].[Australia]")

result1 <- executeMD(olapCnn, qry)

# Approach 2 - Submit a fully formed MDX query
mdx <- "SELECT {[Measures].[Internet Sales Count], [Measures].[Internet Sales-Sales Amount]} ON AXIS(0), {[Product].[Product Line].[Product Line].MEMBERS} ON AXIS(1) FROM [Analysis Services Tutorial] WHERE [Sales Territory].[Sales Territory Country].[Australia]"

result2 <- execute2D(olapCnn, mdx)

참고 항목

olapR을 사용하여 MDX 쿼리를 만드는 방법