2017-03-06 1 views
1

In der Registerkarte "R Interactive" kann ich auf data.table zugreifen. Installer hat es in meinen persönlichen Ordner geladen. Aber wenn ich versuche, R von SQLWie aktiviere ich data.table von SQL

EXECUTE sp_execute_external_script  
    @language = N'R'   
, @input_data_1 = N' select top 2 TodayClosed as Closed, Industry from stockquotes SQ 
    inner join StockSymbols SS on SS.ID = SQ.StockId where TodayClosed is not null;'  
, @script = N' 
    dtf <- data.frame(InputDataSet) 
    dt <- data.table(dtf) 
    dt[,list(mean=mean(Closed),sd=sd(Closed)),by=Industry]' 
WITH RESULT SETS (([mean] float NULL, [sd] float NULL, Industry char(75) NULL)); 

ich diesen Fehler zu verwenden:

could not find function "data.table"

Von anderen Fehlermeldungen, würde ich sagen, dass es unter ‚Program Files‘ sucht. Ich habe versucht, es dort ohne Glück zu installieren.

+0

Die Frage fehlt eine Menge Informationen. Sie sprechen über die * R-Dienste * von SQL Server. Dies erfordert SQL Server 2016 und die Installation der Dienste an erster Stelle. Sie erwähnen andere Fehlermeldungen, aber * nicht '* posten sie. Ich wette, Sie haben nur vergessen, die Pakete zu importieren, die Sie brauchen. Geben Sie * all * die Fehlermeldungen ein und erläutern Sie explizit, was Sie installiert haben. Hast du die passenden Pakete hinzugefügt? –

+0

In jedem Fall ** NICHT ** machen Sie zufällige Installationen und Modifikationen. Sie werden wahrscheinlich am Ende R, SQL Server, Ihre Maschine oder alle von ihnen ruinieren. Weder R noch SQL Server sind beschädigt. Können Sie eines der Beispiele in den Dokumenten ausführen? –

+0

Erstens, haben Sie * data.table' installiert? Das ist ein * separates * Paket, das geladen werden muss, wie in [Installieren und Verwalten von R-Paketen] (https://msdn.microsoft.com/en-us/library/mt709429.aspx) gezeigt. –

Antwort

3

Zuerst müssen Sie das Paket data.table an einem Ort installieren, den R Services finden kann. Wenn SQL einen gespeicherten R-Prozess ausführt, verwendet es ein anderes Benutzerkonto als Ihr eigenes. Per der MSDN documentation:

Step 3: Enable Implied Authentication for Launchpad Accounts

During setup, 20 new Windows user accounts are created for the purpose of running tasks under the security token of the SQL Server Trusted Launchpad service. When a user sends an R script from an external client, SQL Server will activate an available worker account, map it to the identity of the calling user, and run the R script on behalf of the user.

dieses Denn alle unter Ihrem Benutzerverzeichnisbaum installierten Pakete werden nicht gefunden. Der Standardspeicherort, in dem R Services nach Paketen sucht, ist etwa C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library, aber Sie sollten dort wahrscheinlich keine neuen Pakete installieren oder Sie riskieren, Dinge zu beschädigen. Wählen Sie stattdessen ein anderes, global zugängliches Verzeichnis zum Installieren aus, oder erstellen Sie es.

Zweitens müssen Sie data.table in Ihre R-Sitzung laden. Legen

.libPaths("packagedir") 
require(data.table) 

an der Spitze des R-Skript, wo packagedir ist das Verzeichnis, das Sie gewählt haben.

+0

@PanagiotisKanavos Zwischen den Kommentaren von PK und Hong Ooi konnte ich das Problem lösen. Ich habe versucht, das Paket von RServices zu installieren, aber es hatte keine Erlaubnis. Zum CLI zu gehen, löste das. Interessanterweise hatte eine Abhängigkeit von chron, dass ich manuell installieren musste. – BWhite