Знаете ли вы, что вы можете писать код R и Python в своих операторах T-SQL? Службы машинного обучения в SQL Server устраняет необходимость в перемещении данных. Вместо передачи больших и конфиденциальных данных по сети или потери точности с образцами csv-файлов, вы можете выполнить код R/Python в своей базе данных. Легко развертывайте свой код R/Python с помощью хранимых процедур SQL, делая их доступными в ваших процессах ETL или в любом приложении. Обучайте и храните модели машинного обучения в своей базе данных, предоставляя информацию о том, где находятся ваши данные.
Вы можете установить и запустить любой из последних пакетов R/Python с открытым исходным кодом для создания приложений глубокого обучения и искусственного интеллекта на больших объемах данных в SQL Server. Мы также предлагаем передовые высокопроизводительные алгоритмы в Microsoft RevoScaleR и RevoScalePy API. Использование их с последними инновациями в мире с открытым исходным кодом позволяет вам обеспечить беспрецедентный выбор, производительность и масштабирование ваших приложений.
Если вы хотите попробовать службы машинного обучения SQL Server, ознакомьтесь с практическим руководством ниже. Если у вас нет служб машинного обучения, установленных в SQL Server, вы сначала захотите ознакомиться с руководством по началу работы, которое я опубликовал здесь: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
В этом уроке я расскажу об основах выполнения R и Python в операторах T-SQL. Если вы предпочитаете учиться с помощью видео, я также опубликовал учебник на YouTube: @ https://youtu.be/ACejZ9optCQ
Основы
Откройте среду 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. Имена переменных по умолчанию – “Набор выходных данных” и “Набор входных данных”. Вы можете изменить эти имена по умолчанию, как в этом примере:
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 передает “фрейм данных” в python, полагаясь на пакет Python Pandas . Ваш вывод из Python обратно в SQL также должен быть в объекте фрейма данных Pandas. Если вам нужно преобразовать скалярные значения в фрейм данных, вот пример:
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. Этот пример показывает немного более сложный пример, перейдите к документации пакета python pandas для получения более подробной информации и примеров:
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, а затем удаленно отправить выполнение этого кода на SQL Server? Ознакомьтесь с этими ссылками на документацию, чтобы узнать больше: https://aka.ms/R-RemoteSQLExecution https://aka.ms/R-RemoteSQLExecution
Дополнительные сведения о документации, примерах и решениях см. на странице SQL Server Документация служб машинного обучения . Ознакомьтесь также с этими учебниками E2E на github .
Хотел бы услышать от вас! Оставьте комментарий ниже, чтобы задать вопрос или начать обсуждение!