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


Adatelemzési ügyfél beállítása Python-fejlesztéshez az SQL Server Machine Learning Servicesben

A következőkre vonatkozik: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x) Linux rendszeren

A Python-integráció az SQL Server 2017-ben és újabb verzióiban érhető el, ha a Python lehetőséget a Machine Learning Services (In-Database) telepítésében is használja.

Megjegyzés:

Ez a cikk jelenleg csak linuxos SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) és SQL Server 2019 (15.x) rendszerre vonatkozik.

Ha Python-megoldásokat szeretne fejleszteni és üzembe helyezni az SQL Serverhez, telepítse a Microsoft revoscalepy - és más Python-kódtárait a fejlesztői munkaállomáson. A távoli SQL Server-példányon is található revoscalepy-kódtár koordinálja a számítási kéréseket mindkét rendszer között.

Ebből a cikkből megtudhatja, hogyan konfigurálhat Egy Python fejlesztői munkaállomást, hogy a gépi tanuláshoz és Python-integrációhoz engedélyezett távoli SQL Serverrel kommunikálhasson. A cikk lépéseinek elvégzése után ugyanazok a Python-kódtárak lesznek, mint az SQL Serveren. Azt is tudni fogja, hogyan küldhet le számításokat egy helyi Python-munkamenetből egy távoli Python-munkamenetbe az SQL Serveren.

Az ügyfél-kiszolgáló összetevők diagramja.

A telepítés ellenőrzéséhez használhatja a cikkben ismertetett beépített Jupyter-jegyzetfüzeteket, vagy csatolhatja a kódtárakat a PyCharmhoz vagy bármely más, általában használt IDE-hez.

Gyakran használt eszközök

Akár az SQL-hez új Python-fejlesztő, akár a Pythonhoz és az adatbázis-elemzéshez új SQL-fejlesztő, szüksége lesz egy Python-fejlesztőeszközre és egy T-SQL-lekérdezésszerkesztőre, például az SQL Server Management Studióra (SSMS) az adatbázison belüli elemzés összes funkciójának gyakorlásához.

Python-fejlesztéshez használhatja a Jupyter Notebookokat, amelyek az SQL Server által telepített Anaconda-disztribúcióban vannak csomagolva. Ez a cikk bemutatja, hogyan indíthatja el a Jupyter Notebookokat, hogy a Python-kódot helyileg és távolról is futtathassa az SQL Serveren.

Az SSMS egy külön letöltés, amely hasznos tárolt eljárások létrehozására és futtatására az SQL Serveren, beleértve a Python-kódot tartalmazó eljárásokat is. A Jupyter Notebookokban írt szinte minden Python-kód beágyazható egy tárolt eljárásba. Az SSMS-sel és a beágyazott Pythonnal kapcsolatos további rövid útmutatók segítségével megismerheti az SSMS-t és a beágyazott Pythont.

1 – Python-csomagok telepítése

A helyi munkaállomásoknak ugyanolyan Python-csomagverziókkal kell rendelkezniük, mint az SQL Serveren, beleértve az alap Anaconda 4.2.0-s verzióját Python 3.5.2-es disztribúcióval és Microsoft-specifikus csomagokat.

A telepítési szkript három Microsoft-specifikus kódtárat ad hozzá a Python-ügyfélhez. A szkript a következőket telepíti:

  • A revoscalepy az adatforrás-objektumok és a számítási környezet meghatározására szolgál.
  • a microsoftml gépi tanulási algoritmusokat biztosít.
  • Az azureml az önálló kiszolgálókörnyezethez társított üzemeltetési feladatokra vonatkozik, és az adatbázison belüli elemzésekhez korlátozottan használható.
  1. Töltse le a telepítési szkriptet. A megfelelő GitHub-oldalon válassza a Nyers fájl letöltése lehetőséget.

    • https://aka.ms/mls-py telepíti a Microsoft Python-csomagok 9.2.1-es verzióját. Ez a verzió egy alapértelmezett SQL Server-példánynak felel meg.

    • https://aka.ms/mls93-py telepíti a Microsoft Python-csomagok 9.3-at.

  2. Nyisson meg egy Emelt szintű rendszergazdai engedélyekkel rendelkező PowerShell-ablakot (kattintson a jobb gombbal a Futtatás rendszergazdaként elemre).

  3. Nyissa meg azt a mappát, amelyben letöltötte a telepítőt, és futtassa a szkriptet. Adja hozzá a -InstallFolder parancssori argumentumot a tárak mappahelyének megadásához. Például:

    cd {{download-directory}}
    .\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
    

Ha kihagyja a telepítési mappát, az alapértelmezett érték a következő %ProgramFiles%\Microsoft\PyForMLS.

A telepítés némi időt vesz igénybe. A PowerShell-ablakban figyelheti az előrehaladást. Ha a telepítés befejeződött, teljes csomagkészlettel rendelkezik.

Jótanács

Javasoljuk a Python for Windows GYIK-ot, amely általános információkat nyújt a Python-programok Windows rendszeren való futtatásáról.

2 – Végrehajtható fájlok megkeresése

A PowerShellben is listázhatja a telepítési mappa tartalmát, hogy meggyőződjön arról, hogy a Python.exe, szkriptek és egyéb csomagok telepítve vannak.

  1. Lépjen cd \ a gyökérmeghajtóra, majd adja meg az előző lépésben megadott -InstallFolder elérési utat. Ha a telepítés során kihagyta ezt a paramétert, az alapértelmezett érték a következő cd %ProgramFiles%\Microsoft\PyForMLS.

  2. Adja meg dir *.exe a végrehajtható elemek listáját. Látnia kell python.exe, pythonw.exeés uninstall-anaconda.exe.

    Képernyőkép egy PowerShell-terminálról, amelyen a dir *.exefuttatásából származó Python-végrehajtható fájlok listája látható.

A Python több verziójával rendelkező rendszereken ne felejtse el használni ezt a Python.exe, ha revoscalepy-t és más Microsoft-csomagokat szeretne betölteni.

Megjegyzés:

A telepítési szkript nem módosítja a PATH környezeti változót a számítógépen, ami azt jelenti, hogy az újonnan telepített Python-értelmező és modulok nem érhetők el automatikusan más eszközök számára. Ha segítségre van szüksége a Python-értelmező és a kódtár eszközökhöz való összekapcsolásához, olvassa el az IDE telepítése című témakört.

3 – Jupyter-jegyzetfüzetek megnyitása

Az Anaconda jupyter notebookokat is tartalmaz. Következő lépésként hozzon létre egy jegyzetfüzetet, és futtasson néhány Python-kódot az imént telepített kódtárakat tartalmazóan.

  1. A PowerShell parancssorában, még a könyvtárban, nyissa meg a %ProgramFiles%\Microsoft\PyForMLS Jupyter Notebooks fájlt a Szkriptek mappából:

    .\Scripts\jupyter-notebook
    

    A jegyzetfüzetnek meg kell nyílnia az alapértelmezett böngészőben a következő helyen https://localhost:8889/tree: .

    A kezdés másik módja, ha duplán kattint jupyter-notebook.exe.

  2. Válassza az Új , majd a Python 3 lehetőséget.

    Képernyőkép egy Jupyter-jegyzetfüzetről a New Python 3 kiválasztásával.

  3. Adja meg import revoscalepy és futtassa a parancsot az egyik Microsoft-specifikus kódtár betöltéséhez.

  4. Írja be és futtassa print(revoscalepy.__version__) a verzióinformáció megjelenítéséhez. A 9.2.1-nek vagy a 9.3.0-nak kell megjelennie. Ezen verziók bármelyikét használhatja revoscalepy-val a kiszolgálón.

  5. Adjon meg egy összetettebb utasítássorozatot. Ez a példa egy helyi adatkészleten rx_summary használatával generál összefoglaló statisztikákat. Más függvények lekérik a mintaadatok helyét, és létrehoznak egy adatforrás-objektumot egy helyi .xdf-fájlhoz.

    import os
    from revoscalepy import rx_summary
    from revoscalepy import RxXdfData
    from revoscalepy import RxOptions
    sample_data_path = RxOptions.get_option("sampleDataDir")
    print(sample_data_path)
    ds = RxXdfData(os.path.join(sample_data_path, "AirlineDemoSmall.xdf"))
    summary = rx_summary("ArrDelay+DayOfWeek", ds)
    print(summary)
    

