olapR (pacchetto R in Machine Learning Services per SQL Server)

Si applica a: SQL Server 2016 (13.x) e versioni successive

olapR è un pacchetto R di Microsoft usato per eseguire query MDX su un cubo OLAP di SQL Server Analysis Services. Le funzioni non supportano tutte le operazioni MDX, ma è possibile creare query in grado di eseguire operazioni di sezionamento, estrazione, drill-down, rollup e trasformazione tramite Pivot sulle dimensioni. Il pacchetto è incluso in Machine Learning Services per SQL Server e R Services per SQL Server 2016.

È possibile usare questo pacchetto nelle connessioni a un cubo OLAP di Analysis Services in tutte le versioni supportate di SQL Server. Le connessioni a un modello tabulare non sono attualmente supportate.

Caricare il pacchetto

Il pacchetto olapR non è precaricato in una sessione R. Eseguire il comando seguente per caricare il pacchetto.

library(olapR)

Versione pacchetto

La versione corrente è la 1.0.0 in tutti i prodotti solo Windows e in tutti i download del pacchetto.

Disponibilità e percorsi

Questo pacchetto è disponibile nei prodotti elencati di seguito, nonché in diverse immagini di macchina virtuale in Azure. Il percorso del pacchetto varia di conseguenza.

Prodotto Ufficio
Machine Learning Services per SQL Server (con integrazione di R) C:\Programmi\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library
R Services per SQL Server 2016 C:\Programmi\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
Microsoft Machine Learning Server (R Server) C:\Programmi\Microsoft\R_SERVER\library
Microsoft R Client C:\Programmi\Microsoft\R Client\R_SERVER\library
Data Science Virtual Machine (in Azure) C:\Programmi\Microsoft\R Client\R_SERVER\library
Macchina virtuale di SQL Server (in Azure) 1 C:\Programmi\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library

1 L'integrazione di R è facoltativa in SQL Server. Il pacchetto olapR viene installato quando si aggiunge la funzionalità Machine Learning o R durante la configurazione della macchina virtuale.

Come usare olapR

La libreria olapR fornisce un'API di tipo R semplice per generare e convalidare query MDX su un cubo di Analysis Services. olapR non fornisce API per tutti gli scenari MDX, ma copre la maggior parte dei casi, compresi gli scenari di sezionamento, estrazione, drilldown, rollup e scenari pivot nelle dimensioni N. È anche possibile inserire una query MDX diretta in Analysis Services per le query che non possono essere create usando le API olapR.

Flusso di lavoro per l'uso di olapR

  1. Caricare la libreria.
  2. Creare una stringa di connessione che punti a un cubo MOLAP in Analysis Services.
  3. Verificare di avere accesso in lettura nel cubo.
  4. Usare la stringa di connessione in una connessione.
  5. Verificare la connessione usando la funzione explore.
  6. Configurare una query inviando una stringa di query MDX o creando una struttura di query.
  7. Eseguire la query e verificare il risultato.

Per eseguire una query MDX in un cubo OLAP, è necessario prima creare una stringa di connessione (olapCnn) e convalidarla con la funzione OlapConnection(connectionString). La stringa di connessione deve avere un'origine dati (ad esempio, localhost) e un provider (MSOLAP).

Dopo aver stabilito la connessione, è possibile passare una query MDX completamente definita oppure creare la query usando l'oggetto Query(), impostando i dettagli della query con cube(), axis(), columns(), slicers() e così via.

Infine, passare olapCnn e la query in executeMD o execute2D per ottenere una matrice multidimensionale o un frame di dati.

Importante

olapR richiede il provider OLE DB di Analysis Services. Se nel computer non è installato SQL Server Analysis Services, scaricare il provider da Microsoft: Provider di dati usati per le connessioni ad Analysis Services

La versione esatta che è necessario installare per SQL Server 2016 si trova qui.

Elenco di funzioni

Funzione Descrizione
OlapConnection Crea la stringa di connessione per accedere al database di Analysis Services.
Query Crea un oggetto Query da usare nel database di Analysis Services. Usare il cubo, l'asse, le colonne, le righe, le pagine, i capitoli, i filtri dei dati per aggiungere dettagli alla query.
executeMD Accetta un oggetto Query o una stringa MDX e restituisce il risultato come matrice multidimensionale.
execute2D Accetta un oggetto Query o una stringa MDX e restituisce il risultato come frame di dati 2D.
explore Consente l'esplorazione dei metadati del cubo.

Concetti MDX

MDX è il linguaggio di query per i cubi OLAP multidimensionali (MOLAP) contenenti dati elaborati e aggregati archiviati in strutture ottimizzate per l'analisi e l'esplorazione dei dati. I cubi vengono usati nelle applicazioni aziendali e scientifiche per ricavare informazioni dettagliate sulle relazioni nei dati cronologici. Internamente, i cubi sono costituiti principalmente da dati numerici quantificabili, suddivisi in base a dimensioni come data e ora, geografia o altre entità. Una tipica query potrebbe eseguire il rollup delle vendite di una determinata area e di un determinato periodo di tempo, suddivise per categoria di prodotto, promozione, canale di vendita e così via.

È possibile accedere ai dati del cubo usando varie operazioni:

  • Sezionamento: accetta un subset del cubo, scegliendo un valore per una dimensione, e ottiene un cubo più piccolo di una dimensione.

  • Estrazione: crea un sottocubo specificando un intervallo di valori in più dimensioni.

  • Drill-Down/Up: passa da intervalli di dati più generali a intervalli di dati più dettagliati o viceversa.

  • Rollup: riepiloga i dati in una dimensione.

  • Pivot: ruota il cubo.

Le query MDX sono simili alle query SQL, ma, a causa della flessibilità dei database OLAP, possono contenere fino a 128 assi di query. I primi quattro assi sono denominati per praticità: colonne, righe, pagine e capitoli. È anche comune usarne solo due (righe e colonne), come illustrato nell'esempio seguente:

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]

Usando un cubo OLAP AdventureWorks dall'esercitazione sui cubi multidimensionali, questa query MDX seleziona il conteggio delle vendite su Internet e l'importo delle vendite e li inserisce nell'asse colonna. Nell'asse riga inserisce tutti i valori possibili della dimensione "Product Line". Quindi, usando la clausola WHERE (ovvero l'asse di sezionamento nelle query MDX), filtra la query in modo che solo le vendite provenienti dall'Australia siano rilevanti. Senza l'asse di sezionamento, varrà eseguito il rollup e il riepilogo delle vendite di tutti i paesi/aree geografiche.

Esempi di 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)

Vedi anche

Come creare query MDX con olapR