Megosztás a következőn keresztül:


Rövid útmutató: Python-függvények az SQL Machine Learning használatával

A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók Felügyelt Azure SQL-példány

Ebben a rövid útmutatóban megtudhatja, hogyan használhatja a Python matematikai és segédprogram-függvényeket az SQL Server Machine Learning Services, az Azure SQL Managed Instance Machine Learning Services vagy az SQL Server Big Data-fürtök használatával. A statisztikai függvények gyakran bonyolultak a T-SQL-ben való implementáláshoz, de Pythonban csak néhány sornyi kóddal végezhetők el.

Előfeltételek

A rövid útmutató futtatásához a következő előfeltételekre lesz szüksége.

Tárolt eljárás létrehozása véletlenszerű számok létrehozásához

Az egyszerűség kedvéért használjuk az alapértelmezés szerint telepített és betöltött Python-csomagot numpy . A csomag több száz függvényt tartalmaz a gyakori statisztikai feladatokhoz, köztük a random.normal függvényt, amely meghatározott számú véletlenszerű számot hoz létre a normál eloszlás használatával, szórás és középérték alapján.

Például a következő Python-kód 100 számot ad vissza 50-es átlag mellett, 3-as szórással.

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

Ennek a Python kódnak a T-SQL-ből való meghívásához adja hozzá a Python függvényt a Python szkript sp_execute_external_script paraméteréhez. A kimenet adatkeretet vár, ezért az átalakításhoz használja 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));

Mi a teendő, ha egyszerűbbé szeretné tenni a véletlenszerű számok egy másik készletének generálását? Definiálhat egy tárolt eljárást, amely lekéri az argumentumokat a felhasználótól, majd változókként adja át ezeket az argumentumokat a Python-szkriptbe.

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));
  • Az első sor határozza meg a tárolt eljárás végrehajtásakor szükséges SQL-bemeneti paramétereket.

  • A sor a @params Python-kód által használt összes változót és a megfelelő SQL-adattípusokat határozza meg.

  • Az azonnal követendő sorok megfeleltetik az SQL-paraméterneveket a megfelelő Python-változóneveknek.

Most, hogy becsomagolta a Python-függvényt egy tárolt eljárásba, egyszerűen meghívhatja a függvényt, és különböző értékeket adhat át, például a következőt:

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

A Python segédprogramfüggvényeinek használata hibaelhárításhoz

A Python-csomagok számos segédprogramfüggvényt biztosítanak az aktuális Python-környezet vizsgálatához. Ezek a függvények akkor lehetnek hasznosak, ha eltéréseket tapasztal a Python-kód SQL Serveren és külső környezetekben végzett teljesítményében.

A csomag rendszeridőzítési time függvényeivel például mérheti a Python-folyamatok által felhasznált időt, és elemezheti a teljesítményproblémákat.

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

Következő lépések

Ha pythonos gépi tanulási modellt szeretne létrehozni az SQL Machine Learning használatával, kövesse az alábbi rövid útmutatót: