olapR (SQL Server Machine Learning Services の R パッケージ)
適用対象: SQL Server 2016 (13.x) 以降のバージョン
olapR は、Microsoft が提供する R パッケージであり、SQL Server Analysis Services OLAP キューブに対する MDX クエリに使用されます。 関数はすべての MDX 操作をサポートするわけではありませんが、ディメンションに対してスライス、ダイス、ドリルダウン、ロールアップ、およびピボットを行うクエリを作成できます。 このパッケージは、SQL Server Machine Learning Services と SQL 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 |
Data Science Virtual Machine (Azure 上) | C:\Program Files\Microsoft\R Client\R_SERVER\library |
SQL Server Virtual Machine (Azure 上) 1 | C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library |
1 R 統合は SQL Server では省略可能です。 olapR パッケージは、VM の構成中に Machine Learning または R 機能を追加するとインストールされます。
olapR の使用方法
olapR ライブラリには、Analysis Services キューブに対する MDX クエリを生成および検証するための、シンプルな R スタイル API が用意されています。 olapR にはすべての MDX シナリオ用の API が用意されているわけではありませんが、N 次元のスライス、ダイス、ドリルダウン、ロールアップ、およびピボットのシナリオなど、ほとんどのユース ケースに対応しています。 また、olapR API を使用して作成できないクエリについては、Analysis Services に直接 MDX クエリを入力することもできます。
olapR を使用するためのワークフロー
- ライブラリを読み込みます。
- Analysis Services 上の MOLAP キューブを指す接続文字列を作成します。
- キューブに対する読み取りアクセス権があることを確認します
- 接続でその接続文字列を使用します。
- explore 関数を使用して接続を確認します。
- MDX クエリ文字列を送信するか、クエリ構造を構築して、クエリを設定します。
- クエリを実行し、結果を確認します。
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 用にインストールする必要がある正確なバージョンは、こちらに記載されています。
関数一覧
Function | 説明 |
---|---|
OlapConnection |
Analysis Services データベースにアクセスするための接続文字列を作成します。 |
Query |
Analysis Services データベースで使用する Query オブジェクトを構築します。 cube、axis、columns、rows、pages、chapters、slicers を使用して、クエリに詳細を追加します。 |
executeMD |
Query オブジェクトまたは MDX 文字列を受け取り、結果を多次元配列として返します。 |
execute2D |
Query オブジェクトまたは MDX 文字列を受け取り、結果を 2D データ フレームとして返します。 |
explore |
キューブ メタデータを探索できます。 |
MDX の概念
MDX は、データ分析と探索用に最適化された構造に格納された処理済みデータや集計データが含まれている、多次元 OLAP (MOLAP) キューブ用のクエリ言語です。 キューブは、ビジネスおよび科学アプリケーションで、履歴データのリレーションシップに関する分析情報を得るために使用されます。 内部的には、キューブはほとんどが定量化できる数値データで構成されます。これは、日付と時刻、地理、または他のエンティティなどのディメンションに沿ってスライスされます。 典型的なクエリとしては、特定の地域と期間に該当する、製品カテゴリ、販売促進、販売チャネルなどによってスライスされた売上がロール アップされます。
キューブのデータには、さまざまな操作を使用してアクセスできます。
スライス - 1 ディメンションの値を選択してキューブのサブセットを取り出します。結果としてキューブは 1 ディメンションだけ小さくなります。
ダイス - 複数のディメンションに対して値の範囲を指定してサブキューブを作成します。
ドリルダウンまたはアップ - より全体的なデータ範囲からより詳細なデータ範囲へ、またはその逆へ移動します。
ロールアップ - ディメンションに関するデータを要約します。
ピボット - キューブを回転させます。
MDX クエリは SQL クエリに似ていますが、OLAP データベースの柔軟性により、最大 128 個のクエリ軸を含めることができます。 利便性のため、最初の 4 つの軸には Columns、Rows、Pages、Chapters という名前が付けられています。 次の例に示すように、2 つ (Rows と Columns) のみを使用することも一般的です。
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]
この MDX クエリでは、多次元キューブのチュートリアルからの AdventureWorks OLAP キューブを使用して、インターネットの販売数と販売金額を選択し、それらを Column 軸に配置します。 行軸では、"Product Line" ディメンションのすべての可能な値を配置します。 次に、WHERE 句 (MDX クエリではスライサー軸) を使用して、Australia からの売上だけが関係するようにクエリをフィルター処理します。 スライサー軸がない場合は、すべての国/地域の売上をロール アップして集計します。
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)