Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2017 (14.x) и более поздним версиям
Azure SQL Управляемый экземпляр
В этом кратком руководстве вы узнаете, как использовать математические и служебные функции 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 приведены в следующем кратком руководстве: