„olapR“ (R-Paket in SQL Server Machine Learning Services)

Gilt für: SQL Server 2016 (13.x) und höhere Versionen

olapR ist ein R-Paket von Microsoft, das für MDX-Abfragen eines SQL Server Analysis Services-OLAP-Cube verwendet wird. Die Funktionen unterstützen nicht alle MDX-Vorgänge, aber Sie können Abfragen erstellen, die Slice, Dice, Drilldown, Rollup und Pivot in Dimensionen erstellen. Das Paket ist in SQL Server Machine Learning Services und SQL Server 2016 R Services enthalten.

Sie können dieses Paket in allen unterstützten Versionen von SQL Server für Verbindungen mit einem Analysis Services-OLAP-Cube verwenden. Verbindungen mit einem tabellarischen Modell werden zurzeit nicht unterstützt.

Laden des Pakets

Das Paket olapR wird nicht vorab in eine R-Sitzung geladen. Führen Sie den folgenden Befehl aus, um das Paket zu laden.

library(olapR)

Paketversion

1\.0.0 ist die aktuelle Version, die in allen ausschließlich Windows-basierten Produkten und -Downloads enthalten ist, die das Paket bereitstellen.

Verfügbarkeit und Speicherort

Dieses Paket wird in den folgenden Produkten sowie in mehreren VM-Images in Azure bereitgestellt. Der Speicherort des Pakets variiert entsprechend.

Produkt Standort
SQL Server Machine Learning Services (mit R-Integration) C:\Programme\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library
SQL Server 2016 R Services C:\Programme\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
Microsoft Machine Learning Server (R-Server) C:\Programme\Microsoft\R_SERVER\library
Microsoft R Client C:\Programme\Microsoft\R Client\R_SERVER\library
Data Science Virtual Machine (in Azure) C:\Programme\Microsoft\R Client\R_SERVER\library
Data Science Virtual Machine (in Azure) 1 C:\Programme\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library

1 R-Integration ist in SQL Server optional. Das Paket „olapR“ wird installiert, wenn Sie während der VM-Konfiguration das Machine Learning- oder das R-Feature hinzufügen.

Verwenden von olapR

Die olapR-Bibliothek bietet eine einfache API im R-Stil zum Generieren und Überprüfen von MDX-Abfragen an einen Analysis Services-Cube. olapR stellt nicht für alle MDX-Szenarien APIs bereit, deckt jedoch die meisten Anwendungsfälle einschließlich Slice-, Dice-, Drilldown-, Rollup- und Pivotszenarien in N-Dimensionen ab. Sie können auch eine direkte MDX-Abfrage an Analysis Services eingeben. Dies gilt für Abfragen, die nicht mithilfe der olapR-APIs erstellt werden können.

Workflow für die Verwendung von olapR

  1. Laden Sie die Bibliothek.
  2. Erstellen Sie eine Verbindungszeichenfolge, die auf einen MOLAP-Cube auf Analysis Services verweist.
  3. Vergewissern Sie sich, dass Sie Lesezugriff auf den Cube haben.
  4. Verwenden Sie die Verbindungszeichenfolge für eine Verbindung.
  5. Überprüfen Sie die Verbindung mithilfe der explore-Funktion.
  6. Richten Sie eine Abfrage ein, indem Sie eine MDX-Abfragezeichenfolge übermitteln oder eine Abfragestruktur erstellen.
  7. Führen Sie die Abfrage aus, und überprüfen Sie das Ergebnis.

Um eine MDX-Abfrage an einen OLAP-Cube auszuführen, müssen Sie zunächst eine Verbindungszeichenfolge (olapCnn) erstellen und mithilfe der Funktion OlapConnection(connectionString) überprüfen. Die Verbindungszeichenfolge muss über eine Datenquelle (z. B. localhost) und einen Anbieter (MSOLAP) verfügen.

Nachdem die Verbindung hergestellt wurde, können Sie entweder eine vollständig definierte MDX-Abfrage übergeben oder die Abfrage mithilfe des Query()-Objekts erstellen, indem Sie die Abfragedetails mit cube(), axis(), columns(), slicers() usw. festlegen.

