Menyiapkan klien ilmu data untuk pengembangan Python di SQL Server Pembelajaran Mesin Services
Berlaku untuk: SQL Server 2016 (13.x), SQL Server 2017 (14.x), dan SQL Server 2019 (15.x), SQL Server 2019 (15.x) - Linux
Integrasi Python tersedia di SQL Server 2017 dan yang lebih baru, saat Anda menyertakan opsi Python dalam penginstalan Pembelajaran Mesin Services (In-Database).
Catatan
Saat ini artikel ini berlaku untuk SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x), dan SQL Server 2019 (15.x) hanya untuk Linux.
Untuk mengembangkan dan menyebarkan solusi Python untuk SQL Server, instal revoscalepy Microsoft dan pustaka Python lainnya di stasiun kerja pengembangan Anda. Pustaka revoscalepy, yang juga ada pada instans SQL Server jarak jauh, mengoordinasikan permintaan komputasi antara kedua sistem.
Dalam artikel ini, pelajari cara mengonfigurasi stasiun kerja pengembangan Python sehingga Anda dapat berinteraksi dengan SQL Server jarak jauh yang diaktifkan untuk pembelajaran mesin dan integrasi Python. Setelah menyelesaikan langkah-langkah dalam artikel ini, Anda akan memiliki pustaka Python yang sama dengan yang ada di SQL Server. Anda juga akan tahu cara mendorong komputasi dari sesi Python lokal ke sesi Python jarak jauh di SQL Server.
Untuk memvalidasi penginstalan, Anda dapat menggunakan Jupyter Notebooks bawaan seperti yang dijelaskan dalam artikel ini, atau menautkan pustaka ke PyCharm atau IDE lain yang biasanya Anda gunakan.
Tip
Untuk demonstrasi video latihan ini, lihat Menjalankan R dan Python dari jarak jauh di SQL Server dari Jupyter Notebooks.
Alat yang umum digunakan
Baik Anda adalah pengembang Python yang baru menggunakan SQL, atau pengembang SQL yang baru menggunakan Python dan analitik dalam database, Anda akan memerlukan alat pengembangan Python dan editor kueri T-SQL seperti SQL Server Management Studio (SSMS) untuk menjalankan semua kemampuan analitik dalam database.
Untuk pengembangan Python, Anda dapat menggunakan Jupyter Notebooks, yang dibundel dalam distribusi Anaconda yang diinstal oleh SQL Server. Artikel ini menjelaskan cara memulai Jupyter Notebooks sehingga Anda dapat menjalankan kode Python secara lokal dan jarak jauh di SQL Server.
SSMS adalah unduhan terpisah, berguna untuk membuat dan menjalankan prosedur tersimpan di SQL Server, termasuk yang berisi kode Python. Hampir semua kode Python yang Anda tulis di Jupyter Notebooks dapat disematkan dalam prosedur tersimpan. Anda dapat menelusuri mulai cepat lainnya untuk mempelajari tentang SSMS dan Python yang disematkan.
1 - Menginstal paket Python
Stasiun kerja lokal harus memiliki versi paket Python yang sama dengan yang ada di SQL Server, termasuk Anaconda dasar 4.2.0 dengan distribusi Python 3.5.2, dan paket khusus Microsoft.
Skrip penginstalan menambahkan tiga pustaka khusus Microsoft ke klien Python. Skrip diinstal:
- revoscalepy digunakan untuk menentukan objek sumber data dan konteks komputasi.
- microsoftml menyediakan algoritma pembelajaran mesin.
- azureml berlaku untuk tugas operasionalisasi yang terkait dengan konteks server mandiri dan mungkin penggunaan terbatas untuk analitik dalam database.
Unduh skrip penginstalan. Pada halaman GitHub berikut yang sesuai, pilih Unduh file mentah.
https://aka.ms/mls-py menginstal paket Microsoft Python versi 9.2.1. Versi ini sesuai dengan instans SQL Server default.
https://aka.ms/mls93-py menginstal paket Microsoft Python versi 9.3.
Buka jendela PowerShell dengan izin administrator yang ditinggikan (klik kanan Jalankan sebagai administrator).
Buka folder tempat Anda mengunduh alat penginstal dan jalankan skrip.
-InstallFolder
Tambahkan argumen baris perintah untuk menentukan lokasi folder untuk pustaka. Contohnya:cd {{download-directory}} .\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
Jika Anda menghilangkan folder penginstalan, defaultnya adalah %ProgramFiles%\Microsoft\PyForMLS
.
Penginstalan membutuhkan waktu untuk menyelesaikannya. Anda dapat memantau kemajuan di jendela PowerShell. Setelah penyiapan selesai, Anda memiliki sekumpulan paket lengkap.
Tip
Kami merekomendasikan FAQ Python untuk Windows untuk tujuan umum informasi tentang menjalankan program Python di Windows.
2 - Temukan executable
Masih di PowerShell, cantumkan konten folder penginstalan untuk mengonfirmasi bahwa Python.exe, skrip, dan paket lainnya diinstal.
Masukkan
cd \
untuk masuk ke drive akar, lalu masukkan jalur yang Anda tentukan-InstallFolder
di langkah sebelumnya. Jika Anda menghilangkan parameter ini selama penginstalan, defaultnya adalahcd %ProgramFiles%\Microsoft\PyForMLS
.Masukkan
dir *.exe
untuk mencantumkan executable. Anda akan melihat python.exe, pythonw.exe, dan uninstall-anaconda.exe.
Pada sistem yang memiliki beberapa versi Python, ingatlah untuk menggunakan Python.exe khusus ini jika Anda ingin memuat revoscalepy dan paket Microsoft lainnya.
Catatan
Skrip penginstalan tidak mengubah variabel lingkungan PATH di komputer Anda, yang berarti bahwa penerjemah dan modul python baru yang baru saja Anda instal tidak tersedia secara otomatis untuk alat lain yang mungkin Anda miliki. Untuk bantuan dalam menautkan penerjemah dan pustaka Python ke alat, lihat Menginstal IDE.
3 - Buka Jupyter Notebooks
Anaconda menyertakan Jupyter Notebooks. Sebagai langkah berikutnya, buat buku catatan dan jalankan beberapa kode Python yang berisi pustaka yang baru saja Anda instal.
Pada perintah PowerShell, masih di
%ProgramFiles%\Microsoft\PyForMLS
direktori, buka Jupyter Notebooks dari folder Skrip:.\Scripts\jupyter-notebook
Notebook harus terbuka di browser default Anda di
https://localhost:8889/tree
.Cara lain untuk memulai adalah klik dua kali jupyter-notebook.exe.
Pilih Baru lalu pilih Python 3.
Masukkan
import revoscalepy
dan jalankan perintah untuk memuat salah satu pustaka khusus Microsoft.Masukkan dan jalankan
print(revoscalepy.__version__)
untuk mengembalikan informasi versi. Anda akan melihat 9.2.1 atau 9.3.0. Anda dapat menggunakan salah satu versi ini dengan revoscalepy di server.Masukkan serangkaian pernyataan yang lebih kompleks. Contoh ini menghasilkan statistik ringkasan menggunakan rx_summary melalui himpunan data lokal. Fungsi lain mendapatkan lokasi data sampel dan membuat objek sumber data untuk file .xdf lokal.
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)
Cuplikan layar berikut menunjukkan input dan sebagian output, dipangkas untuk brevity.
4 - Mendapatkan izin SQL
Untuk menyambungkan ke instans SQL Server untuk menjalankan skrip dan mengunggah data, Anda harus memiliki login yang valid di server database. Anda dapat menggunakan login SQL atau autentikasi Windows terintegrasi. Kami umumnya menyarankan Agar Anda menggunakan autentikasi terintegrasi Windows, tetapi menggunakan login SQL lebih sederhana untuk beberapa skenario, terutama ketika skrip Anda berisi string koneksi ke data eksternal.
Minimal, akun yang digunakan untuk menjalankan kode harus memiliki izin untuk membaca dari database yang sedang Anda kerjakan, ditambah izin khusus JALANKAN SKRIP EKSTERNAL APA PUN. Sebagian besar pengembang juga memerlukan izin untuk membuat prosedur tersimpan, dan menulis data ke dalam tabel yang berisi data pelatihan atau data yang dinilai.
Minta administrator database untuk mengonfigurasi izin berikut untuk akun Anda, di database tempat Anda menggunakan Python:
- JALANKAN SKRIP EKSTERNAL APA PUN untuk menjalankan Python di server.
- db_datareader hak istimewa untuk menjalankan kueri yang digunakan untuk melatih model.
- db_datawriter menulis data pelatihan atau data yang dinilai.
- db_owner untuk membuat objek seperti prosedur tersimpan, tabel, fungsi. Anda juga perlu db_owner untuk membuat sampel dan menguji database.
Jika kode Anda memerlukan paket yang tidak diinstal secara default dengan SQL Server, atur dengan administrator database agar paket diinstal dengan instans. SQL Server adalah lingkungan yang aman dan ada batasan di mana paket dapat diinstal. Penginstalan paket ad hoc sebagai bagian dari kode Anda tidak disarankan, bahkan jika Anda memiliki hak. Selain itu, selalu pertimbangkan implikasi keamanan dengan hati-hati sebelum menginstal paket baru di pustaka server.
5 - Membuat data pengujian
Jika Anda memiliki izin untuk membuat database di server jarak jauh, Anda bisa menjalankan kode berikut untuk membuat database demo Iris yang digunakan untuk langkah-langkah yang tersisa dalam artikel ini.
5-1 - Membuat database irissql dari jarak jauh
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 - Mengimpor sampel Iris dari SkLearn
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 - Gunakan API Revoscalepy untuk membuat tabel dan memuat data Iris
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 - Uji koneksi jarak jauh
Sebelum mencoba langkah berikutnya, pastikan Anda memiliki izin pada instans SQL Server dan string koneksi ke database sampel Iris. Jika database tidak ada dan Anda memiliki izin yang memadai, Anda bisa membuat database menggunakan instruksi sebaris ini.
Ganti string koneksi dengan nilai yang valid. Kode sampel menggunakan "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
tetapi kode Anda harus menentukan server jarak jauh, mungkin dengan nama instans, dan opsi kredensial yang memetakan ke login database.
6-1 Tentukan fungsi
Kode berikut menentukan fungsi yang akan Anda kirim ke SQL Server di langkah selanjutnya. Saat dijalankan, ia menggunakan data dan pustaka (revoscalepy, pandas, matplotlib) di server jarak jauh untuk membuat plot sebar dari himpunan data iris. Ini mengembalikan bytestream .png kembali ke Jupyter Notebooks untuk dirender di browser.
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 Kirim fungsi ke SQL Server
Dalam contoh ini, buat konteks komputasi jarak jauh lalu kirim eksekusi fungsi ke SQL Server dengan rx_exec. Fungsi rx_exec berguna karena menerima konteks komputasi sebagai argumen. Fungsi apa pun yang ingin Anda jalankan dari jarak jauh harus memiliki argumen konteks komputasi. Beberapa fungsi, seperti rx_lin_mod mendukung argumen ini secara langsung. Untuk operasi yang tidak, Anda dapat menggunakan rx_exec untuk mengirimkan kode Anda dalam konteks komputasi jarak jauh.
Dalam contoh ini, tidak ada data mentah yang harus ditransfer dari SQL Server ke Jupyter Notebook. Semua komputasi terjadi dalam database Iris dan hanya file gambar yang dikembalikan ke klien.
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)
Cuplikan layar berikut menunjukkan input dan output plot sebar.
7 - Mulai Python dari alat
Karena pengembang sering bekerja dengan beberapa versi Python, penyiapan tidak menambahkan Python ke PATH Anda. Untuk menggunakan Python executable dan pustaka yang diinstal oleh penyiapan, tautkan IDE Anda ke Python.exe di jalur yang juga menyediakan revoscalepy dan microsoftml.
Baris perintah
Saat Anda menjalankan Python.exe dari %ProgramFiles%\Microsoft\PyForMLS
(atau lokasi apa pun yang Anda tentukan untuk penginstalan pustaka klien Python), Anda memiliki akses ke distribusi Anaconda lengkap ditambah modul Microsoft Python, revoscalepy, dan microsoftml.
- Buka dan jalankan
%ProgramFiles%\Microsoft\PyForMLS
Python.exe. - Buka bantuan interaktif:
help()
. - Ketik nama modul pada perintah bantuan:
help> revoscalepy
. Bantuan mengembalikan nama, konten paket, versi, dan lokasi file. - Kembalikan informasi versi dan paket pada prompt bantuan> :
revoscalepy
. Tekan Enter beberapa kali untuk keluar dari bantuan. - Impor modul:
import revoscalepy
.
Jupyter Notebooks
Artikel ini menggunakan Jupyter Notebooks bawaan untuk menunjukkan panggilan fungsi untuk mencabut skala. Jika Anda baru menggunakan alat ini, cuplikan layar berikut menggambarkan bagaimana potongan-potongan cocok bersama dan mengapa semuanya "hanya berfungsi".
Folder %ProgramFiles%\Microsoft\PyForMLS
induk berisi Anaconda ditambah paket Microsoft. Jupyter Notebooks disertakan dalam Anaconda, di bawah folder Skrip, dan executable Python terdaftar otomatis dengan Jupyter Notebooks. Paket yang ditemukan di bawah paket situs dapat diimpor ke dalam buku catatan, termasuk tiga paket Microsoft yang digunakan untuk ilmu data dan pembelajaran mesin.
Jika Anda menggunakan IDE lain, Anda harus menautkan executable Python dan pustaka fungsi ke alat Anda. Bagian berikut ini menyediakan instruksi untuk alat yang umum digunakan.
Visual Studio
Jika Anda memiliki Python di Visual Studio, gunakan opsi konfigurasi berikut untuk membuat lingkungan Python yang menyertakan paket Microsoft Python.
Pengaturan Konfigurasi | value |
---|---|
Jalur prefiks | %ProgramFiles%\Microsoft\PyForMLS |
Jalur Interpreter | %ProgramFiles%\Microsoft\PyForMLS\python.exe |
Interpreter berjendela | %ProgramFiles%\Microsoft\PyForMLS\pythonw.exe |
Untuk bantuan dalam mengonfigurasi lingkungan Python, lihat Mengelola lingkungan Python di Visual Studio.
PyCharm
Di PyCharm, atur interpreter ke Python executable yang terinstal.
Di proyek baru, di Pengaturan, pilih Tambahkan Lokal.
Memasuki
%ProgramFiles%\Microsoft\PyForMLS\
.
Anda sekarang dapat mengimpor modul revoscalepy, microsoftml, atau azureml . Anda juga dapat memilih Alat>Python Console untuk membuka jendela interaktif.