Az alábbi képernyőképen a bemenet és a kimenet egy része látható, a rövidség kedvéért levágva.

Képernyőkép egy Jupyter-jegyzetfüzetről, amelyen a revoscalepy bemenetei és kimenete látható.

4 – SQL-engedélyek lekérése

Ha szkriptek futtatásához és adatok feltöltéséhez szeretne csatlakozni egy SQL Server-példányhoz, érvényes bejelentkezéssel kell rendelkeznie az adatbázis-kiszolgálón. SQL-bejelentkezést vagy integrált Windows-hitelesítést is használhat. Általában azt javasoljuk, hogy windowsos integrált hitelesítést használjon, de az SQL-bejelentkezés használata bizonyos esetekben egyszerűbb, különösen akkor, ha a szkript kapcsolati sztringeket tartalmaz a külső adatokhoz.

A kód futtatásához használt fióknak legalább engedéllyel kell rendelkeznie a használt adatbázisokból való olvasáshoz, valamint a külső szkriptek végrehajtására vonatkozó speciális engedéllyel. A legtöbb fejlesztőnek szüksége van arra is, hogy tárolt eljárásokat hozzon létre, és adatokat írjon betanítási adatokat vagy pontozott adatokat tartalmazó táblákba.

Kérje meg az adatbázis rendszergazdáját , hogy konfigurálja a következő engedélyeket a fiókjához abban az adatbázisban, ahol a Pythont használja:

  • FUTTASSON BÁRMILYEN KÜLSŐ SZKRIPTET a Python kiszolgálón való futtatásához.
  • db_datareader jogosultságokat a modell betanításához használt lekérdezések futtatásához.
  • db_datawriter betanítási vagy pontozott adatok írásához.
  • db_owner objektumokat, például tárolt eljárásokat, táblákat, függvényeket hozhat létre. Mintaadatbázisok létrehozásához és teszteléséhez db_owner is szükség van.

Ha a kódhoz olyan csomagokra van szükség, amelyek alapértelmezés szerint nincsenek telepítve az SQL Serverrel, kérje meg az adatbázis-rendszergazdát, hogy telepítse a csomagokat a példányra. Az SQL Server biztonságos környezet, és korlátozások vonatkoznak a csomagok telepítésének helyére. A csomagok a kód részeként történő alkalmi telepítése nem ajánlott, még akkor sem, ha rendelkezik jogosultságokkal. Emellett mindig alaposan vegye figyelembe a biztonsági következményeket, mielőtt új csomagokat telepítene a kiszolgálótárba.

5 – Tesztadatok létrehozása

Ha rendelkezik engedéllyel adatbázis létrehozásához a távoli kiszolgálón, az alábbi kód futtatásával létrehozhatja a jelen cikk további lépéseihez használt Írisz demo adatbázist.

5–1 – Az irissql-adatbázis távoli létrehozása

import pyodbc

# creating a new db to load Iris sample in
new_db_name = "irissql"
connection_string = "Driver=SQL Server;Server=localhost;Database={0};Trusted_Connection=Yes;" 
                        # you can also swap Trusted_Connection for UID={your username};PWD={your password}
