Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 egyszerű Python-szkripteket fog futtatni 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. Megtudhatja, hogyan használhatja a tárolt eljárást sp_execute_external_script a szkript SQL Server-példányban való végrehajtásához.
Előfeltételek
A rövid útmutató futtatásához a következő előfeltételekre lesz szüksége.
SQL-adatbázis az alábbi platformok egyikén:
- SQL Server Machine Learning Services. A telepítéshez tekintse meg a Windows telepítési útmutatóját vagy a Linux telepítési útmutatóját.
- SQL Server 2019 Nagyadat-fürtök. Megtudhatja, hogyan engedélyezheti a Machine Learning Servicest az SQL Server 2019 Big Data-fürtökön.
- Azure SQL Managed Instance Machine Learning Services. További információt az Azure SQL Managed Instance Machine Learning Services áttekintésében talál.
Python-szkripteket tartalmazó SQL-lekérdezések futtatására szolgáló eszköz. Ez a gyors kezdési útmutató az Azure Data Studio használatát követi.
Egyszerű szkript futtatása
Python-szkript futtatásához argumentumként adja át a rendszer által tárolt eljárásnak, sp_execute_external_script. Ez a rendszer által tárolt eljárás elindítja a Python-futtatókörnyezetet az SQL machine learning kontextusában, adatokat továbbít a Pythonnak, biztonságosan kezeli a Python felhasználói munkameneteit, és visszaadja az eredményeket az ügyfélnek.
A következő lépésekben ezt a pythonos példaszkriptet fogja futtatni az adatbázisban:
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
Nyisson meg egy új lekérdezési ablakot az SQL-példányhoz csatlakoztatott Azure Data Studióban .
Adja át a teljes Python-szkriptet a
sp_execute_external_scripttárolt eljárásnak.A szkript át lesz adva az
@scriptargumentumon. Az argumentumon@scriptbelül mindennek érvényes Python-kódnak kell lennie.EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b print(c, d) 'A rendszer kiszámítja a helyes eredményt, és a Python-függvény
printvisszaadja az eredményt az Üzenetek ablaknak.Valahogy így kell kinéznie.
Results
STDOUT message(s) from external script: 0.5 2
Hello World-szkript futtatása
Egy tipikus példaszkript az, amely csak a "Hello World" sztringet adja ki. Futtassa az alábbi parancsot.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'OutputDataSet = InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
A sp_execute_external_script tárolt eljárás bemenetei a következők:
| Bemenet | Description |
|---|---|
| @language | meghatározza a meghívandó nyelvi bővítményt, ebben az esetben a Pythont |
| @script | A Python-futtatókörnyezetnek átadott parancsokat határozza meg. Ebben az argumentumban a teljes Python-szkriptet Unicode-szövegként kell megadni. A szöveget egy nvarchar típusú változóhoz is hozzáadhatja, majd meghívhatja a változót |
| @input_data_1 | a lekérdezés által visszaadott, a Python-futtatókörnyezetnek átadott adatok, amelyek adatkeretként adják vissza az adatokat |
| EREDMÉNYHALMAZOKKAL | Az SQL gépi tanulás során a visszaadott adattábla sémáját meghatározó utasítás az "Hello World" nevű oszlopot, és az adattípusnak int-t ad meg. |
A parancs a következő szöveget adja ki:
| „Helló világ!” alkalmazás |
|---|
| 1 |
Bemenetek és kimenetek használata
Alapértelmezés szerint sp_execute_external_script egyetlen adathalmazt fogad el bemenetként, amelyet általában érvényes SQL-lekérdezés formájában ad meg. Ezután egyetlen Python-adatkeretet ad vissza kimenetként.
Egyelőre az sp_execute_external_script és az OutputDataSet alapértelmezett bemeneti és kimeneti változóit használjuk.
Hozzon létre egy kis táblázatot a tesztadatokból.
CREATE TABLE PythonTestData (col1 INT NOT NULL) INSERT INTO PythonTestData VALUES (1); INSERT INTO PythonTestData VALUES (10); INSERT INTO PythonTestData VALUES (100); GOA
SELECTutasítással kérdezheti le a táblát.SELECT * FROM PythonTestDataResults
Futtassa a következő Python-szkriptet. Az utasítással lekéri az adatokat a
SELECTtáblából, átadja azokat a Python-futtatókörnyezetben, és adatkeretként adja vissza az adatokat. AWITH RESULT SETSzáradék meghatározza az SQL visszaadott adattáblájának sémáját, és hozzáadja a NewColName oszlopnevet.EXECUTE sp_execute_external_script @language = N'Python' , @script = N'OutputDataSet = InputDataSet;' , @input_data_1 = N'SELECT * FROM PythonTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));Results
Most módosítsa a bemeneti és kimeneti változók nevét. Az alapértelmezett bemeneti és kimeneti változók neve az InputDataSet és az OutputDataSet, a következő szkript a neveket SQL_in és SQL_out értékre módosítja:
EXECUTE sp_execute_external_script @language = N'Python' , @script = N'SQL_out = SQL_in;' , @input_data_1 = N'SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));Vegye figyelembe, hogy a Python különbséget tesz a kis- és nagybetűk között. A Python-szkriptben (SQL_out, SQL_in) használt bemeneti és kimeneti változóknak meg kell egyezniük azokkal a nevekkel, amelyeket
@input_data_1_nameés@output_data_1_name-mal definiálnak, beleértve a kis- és nagybetűket.Jótanács
Paraméterként csak egy bemeneti adatkészlet adható át, és csak egy adathalmazt adhat vissza. Azonban meghívhat más adatkészleteket a Python-kódból, és az adatkészleten kívül más típusú kimeneteket is visszaadhat. Az OUTPUT kulcsszót bármely paraméterhez hozzáadhatja, hogy az eredményekkel együtt visszaadja.
Értékeket is létrehozhat csak a Python-szkripttel bemeneti adatok nélkül (
@input_data_1üresre van állítva).A következő szkript a "hello" és a "world" szöveget adja ki.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd mytextvariable = pandas.Series(["hello", " ", "world"]); OutputDataSet = pd.DataFrame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));Results
@script bemenetként" />
Jótanács
A Python vezető szóközöket használ az utasítások csoportosításához. Tehát ha a megtestesített Python-szkript több sorra is kiterjed, mint az előző szkriptben, ne próbálja meg behúzni a Python-parancsokat, hogy összhangban legyenek az SQL-parancsokkal. Ez a szkript például hibát okoz:
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pandas as pd
mytextvariable = pandas.Series(["hello", " ", "world"]);
OutputDataSet = pd.DataFrame(mytextvariable);
'
, @input_data_1 = N''
WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
A Python verziójának ellenőrzése
Ha látni szeretné, hogy a Python melyik verziója van telepítve a kiszolgálón, futtassa a következő szkriptet.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import sys
print(sys.version)
'
GO
A Python-függvény print visszaadja a verziót az Üzenetek ablakba. Az alábbi példakimenetben láthatja, hogy ebben az esetben a Python 3.5.2-es verziója van telepítve.
Results
STDOUT message(s) from external script:
3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]
Python-csomagok listázása
A Microsoft az SQL Server 2016 (13.x), az SQL Server 2017 (14.x) és az SQL Server 2019 (15.x) rendszerben előre telepített Python-csomagokat biztosít. Az SQL Server 2022-ben (16.x) igény szerint letöltheti és telepítheti az egyéni Python-futtatókörnyezeteket és -csomagokat.
A telepített Python-csomagok listájának megtekintéséhez, beleértve a verziót is, futtassa a következő szkriptet.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pkg_resources
import pandas
dists = [str(d) for d in pkg_resources.working_set]
OutputDataSet = pandas.DataFrame(dists)
'
WITH RESULT SETS(([Package] NVARCHAR(max)))
GO
A lista Pythonból származik pkg_resources.working_set , és adatkeretként adja vissza az SQL-nek.
Következő lépések
Ha tudni szeretné, hogyan használhat adatstruktúrákat a Python sql-alapú gépi tanulásban, kövesse az alábbi rövid útmutatót: