olapR (пакет R в Службах машинного обучения SQL Server)

Применимо к: SQL Server 2016 (13.x) и более поздних версий

olapR — это пакет R от Майкрософт, используемый для запросов многомерных выражений к кубу OLAP SQL Server Analysis Services. Функции не поддерживают все операции многомерных выражений, но можно создавать запросы, которые создают срезы, выполняют сегментацию, детализацию, свертку и сведение по измерениям. Этот пакет входит в состав Служб машинного обучения SQL Server и служб SQL Server 2016 R Services.

Этот пакет можно использовать для подключений к кубу OLAP Analysis Services во всех поддерживаемых версиях SQL Server. В настоящее время соединения с табличной моделью не поддерживаются.

Загрузка пакета

Пакет olapR не загружен предварительно в сеанс R. Для загрузки пакета выполните приведенную ниже команду.

library(olapR)

Версия пакета

Текущая версия — 1.0.0 во всех продуктах и загрузках только для Windows, предоставляющих пакет.

Расположение и доступность

Этот пакет предоставляется в следующих продуктах, а также в нескольких образах виртуальных машин в Azure. Расположение пакета изменяется соответствующим образом.

Продукт Расположение
Службы машинного обучения SQL Server (интеграция с 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. Пакет olapR будет установлен при добавлении компонента "Машинное обучение" или функции R во время настройки виртуальной машины.

Использование olapR

Библиотека olapR предоставляет простой API в стиле R для создания и проверки запросов многомерных выражений, связанных с кубом Analysis Services. olapR не предоставляет API для всех сценариев многомерных выражений, но этот пакет охватывает большинство вариантов использования, включая сценарии продольных и поперечных срезов, детализации, свертки и сводки в N измерениях. Кроме того, вы можете ввести прямой запрос многомерных выражений в Analysis Services для формирования запросов, которые нельзя создать с помощью API olapR.

Рабочий процесс для использования olapR

  1. Загрузите библиотеку.
  2. Создайте строку подключения, указывающую на куб MOLAP в Analysis Services.
  3. Убедитесь, что у вас есть доступ на чтение для куба.
  4. Используйте строку подключения для установки подключения.
  5. Проверьте подключение с помощью функции обзора.
  6. Настройте запрос, отправив строку запроса многомерных выражений или создав структуру запроса.
  7. Выполните запрос и проверьте результат.

Чтобы выполнить запрос многомерных выражений в кубе OLAP, сначала необходимо создать строку подключения (olapCnn) и выполнить проверку с помощью функции OlapConnection(connectionString). Строка подключения должна иметь источник данных (например, localhost) и поставщик (MSOLAP).

После установки подключения можно либо передать полностью определенный запрос многомерных выражений, либо создать запрос с помощью объекта Query(), задав сведения о запросе, используя объекты cube(), axis(), columns(), slicers() и т. д.

Наконец, передайте olapCnn и запрос в executeMD или execute2D, чтобы получить многомерный массив или кадр данных.

Важно!

Для olapR требуется поставщик OLE DB Analysis Services. Если на компьютере не установлено средство SQL Server Analysis Services, скачайте поставщик на портале Майкрософт в разделе Поставщики данных, используемые для подключения к Analysis Services.

Версия, которую следует установить для SQL Server 2016, указана здесь.

Список функций

Функция Описание
OlapConnection Создайте строку подключения, чтобы получить доступ к базе данных Analysis Services.
Query Создайте объект Query для использования в базе данных Analysis Services. Для добавления сведений в запрос используйте объекты куба, оси, столбцов, строк, страниц, глав и срезов.
executeMD Принимает объект Query или строку многомерных выражений и возвращает результат в виде многомерного массива.
execute2D Принимает объект Query или строку многомерных выражений и возвращает результат в виде двухмерного кадра данных.
explore Позволяет исследовать метаданные куба.

Основные понятия многомерных выражений

Многомерные выражения — это язык запросов для кубов многомерных OLAP (MOLAP), содержащих обработанные и агрегированные данные, хранящиеся в структурах, оптимизированных для анализа и исследования данных. Кубы используются в научных и бизнес-приложениях для отображения сведений о связях в исторических данных. Кубы состоят, в основном, из количественных числовых данных, которые разделены на срезы с помощью таких измерений, как дата и время, география или других сущностей. В типичном запросе может выполняться сведение данных по продажам для определенного региона и периода времени со срезом по категории продукта, акции, каналу продаж и т. д.

Доступ к данным куба можно получить с помощью указанных ниже операций.

  • При создании среза используется подмножество куба, полученное посредством выбора значения для одного измерения, что дает куб, меньший на одно измерение.

  • При сегментировании создается вложенный куб посредством указания диапазона значений для нескольких измерений.

  • При детализации/обобщении выполняется переход от более общих к более подробным диапазонам данных или наоборот.

  • При свертке выполняется суммирование данных в рамках определенного измерения.

  • При сводке выполняется поворот куба.

Запросы многомерных выражений похожи на 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]

С помощью куба OLAP AdventureWorks из учебника по многомерным кубам этот запрос многомерных выражений позволяет выбрать показатель продаж и объем продаж через Интернет и помещает их на ось столбцов. На оси строк расположены все возможные значения измерения "Линейка продуктов". Затем, используя предложение WHERE (ось среза в запросах многомерных выражений), запрос фильтруется лишь с учетом продаж из Австралии. Без оси среза мы бы свернули и подытожили продажи из всех стран или регионов.

Примеры 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