olapR (package R de SQL Server Machine Learning Services)
S’applique à : SQL Server 2016 (13.x) et versions ultérieures
olapR est un package R de Microsoft servant à effectuer des requêtes MDX sur un cube OLAP SQL Server Analysis Services. Les fonctions ne prennent pas en charge toutes les opérations MDX, mais vous pouvez créer des requêtes qui découpent en tranches, découpent en cubes, descendent dans la hiérarchie, regroupent et pivotent dans plusieurs dimensions. Il est inclus dans SQL Server Machine Learning Services et dans SQL Server 2016 R Services.
Vous pouvez utiliser ce package sur les connexions à un cube OLAP Analysis Services sur toutes les versions de SQL Server prises en charge. Les connexions à un modèle tabulaire ne sont pas prises en charge pour l’instant.
Chargement du package
Le package olapR n’est pas préchargé dans une session R. Exécutez la commande suivante pour le charger.
library(olapR)
Version du package
La version actuelle est 1.0.0 dans tous les téléchargements et produits Windows uniquement qui fournissent le package.
Disponibilité et emplacement
Ce package est fourni dans les produits suivants, ainsi que sur plusieurs images de machine virtuelle sur Azure. L’emplacement du package varie en conséquence.
Produit | Emplacement |
---|---|
SQL Server Machine Learning Services (avec intégration 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 (sur Azure) | C:\Program Files\Microsoft\R Client\R_SERVER\library |
Machine virtuelle SQL Server (sur Azure) 1 | C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library |
1 L’intégration R est facultative dans SQL Server. Le package olapR est installé lorsque la fonctionnalité Machine Learning ou R est ajoutée au moment de la configuration de la machine virtuelle.
Utilisation d’olapR
La bibliothèque olapR fournit une API de style R simple pour générer et valider des requêtes MDX sur un cube Analysis Services. olapR ne fournit pas d’API pour tous les scénarios MDX, mais couvre les cas d’utilisation les plus courants, notamment les scénarios de segmentation, de traitement, d’exploration, de cumul et de tableau croisé dynamique dans N dimensions. Vous pouvez également entrer une requête MDX directe pour Analysis Services pour les requêtes qui ne peuvent pas être construites à l’aide des API olapR.
Workflow pour l’utilisation d’olapR
- Chargez la bibliothèque.
- Créez une chaîne de connexion pointant vers un cube MOLAP sur Analysis Services.
- Vérifiez que vous disposez d’un accès en lecture sur le cube
- Utilisez la chaîne de connexion sur une connexion.
- Vérifiez la connexion à l’aide de la fonction explore.
- Configurez une requête en envoyant une chaîne de requête MDX ou en générant une structure de requête.
- Exécutez la requête et vérifiez le résultat.
Pour exécuter une requête MDX sur un cube OLAP, vous devez d’abord créer une chaîne de connexion (olapCnn
) et la valider à l’aide de la fonction OlapConnection(connectionString)
. La chaîne de connexion doit avoir une source de données (par exemple localhost) et un fournisseur (MSOLAP).
Une fois la connexion établie, vous pouvez soit passer une requête MDX entièrement définie, soit construire la requête à l’aide de l’objet Query()
, en définissant les détails de la requête à l’aide de cube(), axis(), columns(), slicers(), etc.
Enfin, transmettez la requête olapCnn
et interrogez executeMD
ou execute2D
pour obtenir un tableau multidimensionnel ou une trame de données.
Important
OLAP nécessite le fournisseur Analysis Services OLE DB. Si SQL Server Analysis Services n’est pas installé sur votre ordinateur, téléchargez le fournisseur auprès de Microsoft : Fournisseurs de données utilisés pour les connexions Analysis Services
La version exacte que vous devez installer pour SQL Server 2016 se trouve ici.
Liste de fonctions
Fonction | Description |
---|---|
OlapConnection |
Créez la chaîne de connexion pour accéder à la base de données Analysis Services. |
Query |
Construisez un objet de requête à utiliser sur la base de données Analysis Services. Utilisez cube, axis, columns, rows, pages, chapters, slicers pour ajouter des détails à la requête. |
executeMD |
Accepte un objet de requête ou une chaîne MDX et retourne le résultat sous la forme d’un tableau multidimensionnel. |
execute2D |
Accepte un objet de requête ou une chaîne MDX et retourne le résultat sous la forme d’une trame de données 2D. |
explore |
Permet l’exploration des métadonnées du cube. |
Concepts de MDX
MDX est le langage de requête pour les cubes OLAP multidimensionnels (MOLAP) contenant des données traitées et agrégées stockées dans des structures optimisées pour l’analyse et l’exploration des données. Les cubes sont utilisés dans les applications commerciales et scientifiques pour obtenir des insights sur les relations dans les données historiques. En interne, les cubes sont constitués de données numériques pour la plupart quantifiées, qui sont découpées selon des dimensions telles que la date et l’heure, la géographie ou d’autres entités. Une requête classique peut cumuler des ventes pour une région et une période données, découpées par catégorie de produit, promotion, canal de vente, etc.
Il est possible d’accéder aux données du cube à l’aide de diverses opérations :
Segmentation : prendre un sous-ensemble du cube en choisissant une valeur pour une dimension, ce qui génère un cube ayant une dimension de moins.
Découpage : créer un sous-cube en spécifiant une plage de valeurs sur plusieurs dimensions.
Exploration vers le haut/bas : naviguez des plages de données les plus générales vers les plus détaillées, ou vice versa.
Regroupement : résumer les données sur une dimension.
Tableaux croisés : faites pivoter le cube.
Les requêtes MDX sont similaires aux requêtes SQL mais, en raison de la flexibilité des bases de données OLAP, peuvent contenir jusqu’à 128 axes de requête. Les quatre premiers axes sont nommés pour des raisons pratiques : colonnes, lignes, pages et chapitres. Il est également courant d’en utiliser simplement deux (lignes et colonnes), comme illustré dans l’exemple suivant :
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]
À l’aide d’un cube OLAP AdventureWorks issu du tutoriel sur les cubes multidimensionnels, cette requête MDX sélectionne le nombre de ventes sur Internet et le montant des ventes, et les place sur l’axe des colonnes. Sur l’axe des lignes, place toutes les valeurs possibles de la dimension « Product Line ». Ensuite, à l’aide de la clause WHERE (qui est l’axe de découpage dans les requêtes MDX), la requête de sorte est filtrée de sorte que seules les ventes de l’Australie soient prises en compte. Sans l’axe de segmentation, les ventes de tous les pays/régions seraient regroupées et résumées.
Exemples 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)