cnxn = pyodbc.connect(connection_string.format("master"), autocommit=True)
cnxn.cursor().execute("IF EXISTS(SELECT * FROM sys.databases WHERE [name] = '{0}') DROP DATABASE {0}".format(new_db_name))
cnxn.cursor().execute("CREATE DATABASE " + new_db_name)
cnxn.close()

print("Database created")

5-2 – Íriszminta importálása az SkLearnből

from sklearn import datasets
import pandas as pd

# SkLearn has the Iris sample dataset built in to the package
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

5–3 – Revoscalepy API-k használata tábla létrehozásához és az Írisz-adatok betöltéséhez

from revoscalepy import RxSqlServerData, rx_data_step

# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="iris_data")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)

print("New Table Created: Iris")
print("Sklearn Iris sample loaded into Iris table")

6 – Távoli kapcsolat tesztelése

A következő lépés kipróbálása előtt győződjön meg arról, hogy rendelkezik engedélyekkel az SQL Server-példányhoz és egy kapcsolati sztringhez az Írisz-mintaadatbázishoz. Ha az adatbázis nem létezik, és rendelkezik megfelelő engedélyekkel, az alábbi beágyazott utasítások segítségével hozhat létre adatbázist.

Cserélje le a kapcsolati sztringet érvényes értékekre. A mintakód a "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;" -t használja, de a kódnak meg kell adnia egy távoli szervert, esetleg egy példánynévvel és olyan hitelesítő opcióval, amely az adatbázisbejelentkezéshez van hozzárendelve.

6–1 Függvény definiálása

Az alábbi kód egy függvényt határoz meg, amelyet egy későbbi lépésben fog elküldeni az SQL Servernek. A végrehajtás során a távoli kiszolgálón lévő adatok és kódtárak (revoscalepy, pandas, matplotlib) használatával hozza létre az írisz adatkészlet pontdiagramjait. Visszaadja a .png bájtfolyamát a Jupyter Notebooksnak, hogy megjelenítse a böngészőben.

def send_this_func_to_sql():
    from revoscalepy import RxSqlServerData, rx_import
    from pandas.tools.plotting import scatter_matrix
    import matplotlib.pyplot as plt
    import io
    
    # remember the scope of the variables in this func are within our SQL Server Python Runtime
    connection_string = "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
    
    # specify a query and load into pandas dataframe df
    sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from iris_data")
    df = rx_import(sql_query)
    
    scatter_matrix(df)
    
    # return bytestream of image created by scatter_matrix
    buf = io.BytesIO()
    plt.savefig(buf, format="png")
    buf.seek(0)
    
    return buf.getvalue()

6–2 A függvény elküldése az SQL Serverre

Ebben a példában hozza létre a távoli számítási környezetet, majd küldje el a függvény végrehajtását az SQL Servernek rx_exec. A rx_exec függvény azért hasznos, mert argumentumként elfogad egy számítási környezetet. Minden olyan függvénynek, amelyet távolról szeretne végrehajtani, rendelkeznie kell egy számítási környezet argumentumának. Egyes függvények, például rx_lin_mod közvetlenül támogatják ezt az argumentumot. Olyan műveletek esetén, amelyek nem, a rx_exec használatával távoli számítási környezetben kézbesítheti a kódot.

Ebben a példában nem kellett nyers adatokat továbbítani az SQL Serverről a Jupyter Notebookba. Minden számítás az Írisz-adatbázisban történik, és csak a képfájl lesz visszaadva az ügyfélnek.

from IPython import display
import matplotlib.pyplot as plt 
from revoscalepy import RxInSqlServer, rx_exec

# create a remote compute context with connection to SQL Server
sql_compute_context = RxInSqlServer(connection_string=connection_string.format(new_db_name))

# use rx_exec to send the function execution to SQL Server
image = rx_exec(send_this_func_to_sql, compute_context=sql_compute_context)[0]

# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)

Az alábbi képernyőképen a bemeneti adatok és a pontdiagram ábra eredménye látható.

A pontdiagram kimenetét megjelenítő Jupyter-jegyzetfüzet képernyőképe.

7 – Python indítása eszközökről

Mivel a fejlesztők gyakran dolgoznak a Python több verziójával, a telepítő nem adja hozzá a Pythont a PATH-hoz. A telepítő által telepített Python-végrehajtható állomány és kódtárak használatához csatlakoztassa az IDE-t a Python.exe útvonalához, amely revoscalepy-t és microsoftml-t is biztosít.

Parancssor

Ha Python.exe%ProgramFiles%\Microsoft\PyForMLS futtat (vagy bármilyen helyről, amelyet a Python-ügyfélkódtár telepítéséhez megadott), hozzáférhet a teljes Anaconda-disztribúcióhoz, valamint a Microsoft Python-modulokhoz, a revoscalepy-hoz és a microsoftml-hez.

  1. Nyissa meg %ProgramFiles%\Microsoft\PyForMLS és hajtsa végre Python.exe.
  2. Interaktív súgó megnyitása: help().
  3. Írja be a modul nevét a parancssorba: help> revoscalepy. A súgó visszaadja a nevet, a csomag tartalmát, a verziót és a fájl helyét.
  4. Adja vissza a verzió- és csomaginformációkat a súgóban> : revoscalepy. Nyomja le többször az Enter billentyűt a súgóból való kilépéshez.
  5. Modul importálása: import revoscalepy.

Jupyter notebookok

Ez a cikk a beépített Jupyter Notebookok használatával mutatja be a függvényhívásokat a revoscalepy felé. Ha még nem használja ezt az eszközt, az alábbi képernyőkép bemutatja, hogyan illeszkednek egymáshoz a darabok, és miért "csak működik".

A szülőmappa %ProgramFiles%\Microsoft\PyForMLS az Anacondát és a Microsoft-csomagokat tartalmazza. A Jupyter-jegyzetfüzetek az Anacondában, a Szkriptek mappában találhatók, a Python-végrehajtható elemek pedig automatikusan regisztrálva lesznek a Jupyter Notebookokkal. A webhelycsomagok alatt található csomagok importálhatók egy jegyzetfüzetbe, beleértve az adatelemzéshez és a gépi tanuláshoz használt három Microsoft-csomagot is.

Képernyőkép a Windows Intézőből a végrehajtható fájlok és tárak mappájáról.

Ha egy másik IDE-t használ, csatlakoztatnia kell a Python-végrehajtható fájlokat és függvénytárakat az eszközhöz. A következő szakaszok útmutatást nyújtanak a gyakran használt eszközökhöz.

Visual Studio

Ha Pythonnal rendelkezik a Visual Studióban, az alábbi konfigurációs beállítások segítségével hozzon létre egy Olyan Python-környezetet, amely tartalmazza a Microsoft Python-csomagokat.

Konfigurációs beállítás value
Előtag útvonal %ProgramFiles%\Microsoft\PyForMLS
Értelmező elérési útja %ProgramFiles%\Microsoft\PyForMLS\python.exe
Ablakos felületű értelmező %ProgramFiles%\Microsoft\PyForMLS\pythonw.exe

A Python-környezetek konfigurálásával kapcsolatos segítségért lásd: Python-környezetek kezelése a Visual Studióban.

PyCharm

A PyCharmban állítsa az értelmezőt a telepített Python-végrehajthatóra.

  1. Új projektben a Beállítások területen válassza a Helyi hozzáadása lehetőséget.

  2. Adja meg a %ProgramFiles%\Microsoft\PyForMLS\.

Most már importálhat revoscalepy-, microsoftml- vagy azureml-modulokat . Az Eszközök>Python-konzolt is választhatja egy interaktív ablak megnyitásához.