Я пытаюсь следовать этому:
https://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/rtsql-create-a-predictive-model-r?view=sql-server-2017
Предоставленный код:
DROP PROCEDURE IF EXISTS generate_linear_model;
GO
CREATE PROCEDURE generate_linear_model
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
, @script = N'lrmodel <- rxLinMod(formula = distance ~ speed, data = CarsData);
trained_model <- data.frame(payload = as.raw(serialize(lrmodel, connection=NULL)));'
, @input_data_1 = N'SELECT [speed], [distance] FROM CarSpeed'
, @input_data_1_name = N'CarsData'
, @output_data_1_name = N'trained_model'
WITH RESULT SETS ((model varbinary(max)));
END;
GO
просто не работает.
Разве данные не должны называться автомобилями?Данные об автомобилях также не имеют расстояния между столбцами, а, скорее, dist.Я изменил код следующим образом:
DROP PROCEDURE IF EXISTS generate_linear_model;
GO
CREATE PROCEDURE generate_linear_model
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
, @script = N'lrmodel <- rxLinMod(formula = distance ~ speed, data = cars);
trained_model <- data.frame(payload = as.raw(serialize(lrmodel, connection=NULL)));'
, @input_data_1 = N'SELECT [speed], [dist] FROM cars'
, @input_data_1_name = N'cars'
, @output_data_1_name = N'trained_model'
WITH RESULT SETS ((model varbinary(max)));
END;
GO
, но все равно получаю ошибки.Кстати, я немного запутался в том, что делает
@input_data_1 = N'SELECT [speed], [dist] FROM cars'
.Это запрос к данным автомобилей в R?Любые указатели будут очень цениться.Спасибо.
PS:
Комментарий ниже помог мне исправить код:
--CREATE TABLE stopping_distance_models (
-- model_name varchar(30) not null default('default model') primary key,
-- model varbinary(max) not null);
DROP PROCEDURE IF EXISTS generate_linear_model;
GO
CREATE PROCEDURE generate_linear_model
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
,@script = N'data(cars);
lrmodel <- rxLinMod(formula = dist ~ speed, data = cars);
trained_model <- data.frame(payload = as.raw(serialize(lrmodel, connection=NULL)));'
, @input_data_1 = N''
, @input_data_1_name = N'cars'
, @output_data_1_name = N'trained_model'
WITH RESULT SETS ((model varbinary(max)));
END;
GO
INSERT INTO stopping_distance_models (model)
EXEC generate_linear_model;