Sdílet prostřednictvím


Rychlý start: Funkce Pythonu s využitím strojového učení SQL

Platí pro: SQL Server 2017 (14.x) a novější verze Azure SQL Managed Instance

V tomto rychlém startu se dozvíte, jak pomocí matematických a pomocných funkcí Pythonu používat služby SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services nebo clustery s velkými objemy dat SQL Serveru. Statistické funkce jsou často složité implementovat v jazyce T-SQL, ale v Pythonu je možné provádět pouze s několika řádky kódu.

Požadavky

Ke spuštění tohoto rychlého startu potřebujete následující požadavky.

Vytvoření uložené procedury pro generování náhodných čísel

Pro zjednodušení použijeme balíček Pythonu numpy , který je nainstalovaný a načtený ve výchozím nastavení. Balíček obsahuje stovky funkcí pro běžné statistické úkoly, mezi nimi random.normal funkce, která generuje zadaný počet náhodných čísel pomocí normálního rozdělení vzhledem ke směrodatné odchylkě a střední hodnotě.

Například následující kód Pythonu vrátí 100 čísel s průměrnou hodnotou 50 při směrodatné odchylce 3.

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

Pokud chcete volat tuto funkci Pythonu z T-SQL, přidejte ji do parametru skriptu Pythonusp_execute_external_script. Výstup očekává datový rámec, takže použijte pandas k jeho převodu.

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

Co když chcete usnadnit generování jiné sady náhodných čísel? Definujete uloženou proceduru, která získá argumenty od uživatele, a pak tyto argumenty předáte do skriptu Pythonu jako proměnné.

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));
  • První řádek definuje každý ze vstupních parametrů SQL, které jsou vyžadovány při spuštění uložené procedury.

  • Řádek začínající @params definuje všechny proměnné používané kódem Pythonu a odpovídajícími datovými typy SQL.

  • Řádky, které bezprostředně následují, mapují názvy parametrů SQL na odpovídající názvy proměnných Pythonu.

Teď, když jste zabalili funkci Pythonu do uložené procedury, můžete funkci snadno volat a předat různé hodnoty, například takto:

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

Řešení potíží s využitím funkcí nástroje Pythonu

Balíčky Pythonu poskytují celou řadu funkcí nástroje pro zkoumání aktuálního prostředí Pythonu. Tyto funkce můžou být užitečné, pokud hledáte nesrovnalosti ve způsobu, jakým kód Pythonu funguje v SQL Serveru a v externích prostředích.

Můžete například použít funkce časování systému v time balíčku k měření doby používané procesy Pythonu a analýze problémů s výkonem.

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

Další kroky

Pokud chcete vytvořit model strojového učení pomocí Pythonu se strojovým učením SQL, postupujte podle tohoto rychlého startu: