Files
sql-server-samples/samples/features/r-services/Implementing Predictive Analytics/scripts/Create Procedure PredictTip.sql
T

49 lines
2.5 KiB
Transact-SQL

USE [taxidata]
GO
CREATE PROCEDURE [dbo].[PredictTip]
@passenger_count int = 0,
@trip_distance float = 0,
@trip_time_in_secs int = 0,
@direct_distance float = 0
AS
BEGIN
-- Package the inputs as a table
DECLARE @inquery nvarchar(max) = N'
SELECT * FROM [dbo].[fnEngineerFeatures](
@passenger_count,
@trip_distance,
@trip_time_in_secs,
@direct_distance)
'
-- Load the serialized model from the nyc_taxi_models table
DECLARE @lmodel2 varbinary(max) = (SELECT TOP 1 model FROM nyc_taxi_models);
-- Invoke the prediction
EXEC sp_execute_external_script
@language = N'R',
@script = N'
mod <- unserialize(as.raw(model));
OutputDataSet <-rxPredict(modelObject = mod, data = InputDataSet, outData = NULL,
predVarNames = "Score", type = "response", writeModelVars = FALSE, overwrite = TRUE);
',
@input_data_1 = @inquery,
@params = N'@model varbinary(max),
@passenger_count int,
@trip_distance float,
@trip_time_in_secs int ,
@direct_distance float',
@model = @lmodel2,
@passenger_count = @passenger_count ,
@trip_distance = @trip_distance,
@trip_time_in_secs = @trip_time_in_secs,
@direct_distance = @direct_distance
WITH RESULT SETS ((Score float));
END