Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op: SQL Server 2017 (14.x) en latere versies 
van Azure SQL Managed Instance
In deze quickstart voert u een set eenvoudige Python-scripts uit met behulp van SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services of SQL Server Big Data Clusters. U leert hoe u de opgeslagen procedure sp_execute_external_script gebruikt om het script uit te voeren in een SQL Server-exemplaar.
Vereiste voorwaarden
U hebt de volgende vereisten nodig om deze quickstart uit te voeren.
Een SQL-database op een van deze platforms:
- SQL Server Machine Learning Services-. Zie de Windows-installatiehandleiding of de Linux-installatiehandleiding om te installeren.
 - BIG Data-clusters voor SQL Server 2019. Lees hoe u Machine Learning Services inschakelt in SQL Server 2019 Big Data-clusters.
 - Azure SQL Managed Instance Machine Learning Services. Zie het overzicht van Azure SQL Managed Instance Machine Learning Services voor meer informatie.
 
Een hulpprogramma voor het uitvoeren van SQL-query's die Python-scripts bevatten. In deze quickstart wordt Gebruikgemaakt van Azure Data Studio.
Een eenvoudig script uitvoeren
Als u een Python-script wilt uitvoeren, geeft u het als argument door aan de door het systeem opgeslagen procedure , sp_execute_external_script. Deze door het systeem opgeslagen procedure start de Python-runtime in de context van SQL Machine Learning, geeft gegevens door aan Python, beheert Python-gebruikerssessies veilig en retourneert eventuele resultaten aan de client.
In de volgende stappen voert u dit Python-voorbeeldscript uit in uw database:
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
Open een nieuw queryvenster in Azure Data Studio dat is verbonden met uw SQL-exemplaar.
Geef het volledige Python-script door aan de
sp_execute_external_scriptstored procedure.Het script wordt doorgegeven via het
@scriptargument. Alles in het@scriptargument moet geldige Python-code zijn.EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b print(c, d) 'Het juiste resultaat wordt berekend en de Python-functie
printretourneert het resultaat naar het venster Berichten .Het ziet er ongeveer als volgt uit.
resultaten
STDOUT message(s) from external script: 0.5 2
Een Hallo wereld-script uitvoeren
Een typisch voorbeeldscript is een script dat alleen de string 'Hello World' uitvoert. Voer de volgende opdracht uit.
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
Invoer voor de sp_execute_external_script opgeslagen procedure is onder andere:
| Invoer | Description | 
|---|---|
| @language | definieert de taalextensie die moet worden aangeroepen, in dit geval Python | 
| @script | definieert de opdrachten die worden doorgegeven aan de Python-runtime. Uw volledige Python-script moet in dit argument zijn opgenomen als Unicode-tekst. U kunt de tekst ook toevoegen aan een variabele van het type nvarchar en vervolgens de variabele aanroepen | 
| @input_data_1 | gegevens die door de query worden geretourneerd, doorgegeven aan de Python-runtime, die de gegevens als een gegevensframe retourneert | 
| MET RESULTAATSETS | De clausule definieert het schema van de geretourneerde gegevenstabel voor SQL Machine Learning, waarbij "Hello World" als kolomnaam wordt toegevoegd, int voor het gegevenstype. | 
De opdracht voert de volgende tekst uit:
| Hello World | 
|---|
| 1 | 
Invoer en uitvoer gebruiken
Accepteert standaard sp_execute_external_script één gegevensset als invoer, die doorgaans wordt opgegeven in de vorm van een geldige SQL-query. Vervolgens wordt één Python-gegevensframe als uitvoer geretourneerd.
Voorlopig gebruiken we de standaardinvoer- en uitvoervariabelen van sp_execute_external_script: InputDataSet en OutputDataSet.
Maak een kleine tabel met testgegevens.
CREATE TABLE PythonTestData (col1 INT NOT NULL) INSERT INTO PythonTestData VALUES (1); INSERT INTO PythonTestData VALUES (10); INSERT INTO PythonTestData VALUES (100); GOGebruik de
SELECTinstructie om een query uit te voeren op de tabel.SELECT * FROM PythonTestDataresultaten
              
            Voer het volgende Python-script uit. Hiermee worden de gegevens opgehaald uit de tabel met behulp van de
SELECTinstructie, doorgegeven aan de Python-runtime en worden de gegevens geretourneerd als een gegevensframe. DeWITH RESULT SETScomponent definieert het schema van de geretourneerde gegevenstabel voor SQL, waarbij de kolomnaam NewColName wordt toegevoegd.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));resultaten
              
            Wijzig nu de namen van de invoer- en uitvoervariabelen. De standaardnamen voor invoer- en uitvoervariabelen zijn InputDataSet en OutputDataSet. Met het volgende script worden de namen gewijzigd in SQL_in en SQL_out:
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));Let op dat Python hoofdlettergevoelig is. De invoer- en uitvoervariabelen die worden gebruikt in het Python-script (SQL_out, SQL_in) moeten overeenkomen met de namen die zijn gedefinieerd met
@input_data_1_nameen@output_data_1_name, inclusief hoofdletters.Aanbeveling
Er kan slechts één invoergegevensset worden doorgegeven als parameter en u kunt slechts één gegevensset retourneren. U kunt echter andere gegevenssets aanroepen vanuit uw Python-code en u kunt naast de gegevensset ook uitvoer van andere typen retourneren. U kunt ook het trefwoord OUTPUT toevoegen aan elke parameter om deze met de resultaten te laten retourneren.
U kunt ook waarden genereren met behulp van het Python-script zonder invoergegevens (
@input_data_1is ingesteld op leeg).Met het volgende script wordt de tekst 'hello' en 'world' uitgevoerd.
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));resultaten
              @script als invoer" />
Aanbeveling
Python maakt gebruik van toonaangevende spaties om instructies te groeperen. Als het ingebedde Python-script dus meerdere regels beslaat, zoals in het voorgaande script, probeer dan niet de Python-opdrachten uit te lijnen met de SQL-opdrachten. Met dit script wordt bijvoorbeeld een fout gegenereerd:
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));
Python-versie controleren
Als u wilt zien welke versie van Python op uw server is geïnstalleerd, voert u het volgende script uit.
EXECUTE sp_execute_external_script @language = N'Python'
    , @script = N'
import sys
print(sys.version)
'
GO
De Python-functie print retourneert de versie naar het venster Berichten . In de onderstaande voorbeelduitvoer ziet u dat in dit geval Python versie 3.5.2 is geïnstalleerd.
resultaten
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-pakketten weergeven
Microsoft biedt een aantal Python-pakketten die vooraf zijn geïnstalleerd met Machine Learning Services in SQL Server 2016 (13.x), SQL Server 2017 (14.x) en SQL Server 2019 (15.x). In SQL Server 2022 (16.x) kunt u naar wens aangepaste Python-runtimes en -pakketten downloaden en installeren.
Voer het volgende script uit om een lijst weer te geven van welke Python-pakketten zijn geïnstalleerd, inclusief versie.
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
De lijst is afkomstig uit pkg_resources.working_set Python en wordt als een gegevensframe geretourneerd naar SQL.
Volgende stappen
Volg deze quickstart voor meer informatie over het gebruik van gegevensstructuren bij het gebruik van Python in SQL Machine Learning: