Служба Python сервера SQL - "DECLARE @myscript NVARCHAR (MAX) = N '" выдает синтаксическую ошибку, в чем может быть возможная ошибка? - PullRequest
0 голосов
/ 24 мая 2019

Я использую SQL Server 2017 с машинным обучением в базе данных с помощью сценариев Python с целью запуска моделей машинного обучения. Следуя руководству по PluralSight «Начало работы с Python на SQL Server» в файле sql, я объявляю переменную с ее типом данных и в нее вписываю свой сценарий Python. Но он выдает синтаксическую ошибку в первой строке. Мой код, как показано ниже:

Я пишу заявление согласно учебнику.

DECLARE @myscript NVARCHAR(MAX) = N 

ошибка как:

DECLARE @myscript NVARCHAR(MAX) = N'
                             ^
SyntaxError: invalid syntax 

Ожидается, что код должен объявить переменную @myscript, которую я затем использую при определении входного кода.

Вот полный код ниже

DECLARE @myscript NVARCHAR(MAX) = N'
import sys
sys.path += ["D:\\sql_queries"]
import ml_models as ms
mydf = ms.fill_na(mydf)
mydf = ms.backup_columns(mydf)
mydf = ms.shaping_df(mydf)
mydf = ms.normalising_numerical_mydf(mydf)
mydf = ms.date_to_datetime(mydf)
mydf = ms.split_years_months(mydf)
mydf = ms.replacing_strings_with_integers(mydf)
mydf = ms.type_casting(mydf)
mydf = ms.label_encoder(mydf)
mydf = ms.drop_unnecessary_features(mydf)
x_train, x_valid, x_test, y_train, y_valid = ms.seperate_train_test_validation(mydf)
y_pred_rf = ms.random_forest_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_ada = ms.adboost_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_xgb = ms.xgb_model(x_train, y_train, x_valid, y_valid, x_test)
y_pred_lgb = ms.light_gradient_boost_model(x_train, y_train, x_valid, y_valid, x_test)

predictions = y_pred_rf*0.3 + y_pred_ada*0.2 + y_pred_xgb*0.2 + y_pred_xgb*0.3
';

DECLARE @myquery NVARCHAR(MAX) = N'
select * from banktest.dbo.train
UNION ALL
select *, 6 as loan_default from banktest.dbo.test;'
;

DECLARE @predictions float;

EXEC sp_execute_external_script
    @language = N'Python'
    , @script = @myscript
    , @input_data_1 = @myquery
    , @input_data_1_name = N'mydf'
    , @output_data_1_name = N'predictions'
    , @parallel = 1
    , @params = N'@predictions float out'
    , @predictions = @predictions OUT
WITH RESULT SETS ((predicted_value nvarchar(MAX)));

1 Ответ

0 голосов
/ 30 мая 2019

Ошибка произошла из-за прямого запуска кода на сервере Python с использованием VS Code.Чтобы отобразить вывод, мы должны выполнить код на Ctrl+Shift+P

...