Delen via


Quickstart: Python-functies met SQL Machine Learning

Van toepassing op: SQL Server 2017 (14.x) en latere versies van Azure SQL Managed Instance

In deze quickstart leert u hoe u wiskundige Python- en hulpprogrammafuncties gebruikt met SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services of SQL Server Big Data Clusters. Statistische functies zijn vaak ingewikkeld om te implementeren in T-SQL, maar kunnen worden uitgevoerd in Python met slechts een paar regels code.

Vereiste voorwaarden

U hebt de volgende vereisten nodig om deze quickstart uit te voeren.

Een opgeslagen procedure maken om willekeurige getallen te genereren

Ter vereenvoudiging gebruiken we het Python-pakket numpy , dat standaard is geïnstalleerd en geladen. Het pakket bevat honderden functies voor algemene statistische taken, waaronder de random.normal functie, die een opgegeven aantal willekeurige getallen genereert met behulp van de normale verdeling, op basis van een standaarddeviatie en een gemiddelde.

De volgende Python-code retourneert bijvoorbeeld 100 getallen op een gemiddelde van 50, op basis van een standaarddeviatie van 3.

numpy.random.normal(size=100, loc=50, scale=3)

Als u deze regel van Python vanuit T-SQL wilt aanroepen, voegt u de Python-functie toe aan de python-scriptparameter van sp_execute_external_script. In de uitvoer wordt een gegevensframe verwacht, dus gebruik pandas om het te converteren.

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));

Wat moet u doen als u het eenvoudiger wilt maken om een andere set willekeurige getallen te genereren? U definieert een opgeslagen procedure die de argumenten van de gebruiker ophaalt en deze argumenten vervolgens doorgeeft in het Python-script als variabelen.

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));
  • De eerste regel definieert elk van de SQL-invoerparameters die vereist zijn wanneer de opgeslagen procedure wordt uitgevoerd.

  • De regel die begint met @params definieert alle variabelen die worden gebruikt door de Python-code en de bijbehorende SQL-gegevenstypen.

  • De regels die direct volgen, wijzen de SQL-parameternamen toe aan de bijbehorende Python-variabelenamen.

Nu u de Python-functie in een opgeslagen procedure hebt verpakt, kunt u de functie eenvoudig aanroepen en verschillende waarden doorgeven, zoals:

EXECUTE MyPyNorm @param1 = 100,@param2 = 50, @param3 = 3

Python-hulpprogrammafuncties gebruiken voor probleemoplossing

Python-pakketten bieden verschillende hulpprogrammafuncties voor het onderzoeken van de huidige Python-omgeving. Deze functies kunnen handig zijn als u verschillen vindt in de manier waarop uw Python-code wordt uitgevoerd in SQL Server en in externe omgevingen.

U kunt bijvoorbeeld systeemtijdfuncties in het time pakket gebruiken om de hoeveelheid tijd te meten die wordt gebruikt door Python-processen en prestatieproblemen te analyseren.

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' ;';

Volgende stappen

Volg deze quickstart om een machine learning-model te maken met behulp van Python en SQL machine learning.