Tutorial: SQL-Entwicklung für R-Data-Scientists
Gilt für: SQL Server 2016 (13.x) und höhere Versionen
In diesem Tutorial für Data Scientists erfahren Sie, wie Sie eine umfassende Lösung für die Vorhersagemodellierung auf Grundlage der R-Unterstützung in SQL Server 2016 oder SQL Server 2017 erstellen. Für dieses Tutorial wird die Datenbank NYCTaxi_sample in SQL Server verwendet.
Sie verwenden eine Kombination aus R-Code, SQL Server-Daten und benutzerdefinierten SQL-Funktionen, um ein Klassifikationsmodell zu erstellen, das die Wahrscheinlichkeit angibt, dass der Fahrer ein Trinkgeld für eine bestimmte Taxifahrt erhält. Sie stellen außerdem Ihr R-Modell für SQL Server bereit und verwenden Serverdaten, um Bewertungen basierend auf dem Modell zu erstellen.
Dieses Beispiel kann einfach auf alle möglichen realen Situationen übertragen werden, wie die Vorhersage von Reaktionen von Kunden auf Verkaufsaktionen oder die Ausgaben oder Teilnehmerzahlen bei Veranstaltungen. Da das Modell aus einer gespeicherten Prozedur aufgerufen werden kann, können Sie es auch in eine Anwendung einbetten.
Da die exemplarische Vorgehensweise der Einführung von R-Entwicklern in R Services (In-Database) dient, wird R so häufig wie möglich verwendet. Das bedeutet jedoch nicht, dass R zwangsläufig das beste Tool für die einzelnen Aufgaben ist. In vielen Fällen stellt SQL Server eine bessere Leistung bereit, besonders für Aufgaben wie Datenaggregation und Featureentwicklung. Solche Aufgaben profitieren besonders von neuen Funktionen in SQL Server, wie z.B. von speicheroptimierten Columnstore-Indizes. Nebenbei wird auf mögliche Optimierungen hingewiesen.
Voraussetzungen
SQL Server Machine Learning Services mit R-Integration oder SQL Server 2016 R Services
Datenbankberechtigungen, die einem Datenbankbenutzer gewährt werden, der einer SQL Server-Anmeldung zugeordnet ist
Eine R-IDE wie z. B. RStudio oder das in R enthaltene integrierte RGUI-Tool
Es wird empfohlen, diese exemplarische Vorgehensweise an einer Clientarbeitsstation durchzuführen. Sie müssen eine Verbindung zu einem SQL Server-Computer im selben Netzwerk herstellen können, auf dem SQL Server und R aktiviert sind. Anweisungen zur Konfiguration der Arbeitsstation finden Sie unter Einrichten eines Data-Science-Clients für die Entwicklung in R.
Alternativ können Sie die exemplarische Vorgehensweise auf einem Computer durchführen, auf dem SQL Server und eine R-Entwicklungsumgebung vorhanden sind. Diese Konfiguration wird jedoch für eine Produktionsumgebung nicht empfohlen. Befinden sich Client und Server notwendigerweise auf demselben Computer, müssen Sie einen zweiten Satz Microsoft R-Bibliotheken installieren, um R-Skripts von einem Remoteclient senden zu können. Verwenden Sie nicht die R-Bibliotheken, die in der SQL Server-Instanz unter „Programme“ installiert sind. Insbesondere, wenn Sie nur einen Computer verwenden, benötigen Sie die RevoScaleR-Bibliothek an beiden der folgenden Speicherorten, um Client- und Servervorgänge zu unterstützen:
- C:\Programme\Microsoft\R Client\R_SERVER\library\RevoScaleR
- C:\Programme\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR
Zusätzliche R-Pakete
Für diese exemplarische Vorgehensweise sind mehrere R-Bibliotheken erforderlich, die nicht standardmäßig als Teil von R Services (In-Database) installiert sind. Sie müssen die Pakete jeweils auf dem Client installieren, auf dem Sie die Lösung entwickeln, und auf dem SQL Server-Computer, auf dem Sie die Lösung bereitstellen.
Auf einer Clientarbeitsstation
Kopieren Sie in Ihrer R-Umgebung folgende Zeilen, und führen Sie den Code in einem Konsolenfenster (in RGUI oder einer IDE) aus. Von einigen Paketen werden auch erforderliche Pakete installiert. Insgesamt werden etwa 32 Pakete installiert. Für diesen Schritt benötigen Sie eine Internetverbindung.
# Install required R libraries, if they are not already installed.
if (!('ggmap' %in% rownames(installed.packages()))){install.packages('ggmap')}
if (!('mapproj' %in% rownames(installed.packages()))){install.packages('mapproj')}
if (!('ROCR' %in% rownames(installed.packages()))){install.packages('ROCR')}
if (!('RODBC' %in% rownames(installed.packages()))){install.packages('RODBC')}
Auf dem Server
Es gibt mehrere Möglichkeiten, Pakete in SQL Server zu installieren. SQL Server bietet beispielsweise ein Feature für die Verwaltung von R-Paketen, mit dem Datenbankadministratoren ein Paketrepository erstellen und Benutzern die Rechte erteilen können, eigene Pakete zu installieren. Wenn Sie jedoch Administrator auf dem Computer sind, können Sie neue Pakete mit R installieren, solange Sie diese in der richtigen Bibliothek installieren.
Hinweis
Führen Sie auf dem Server keine Installation in einer Benutzerbibliothek aus, auch wenn Sie dazu aufgefordert werden. Wenn Sie eine Installation in einer Benutzerbibliothek durchführen, kann die SQL Server-Instanz die Pakete nicht finden und ausführen. Weitere Informationen finden Sie unter Installieren neuer R-Pakete in SQL Server.
Öffnen Sie auf dem SQL Server-Computer als Administrator RGui.exe. Wenn Sie SQL Server R Services mithilfe der Standardeinstellungen installiert haben, finden Sie „Rgui.exe“ unter C:\Programme\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64).
Führen Sie an einer R-Eingabeaufforderung die folgenden R-Befehle aus:
install.packages("ggmap", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("mapproj", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("ROCR", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
install.packages("RODBC", lib=grep("Program Files", .libPaths(), value=TRUE)[1])
In diesem Beispiel wird die grep-Funktion in R verwendet, um den Vektor der verfügbaren Pfade zu durchsuchen und den Pfad zu finden, der „Programme“ enthält. Weitere Informationen finden Sie unter RDocumentation für das Basispaket.
Wenn Sie sicher sind, dass die Pakete bereits installiert wurden, überprüfen Sie die Liste der installierten Pakete, indem Sie installed.packages()
ausführen.