Краткое руководство. Функции Python с машинным обучением SQL
Область применения: SQL Server 2017 (14.x) и более поздних версий Управляемый экземпляр SQL Azure
В этом кратком руководстве вы узнаете, как использовать математические и служебные функции Python в Службах машинного обучения SQL Server, Службах машинного обучения управляемого экземпляра Azure SQL или в Кластерах больших данных SQL Server. Зачастую статистические функции, которые сложно реализовать в T-SQL, выполняются в Python всего парой строк кода.
Необходимые компоненты
Для работы с этим кратким руководством необходимо следующее.
База данных SQL на одной из следующих платформ:
- Службы машинного обучения SQL Server. Сведения об установке см. в руководстве по установке для Windows или руководстве по установке для Linux.
- Кластеры больших данных SQL Server. Применение служб машинного обучения в кластерах больших данных SQL Server.
- Службы машинного обучения в Управляемом экземпляре SQL Azure. Дополнительные сведения см. в статье Общие сведения о службах машинного обучения в управляемом экземпляре SQL Azure.
Средство для выполнения SQL-запросов, содержащих сценарии Python. В этом кратком руководстве используется Azure Data Studio.
Создание хранимой процедуры для формирования случайных чисел
Для простоты давайте воспользуемся пакетом Python numpy
, который устанавливается и загружается по умолчанию. Он содержит сотню функций для общих статистических задач, в том числе функцию random.normal
, которая формирует указанное количество случайных чисел с нормальным распределением при заданном среднем значении и стандартном отклонении.
Например, следующий код Python возвращает 100 чисел со средним значением 50 и стандартным отклонением 3.
numpy.random.normal(size=100, loc=50, scale=3)
Чтобы вызвать эту строку Python из T-SQL, добавьте функцию Python в параметр скрипта Python sp_execute_external_script
. На выходе должен получиться кадр данных, поэтому используйте для преобразования pandas
.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=100, loc=50, scale=3));
'
, @input_data_1 = N' ;'
WITH RESULT SETS(([Density] FLOAT NOT NULL));
Как упростить формирование другого набора случайных чисел? Вы определяете хранимую процедуру, которая получает предоставленные пользователем аргументы и передает их в качестве переменных в скрипт Python.
CREATE PROCEDURE MyPyNorm (
@param1 INT
, @param2 INT
, @param3 INT
)
AS
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=mynumbers, loc=mymean, scale=mysd));
'
, @input_data_1 = N' ;'
, @params = N' @mynumbers int, @mymean int, @mysd int'
, @mynumbers = @param1
, @mymean = @param2
, @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
В первой строке определяется каждый из входных параметров SQL, необходимых при выполнении хранимой процедуры.
Строка, начинающаяся с
@params
, определяет все переменные, используемые в коде Python, и соответствующие типы данных SQL.Следующие строки сопоставляют имена параметров SQL с соответствующими именами переменных Python.
Теперь, когда функция Python упакована в хранимой процедуре, вы можете легко вызвать ее и передать различные значения, как показано ниже:
EXECUTE MyPyNorm @param1 = 100,@param2 = 50, @param3 = 3
Использование служебных функций Python для устранения неполадок
В пакетах Python предусмотрено множество служебных функций для изучения текущей среды Python. Они могут оказаться полезными, если вы нашли несоответствия в выполнении кода Python в SQL Server и внешних средах.
Например, с помощью функций управления системным временем в пакете time
вы можете оценить количество времени, затрачиваемого процессами Python, и проанализировать проблемы, связанные с производительностью.
EXECUTE sp_execute_external_script
@language = N'Python'
, @script = N'
import time
start_time = time.time()
# Run Python processes
elapsed_time = time.time() - start_time
'
, @input_data_1 = N' ;';
Следующие шаги
Сведения о создании модели машинного обучения с использованием Python и машинного обучения SQL приведены в следующем кратком руководстве: