R-интеграция с SQL Server 2016 (CTP3): Я использую новый sp_execute_external_script для создания модели линейной регрессии. Есть ли способ отправить данные коэффициентов об обученной модели в output_data_1_name?Использование sp_execute_external_script, как я могу маршрутизировать метаданные обученной модели к output_data_1
Например, в теле R-Script, если вы выдаете: print (myModel); Он печатает это в выходном окне SSMS (не output_data):
Call:
lm(formula = DepVar ~ IndepVar1 + IndepVar2, data = myDemoData)
Coefficients:
(Intercept) IndepVar1 IndepVar2
123.456 25.456 56.382
Можно ли получить это в кадр данных? Это было бы предпочтительнее, так как я также хочу получить t-значения и R-квадрат и сохранить его в таблице. Даже varchar (max) будет в порядке. Я просто разбираю его сам.
Вот что я пытался совсем недавно:
declare @rx_model varbinary(max) = (select model from dbo.Mymodel)
exec dbo.sp_execute_external_script
@language = N'R',
@script = N'require("RevoScaleR");
Mymodel <- unserialize(rx_model);
Mymodelsummary = summary(Mymodel);
A1 = Mymodelsummary[1];
A2 = Mymodelsummary[2];
A3 = Mymodelsummary[3];
A4 = Mymodelsummary[4];
A5 = Mymodelsummary[5];
summary_Text = data.frame(c(A4, A5)); ',
@input_data_1 = N'',
@input_data_1_name = N'',
@output_data_1_name = N'summary_Text',
@params = N'@rx_model varbinary(max)',
@rx_model = @rx_model
with result sets (("A4" nvarchar(max), "A5" nvarchar(max)));
ошибка я получаю в SQL Server 2016 CTP3 является:
Msg 39004, уровень 16, состояние 20, строка 0 Ошибка сценария «R» возникла во время выполнения «sp_execute_external_script» с HRESULT 0x80004004. Msg 39019, уровень 16, состояние 1, строка 0 Ошибка внешнего скрипта: Ошибка в as.data.frame.default (x [[i]], необязательный = ИСТИНА, строкиAsFactors = строкиAsFactors): не может принуждать класс "" summary.rxLinMod "" в data.frame Вызовы: source ... data.frame -> as.data.frame -> as.data.frame.default Ошибка в ScaleR. Проверьте вывод для получения дополнительной информации. Ошибка в eval (expr, envir, enclos): Ошибка в ScaleR. Проверьте вывод для получения дополнительной информации. Calls: Источник -> withVisible -> Eval -> Eval -> .call Выполнение остановлено Msg 11536, уровень 16, состояние 1, строка 2 EXECUTE заявление не удалось, поскольку его результатом НАБОРЫ положение указано 1 результирующего набора (ов) , но оператор только отправил 0 результирующих наборов во время выполнения.
Так что мне интересно, как получить этот выход из sp_execute_external_script в SQL. MSDN не покрывает много о самом R. SQL жалуется, что вывод из модели не может быть «принужден» к кадру данных. Мне интересно, какие манипуляции в R-Script можно сделать, чтобы «дразнить» его в dataframe.
взглянуть на [MSDN] (https://msdn.microsoft.com/en-us/library/mt604368.aspx) – HubertL
Благодарим вас за ответ Hubert.Да, я практически запомнил эту страницу, как и многие другие. Возможно, я нашел что-то близкое к решению. Вот что я имею в виду: –