Übergeben Sie schließlich olapCnn und Abfrage entweder an executeMD oder execute2D, um ein mehrdimensionales Array oder einen Datenrahmen abzurufen.

Wichtig

olapR erfordert den Microsoft Analysis Services-OLE DB-Anbieter. Wenn sie nicht SQL Server Analysis Services auf Ihrem Computer installiert haben, laden Sie den Anbieter von Microsoft herunter: Für Analysis Services-Verbindungen verwendete Datenanbieter.

Die genaue Version, die Sie für SQL Server 2016 installieren sollten, finden Sie hier.

Funktionsliste

Funktion Beschreibung
OlapConnection Erstellen Sie die Verbindungszeichenfolge für den Zugriff auf die Analysis Services-Datenbank.
Query Erstellen Sie ein Query-Objekt, das für die Analysis Services-Datenbank verwendet werden soll. Verwenden Sie Cube, Achse, Spalten, Zeilen, Seiten, Kapitel und Slicer, um der Abfrage Details hinzuzufügen.
executeMD Nimmt ein Query-Objekt oder eine MDX-Zeichenfolge entgegen und gibt das Ergebnis als mehrdimensionales Array zurück.
execute2D Nimmt ein Query-Objekt oder eine MDX-Zeichenfolge entgegen und gibt einen 2D-Datenrahmen zurück.
explore Ermöglicht die Untersuchung von Cubemetadaten.

MDX-Konzepte

MDX ist die Abfragesprache für mehrdimensionale OLAP-Cubes (MOLAP), die verarbeitete und aggregierte Daten enthalten, die in Strukturen gespeichert sind, die für die Datenanalyse und -untersuchung optimiert sind. Cubes werden in Geschäfts- und wissenschaftlichen Anwendungen verwendet, um Erkenntnisse über Beziehungen in Verlaufsdaten zu gewinnen. Intern bestehen Cubes aus größtenteils quantifizierbaren numerischen Daten, die in Dimensionen wie Datum und Uhrzeit, Geografie oder andere Entitäten segmentiert werden. Eine typische Abfrage kann einen Rollup der Verkäufe für eine bestimmte Region und einen bestimmten Zeitraum nach Produktkategorie, Werbung, Vertriebskanal usw. ausführen.

Auf Cubedaten kann mit verschiedenen Vorgängen zugegriffen werden:

  • Slicing (Datenschnitt): Eine Teilmenge des Cubes wird entnommen, indem ein Wert für eine Dimension ausgewählt wird, was zu einem um eine Dimension kleineren Cube führt.

  • Dicing (Teilwürfel): Erstellen eines Teilwürfels durch Angabe eines Wertebereichs für mehrere Dimensionen.

  • Drilldown/-Up: Navigieren von allgemeineren zu detaillierteren Datenbereichen oder umgekehrt.

  • Rollup: Zusammenfassung der Daten für eine Dimension.

  • Pivotieren: Drehen des Cubes.

MDX-Abfragen ähneln SQL Abfragen, können aber aufgrund der Flexibilität von OLAP-Datenbanken bis zu 128 Abfrageachsen enthalten. Die ersten vier Achsen werden der Einfachheit halber so benannt: Columns (Spalten), Rows (Zeilen), Pages (Seiten) und Chapters (Kapitel). Es ist auch üblich, nur zwei (Rows und Columns) zu verwenden, wie im folgenden Beispiel gezeigt:

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]

Mithilfe eines AdventureWorks OLAP-Cubes aus dem Tutorial zu mehrdimensionalen Cubes wählt diese MDX-Abfrage die Internetumsatzzahl und den Umsatzbetrag aus und platziert sie auf der Column-Achse. Auf der Row-Achse werden alle möglichen Werte der Dimension „Product Line“ (Produktlinie) platziert. Anschließend wird die Abfrage mithilfe der WHERE-Klausel (die Slicerachse in MDX-Abfragen) gefiltert, sodass nur die Verkäufe aus Australien von Bedeutung sind. Ohne die Slicerachse würden wir einen Rollup und eine Zusammenfassung der Verkäufe aus allen Ländern/Regionen ausführen.

OlapR-Beispiele

# 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)

Weitere Informationen

Erstellen von MDX-Abfragen mit olapR