Введение

Знаете ли вы, что вы можете писать код R и Python в своих операторах T-SQL? Службы машинного обучения в SQL Server устраняют необходимость в перемещении данных. Вместо того, чтобы передавать большие и конфиденциальные данные по сети или терять точность с образцами CSV-файлов, вы можете выполнить свой код R / Python в своей базе данных. Легко разверните свой код R / Python с хранимыми процедурами SQL, сделав их доступными в ваших процессах ETL или в любом приложении. Обучайте и храните модели машинного обучения в своей базе данных, обеспечивая интеллект там, где находятся ваши данные.

Вы можете установить и запустить любой из последних пакетов R / Python с открытым исходным кодом для создания приложений Deep Learning и AI на больших объемах данных в SQL Server. Мы также предлагаем передовые высокопроизводительные алгоритмы в API-интерфейсах Microsoft RevoScaleR и RevoScalePy. Их использование с последними инновациями в мире открытого исходного кода позволяет вам привнести в ваши приложения беспрецедентный выбор, производительность и масштабируемость.

Если вы хотите опробовать службы машинного обучения SQL Server, ознакомьтесь с практическим руководством ниже. Если у вас не установлены службы машинного обучения в SQL Server, вы сначала захотите следовать руководству по началу работы, которое я опубликовал здесь: https://blogs.msdn.microsoft.com/mlserver/2018 / 05/18 / начало-работы-с-сервисами-машинным обучением-в-sql-server /

Практическое руководство

В этом руководстве я расскажу об основах выполнения R и Python в операторах T-SQL. Если вы предпочитаете учиться через видео, я также опубликовал туториал на YouTube:

Основы

Откройте SQL Server Management Studio и установите соединение с вашим сервером. Откройте новый запрос и вставьте этот базовый пример: (Хотя я использую Python в этих примерах, вы также можете делать все с R)

EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'

Sp_execute_external_script - это специальная системная хранимая процедура, которая позволяет выполнять R и Python в SQL Server. Есть параметр язык, который позволяет нам выбирать между Python и R. Есть параметр скрипт, куда мы можем вставить код R или Python. Если вы не видите распечатку 7, вернитесь и просмотрите шаги настройки, описанные в этой статье.

Параметр Введение

Теперь, когда мы обсудили базовый пример, давайте начнем добавлять больше частей:

EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';

Службы машинного обучения обеспечивают более естественную связь между SQL и R / Python с параметром входных данных, который принимает любой запрос SQL. Имя входного параметра называется «input_data_1».

Вы можете видеть в коде Python, что есть переменные по умолчанию, определенные для передачи данных между Python и SQL. Имена переменных по умолчанию - «OutputDataSet» и «InputDataSet». Вы можете изменить эти имена по умолчанию, как в этом примере:

EXEC sp_execute_external_script @language =N'Python',
@script = N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo',
@output_data_1_name =N'MyOutput';

Выполняя эти примеры, вы могли заметить, что каждый из них возвращает результат с «(Без имени столбца)»? Вы можете указать имя для возвращаемых столбцов, добавив предложение WITH RESULT SETS в конец оператора, который представляет собой список столбцов и их типов данных, разделенных запятыми.

EXEC sp_execute_external_script  @language =N'Python',
@script=N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo,2 AS bar',
@output_data_1_name =N'MyOutput'
WITH RESULT SETS ((MyColName int, MyColName2 int));

Типы входных / выходных данных

Хорошо, давайте еще немного поговорим о типах данных ввода / вывода, используемых между SQL и Python. Ваш входной оператор SQL SELECT передает Dataframe в python, полагаясь на пакет Python Pandas. Ваш вывод из Python обратно в SQL также должен быть в объекте Pandas Dataframe. Если вам нужно преобразовать скалярные значения в фрейм данных, вот пример:

EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
c = 1/2
d = 1*2
s = pd.Series([c,d])
df = pd.DataFrame(s)
OutputDataSet = df
'

Переменные c и d являются скалярными значениями, которые вы можете добавить в серию pandas, если хотите, а затем преобразовать их в фрейм данных pandas. Здесь показан немного более сложный пример. Прочтите документацию по пакету pandas для Python, чтобы получить более подробную информацию и примеры:

EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
s = {"col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(s)
OutputDataSet = df
'

Теперь вы знаете основы выполнения Python на T-SQL!

Вывод

Знаете ли вы, что вы также можете написать свой код R и Python в своей любимой среде IDE, такой как RStudio и Jupyter Notebooks, а затем удаленно отправить выполнение этого кода на SQL Server? Ознакомьтесь с этими ссылками на документацию, чтобы узнать больше: https://aka.ms/R-RemoteSQLExecution https://aka.ms/PythonRemoteSQLExecution

Посетите страницу документации Службы машинного обучения SQL Server для получения дополнительной документации, примеров и решений. Также ознакомьтесь с этими руководствами по E2E на github.

Хотел бы получить известие от вас! Оставьте комментарий ниже, чтобы задать вопрос или начать обсуждение!