Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2017 (14.x) dan versi yang
lebih baru Azure SQL Managed Instance
Dalam mulai cepat ini, Anda akan menjalankan serangkaian skrip Python sederhana menggunakan SQL Server Pembelajaran Mesin Services, Azure SQL Managed Instance Pembelajaran Mesin Services, atau SQL Server Kluster Big Data. Anda akan mempelajari cara menggunakan prosedur tersimpan sp_execute_external_script untuk menjalankan skrip dalam instans SQL Server.
Prasyarat
Anda memerlukan prasyarat berikut untuk menjalankan mulai cepat ini.
Database SQL pada salah satu platform ini:
- Layanan Pembelajaran Mesin SQL Server. Untuk menginstal, lihat panduan penginstalan Windows atau panduan penginstalan Linux.
- Kluster Big Data SQL Server 2019. Lihat cara mengaktifkan Layanan Pembelajaran Mesin di Kluster Big Data SQL Server 2019.
- Azure SQL Managed Instance Pembelajaran Mesin Services. Untuk informasi, lihat gambaran umum Azure SQL Managed Instance Pembelajaran Mesin Services.
Alat untuk menjalankan kueri SQL yang berisi skrip Python. Mulai cepat ini menggunakan Azure Data Studio.
Menjalankan skrip sederhana
Untuk menjalankan skrip Python, Anda akan meneruskannya sebagai argumen ke prosedur tersimpan sistem, sp_execute_external_script. Prosedur tersimpan sistem ini memulai runtime Python dalam konteks pembelajaran mesin SQL, meneruskan data ke Python, mengelola sesi pengguna Python dengan aman, dan mengembalikan hasil apa pun kepada klien.
Dalam langkah-langkah berikut, Anda akan menjalankan contoh skrip Python ini di database Anda:
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
Buka jendela kueri baru di Azure Data Studio yang tersambung ke instans SQL Anda.
Teruskan skrip Python lengkap ke prosedur tersimpan
sp_execute_external_script.Skrip diteruskan melalui
@scriptargumen . Semua yang ada di@scriptdalam argumen harus berupa kode Python yang valid.EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b print(c, d) 'Hasil yang benar dihitung dan fungsi Python
printmengembalikan hasilnya ke jendela Pesan .Ini akan terlihat seperti ini.
Hasil
STDOUT message(s) from external script: 0.5 2
Menjalankan skrip Halo Dunia
Contoh skrip umum adalah skrip yang hanya menghasilkan string "Halo Dunia". Jalankan perintah berikut.
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
Input ke prosedur tersimpan sp_execute_external_script meliputi:
| Input | Deskripsi |
|---|---|
| @language | menentukan ekstensi bahasa yang akan dipanggil, dalam hal ini Python |
| @script | menentukan perintah yang diteruskan ke runtime bahasa umum Python. Seluruh skrip Python Anda harus diapit dalam argumen ini, sebagai teks Unicode. Anda juga dapat menambahkan teks ke variabel jenis nvarchar lalu memanggil variabel |
| @input_data_1 | data yang dikembalikan oleh kueri, diteruskan ke runtime Python, yang mengembalikan data sebagai bingkai data |
| DENGAN TATAAN HASIL | klausul menentukan skema tabel data yang dikembalikan untuk pembelajaran mesin SQL, menambahkan "Halo Dunia" sebagai nama kolom, int untuk jenis data |
Perintah mengeluarkan teks berikut:
| Halo Dunia |
|---|
| 1 |
Menggunakan input dan output
Secara default, sp_execute_external_script menerima satu himpunan data sebagai input, yang biasanya Anda berikan dalam bentuk kueri SQL yang valid. Kemudian mengembalikan satu bingkai data Python sebagai output.
Untuk saat ini, mari kita gunakan variabel sp_execute_external_scriptinput dan output default dari : InputDataSet dan OutputDataSet.
Buat tabel kecil data pengujian.
CREATE TABLE PythonTestData (col1 INT NOT NULL) INSERT INTO PythonTestData VALUES (1); INSERT INTO PythonTestData VALUES (10); INSERT INTO PythonTestData VALUES (100); GOSELECTGunakan pernyataan untuk mengkueri tabel.SELECT * FROM PythonTestDataHasil
Jalankan skrip Python berikut. Ini mengambil data dari tabel menggunakan
SELECTpernyataan , meneruskannya melalui runtime Python, dan mengembalikan data sebagai bingkai data. KlausaWITH RESULT SETSmenentukan skema tabel data yang dikembalikan untuk SQL, menambahkan nama kolom NewColName.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));Hasil
Sekarang ubah nama variabel input dan output. Nama variabel input dan output default adalah InputDataSet dan OutputDataSet, skrip berikut mengubah nama menjadi SQL_in dan 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));Perhatikan bahwa Python peka huruf besar/kecil. Variabel input dan output yang digunakan dalam skrip Python (SQL_out, SQL_in) perlu mencocokkan nama yang ditentukan dengan
@input_data_1_namedan@output_data_1_name, termasuk kasus.Tip
Hanya satu himpunan data input yang dapat diteruskan sebagai parameter, dan Anda hanya dapat mengembalikan satu himpunan data. Namun, Anda dapat memanggil himpunan data lain dari dalam kode Python dan Anda dapat mengembalikan output dari jenis lain selain himpunan data. Anda juga dapat menambahkan kata kunci OUTPUT ke parameter apa pun agar dikembalikan dengan hasilnya.
Anda juga dapat menghasilkan nilai hanya menggunakan skrip Python tanpa data input (
@input_data_1diatur ke kosong).Skrip berikut menghasilkan teks "hello" dan "world".
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));Hasil
@script sebagai input" />
Tip
Python menggunakan spasi di depan untuk mengelompokkan pernyataan. Jadi, ketika skrip Python yang disematkan mencakup beberapa baris, seperti dalam skrip sebelumnya, jangan mencoba untuk mengindentasi perintah Python agar sejalan dengan perintah SQL. Misalnya, skrip ini akan menghasilkan kesalahan:
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));
Periksa versi Python
Jika Anda ingin melihat versi Python mana yang diinstal di server Anda, jalankan skrip berikut.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import sys
print(sys.version)
'
GO
Fungsi Python print mengembalikan versi ke jendela Pesan . Dalam contoh output di bawah ini, Anda dapat melihat bahwa dalam hal ini, Python versi 3.5.2 diinstal.
Hasil
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)]
Mencantumkan paket Python
Microsoft menyediakan sejumlah paket Python yang telah diinstal sebelumnya dengan Layanan Pembelajaran Mesin di SQL Server 2016 (13.x), SQL Server 2017 (14.x), dan SQL Server 2019 (15.x). Di SQL Server 2022 (16.x), Anda dapat mengunduh dan menginstal runtime dan paket Python kustom apa pun sesuai keinginan.
Untuk melihat daftar paket Python mana yang diinstal, termasuk versi, jalankan skrip berikut.
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
Daftar berasal dari pkg_resources.working_set Python dan dikembalikan ke SQL sebagai bingkai data.
Langkah berikutnya
Untuk mempelajari cara menggunakan struktur data saat menggunakan Python dalam pembelajaran mesin SQL, ikuti mulai cepat ini: