Поделиться через


Использование данных из кубов OLAP на языке R

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

olapR — это пакет R в Службах машинного обучения SQL Server, который позволяет выполнять запросы многомерных выражений для получения данных из кубов OLAP. При использовании этого пакета вам не нужно создавать связанные серверы или очищать плоские наборы строк; данные OLAP можно получать напрямую из R.

В этой статье описывается этот API, а также приводятся общие сведения об OLAP и многомерных выражениях для пользователей R, которые не знакомы с базами данных многомерных кубов.

Важно!

Экземпляр Analysis Services может поддерживать либо стандартные многомерные кубы, либо табличные модели. Одновременная поддержка обоих типов моделей невозможна. Соответственно, прежде чем пытаться выполнить запрос многомерного выражения к кубу, убедитесь, что ваш экземпляр Analysis Services содержит многомерные модели.

Что представляет собой куб OLAP?

OLAP — это технология интерактивной аналитической обработки данных. Решения OLAP часто используются для сбора и хранения критически важных данных. Многие инструменты, панели мониторинга и визуализации используют данные OLAP для бизнес-аналитики. Дополнительные сведения см. в разделе Интерактивная аналитическая обработка.

Корпорация Майкрософт предлагает службы Analysis Services, с помощью которых вы можете разрабатывать, развертывать и запрашивать данные OLAP в форме кубов или табличных моделей. Куб — это многомерная база данных. Измерения аналогичны аспектам данных или факторам в R: с помощью измерений определяется конкретное подмножество данных, которые требуется суммировать или анализировать. Например, одним из важнейших измерений является время, в связи с чем в большинстве решений OLAP по умолчанию определено множество разных календарей, которые применяются при создании срезов и суммировании данных.

В целях оптимизации производительности в базе данных OLAP часто заранее рассчитываются сводки (или агрегаты), которые сохраняются для более быстрого извлечения в дальнейшем. Сводки основываются на мерах, представляющих формулы, которые могут применяться к числовым данным. Таким образом, с помощью измерения определяется подмножество данных, для которого затем вычисляется мера. Например, с помощью меры можно рассчитать общую сумму продаж определенной линейки продуктов за несколько кварталов за вычетом налогов, средние затраты на доставку для конкретного поставщика, общий объем выплат по заработной плате с начала года на текущую дату и т. д.

Для выполнения запросов к кубам используются многомерные выражения. Многомерное выражение как правило содержит определение данных, которое включает одно или несколько измерений и как минимум одну меру. Тем не менее, этим возможности таких выражений не ограничиваются, и они могут включать скользящие интервалы, совокупные средние значения, суммы, ранги или процентили.

Ниже приводятся некоторые другие термины, которые могут быть полезны при работе с многомерными выражениями:

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

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

  • Детализация позволяет перейти от сводки к подробностям.

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

  • Свертка дает сводные данные по данным в измерении.

  • Сводка поворачивает куб или выбранные данные.

Создание запросов многомерных выражений с помощью olapR

В следующей статье подробно описывается синтаксис, используемый при создании или выполнении запросов к кубу:

API olapR

Пакет OlapR поддерживает два метода создания запросов многомерных выражений:

  • Использование конструктора многомерных выражений. Использование функций R в пакете для создания простого запроса многомерного выражения посредством выбора куба и последующей настройки осей и срезов. Это простой способ создания допустимых запросов многомерных выражений при отсутствии доступа к традиционным средствам OLAP или нехватке опыта работы с языком многомерных выражений.

    Этот способ подходит не для всех запросов, поскольку многомерные выражения могут быть сложными. Тем не менее, этот API поддерживает большинство наиболее распространенных и полезных операций, включая срезы, сегментирование, детализацию, свертку и сводку в N измерениях.

  • Копирование и вставка готового многомерного выражения. Вы можете вручную создать и затем вставить любой запрос многомерных выражений. Этот вариант является оптимальным, если существуют запросы многомерных выражений, которые вы хотите использовать повторно, или если вы хотите создать запрос, который слишком сложен для обработки в olapR.

    После создания многомерного выражения с помощью любой клиентской программы, например SSMS или Excel, сохраните строку запроса. Укажите эту строку многомерного выражения в качестве аргумента для обработчика запросов SSAS в пакете olapR. Поставщик отправит запрос на указанный сервер служб Analysis Services и передаст результаты в R.

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

Известные проблемы

В этом разделе представлены некоторые известные проблемы, а также часто задаваемые вопросы, связанные с пакетом olapR.

Поддержка табличных моделей

При подключении к экземпляру Analysis Services, который содержит табличную модель, функция explore сообщает об успешном выполнении операции и возвращает значение TRUE. Тем не менее, объекты табличной модели отличаются от многомерных, а структура многомерной базы данных отличается от структуры табличной модели.

В табличных моделях как правило используется язык DAX (выражения анализа данных), тем не менее вы можете создавать допустимые запросы многомерных выражений к табличной модели, если вы уже знакомы с такими выражениями. Для построения допустимых запросов многомерных выражений к табличной модели нельзя использовать конструкторы olapR.

Извлечение данных из табличной модели с помощью запросов многомерных выражений неэффективно. Если вам необходимо получить данные из табличной модели для использования в R, рассмотрите следующие способы:

  • Активируйте DirectQuery для модели и добавьте сервер в качестве связанного сервера в SQL Server.
  • Если табличная модель построена на основе реляционного киоска данных, получите данные непосредственно из источника.

Как определить, содержит ли экземпляр табличные или многомерные модели?

Один экземпляр служб Analysis Services может содержать несколько моделей, но все они должны быть одного типа. Это связано с принципиальными различиями в способах хранения и обработки данных между табличными и многомерными моделями. Например, табличные модели хранятся в памяти и используют индексы columnstore для максимального ускорения вычислений. В многомерных моделях данные хранятся на диске, а агрегаты определяются заранее и извлекаются с использованием запросов многомерных выражений.

При подключении к Analysis Services с помощью клиента, такого как SQL Server Management Studio, вы можете определить поддерживаемый тип модели по значку базы данных.

Также для определения типа модели, который поддерживает экземпляр, можно просмотреть и запросить свойства сервера. Свойство Режим сервера поддерживает два значения: Многомерный и Табличный.

Общие сведения об этих типах моделей см. в следующей статье:

Дополнительные сведения о запросе свойств сервера см. в следующей статье:

Обратная запись не поддерживается

Запись результатов пользовательских вычислений R в куб невозможна.

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

Долго выполняющиеся запросы многомерных выражений, блокирующие процессы обработки куба

Несмотря на то, что пакет olapR осуществляет только операции чтения, долго выполняющиеся запросы многомерных выражений могут создавать блокировки, препятствующие процессам обработки куба. Всегда заранее тестируйте свои запросы многомерных выражений, чтобы точно знать возвращаемый ими объем данных.

При попытке подключиться к заблокированному кубу вы можете получить сообщение об ошибке, связанной с недоступностью хранилища данных SQL Server. В таком случае вы можете включить удаленные подключения, проверить имя экземпляра сервера и попробовать другие способы. Тем не менее, рекомендуется проверить наличие ранее открытых подключений.

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

Ресурсы

Если вы впервые сталкиваетесь с OLAP или запросами многомерных выражений, см. следующие статьи в Википедии: