Lewati ke konten utama

Python dan R Jarak Jauh di SQL

Pelajari cara mengirim eksekusi R dan Python secara jarak jauh ke SQL Server dari Jupyter Notebooks.
· 7 mnt Baca

Jelajahi bersama AI

jalankan r dan python di sql server dari ide apa pun

Pendahuluan

Tahukah Anda bahwa Anda dapat mengeksekusi kode R dan Python secara jarak jauh di SQL Server dari Jupyter Notebooks atau IDE apa pun? Machine Learning Services di SQL Server menghilangkan kebutuhan untuk memindahkan data. Alih-alih mentransfer data yang besar dan sensitif melalui jaringan atau kehilangan akurasi saat pelatihan ML dengan file csv sampel, Anda dapat mengeksekusi kode R/Python di dalam basis data Anda. Anda dapat bekerja di Jupyter Notebooks, RStudio, PyCharm, VSCode, Visual Studio, di mana pun Anda mau, lalu mengirim eksekusi fungsi ke SQL Server sehingga kecerdasan berada di tempat data Anda berada.

Tutorial ini akan menunjukkan contoh bagaimana Anda dapat mengirim kode python dari Juptyter notebooks untuk dieksekusi di dalam SQL Server. Prinsip yang sama juga berlaku untuk R dan IDE lainnya. Jika Anda lebih suka belajar melalui video, tutorial ini juga diterbitkan di YouTube di sini:

https://youtu.be/D5erljpJDjE

Cara Menjalankan R & Python di SQL Server dari Jupyter Notebooks atau IDE apa pun

Prasyarat Penyiapan Lingkungan

1. Instal ML Services di SQL Server

Agar R atau Python dapat dieksekusi di dalam SQL, Anda terlebih dahulu memerlukan fitur Machine Learning Services yang terpasang dan dikonfigurasi. Lihat panduan cara ini.

2. Instal RevoscalePy melalui Klien Python Microsoft

Untuk mengirim eksekusi Python ke SQL dari Jupyter Notebooks, Anda perlu menggunakan paket RevoscalePy dari Microsoft. Untuk mendapatkan RevoscalePy, unduh dan instal Microsoft ML Services Python Client. Halaman Dokumentasi atau Tautan Unduhan Langsung (untuk Windows).

Setelah mengunduh, buka powershell sebagai administrator dan navigasikan ke folder unduhan. Mulai instalasi dengan perintah ini (silakan sesuaikan folder instalasi): .\Install-PyForMLS.ps1 -InstallFolder "C:\Program Files\MicrosoftPythonClient"

Harap bersabar karena proses instalasi bisa memakan waktu. Setelah terpasang, navigasikan ke path baru tempat Anda menginstal. Mari buat folder kosong dan buka Jupyter Notebooks: mkdir JupyterNotebooks; cd JupyterNotebooks; ..\Scripts\jupyter-notebook

Buat notebook baru dengan interpreter Python 3:

buat notebook baru dengan interpreter python 3

Untuk menguji apakah semuanya sudah siap, impor revoscalepy di sel pertama dan eksekusi. Jika tidak ada pesan kesalahan, Anda siap melanjutkan.

impor revoscalepy

Penyiapan Basis Data (Diperlukan hanya untuk tutorial ini)

Untuk sisa tutorial, Anda dapat mengkloning Jupyter Notebook ini dari Github jika Anda tidak ingin menyalin dan menempelkan semua kode. Penyiapan basis data ini adalah langkah satu kali untuk memastikan Anda memiliki data yang sama seperti di tutorial ini. Anda tidak perlu melakukan langkah penyiapan ini untuk menggunakan data Anda sendiri.

1. Buat basis data

Ubah connection string untuk server Anda dan gunakan pyodbc untuk membuat basis data baru.

 import pyodbc

# creating a new db to load Iris sample in
new_db_name = "MLRemoteExec"
connection_string = "Driver=SQL Server;Server=localhost\MSSQLSERVER2017;Database={0};Trusted_Connection=Yes;"
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")

2. Impor sampel Iris dari SkLearn

Iris adalah dataset populer untuk tutorial ilmu data pemula. Dataset ini disertakan secara default dalam paket sklearn.

from sklearn import datasets
import pandas as pd

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

3. Gunakan API RecoscalePy untuk membuat tabel dan memuat data Iris

(Anda juga dapat melakukannya dengan pyodbc, sqlalchemy, atau paket lainnya)

 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")
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")

Tentukan Fungsi untuk Dikirim ke SQL Server

Tulis kode python apa pun yang ingin Anda eksekusi di SQL. Dalam contoh ini, kita membuat scatter matrix pada dataset iris dan hanya mengembalikan bytestream dari .png kembali ke Jupyter Notebooks untuk dirender di klien kita.

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\MSSQLSERVER2017;Database=MLRemoteExec;Trusted_Connection=Yes;"# specify a query and load into pandas dataframe df
    sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from Iris")
    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()

Kirim Eksekusi ke SQL

Sekarang setelah semuanya siap, lihat betapa mudahnya mengirim eksekusi jarak jauh! Pertama, import revoscalepy. Buat sql_compute_context, lalu kirim eksekusi fungsi apa pun ke SQL Server secara mulus dengan RxExec. Tidak ada data mentah yang harus ditransfer dari SQL ke Jupyter Notebook. Semua komputasi terjadi di dalam basis data, dan hanya berkas gambar yang dikembalikan untuk ditampilkan.

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)

Walaupun contoh ini sederhana dengan dataset Iris, bayangkan skala, performa, dan kapabilitas keamanan tambahan yang kini Anda buka. Anda dapat menggunakan paket R/Python open source terbaru untuk membangun aplikasi Deep Learning dan AI pada data dalam jumlah besar di SQL Server. Kami juga menawarkan algoritme terdepan berkinerja tinggi dalam API RevoScaleR dan RevoScalePy milik Microsoft. Menggunakan ini bersama inovasi terbaru di dunia open source memungkinkan Anda menghadirkan pilihan, performa, dan skala yang tak tertandingi ke aplikasi Anda.

Pelajari Lebih Lanjut

Lihat tutorial DataCamp tentang Cara Mengeksekusi Python/R di SQL.

Lihat Dokumentasi SQL Machine Learning Services untuk mempelajari bagaimana Anda dapat dengan mudah menerapkan kode R/Python dengan stored procedure SQL sehingga dapat diakses dalam proses ETL Anda atau oleh aplikasi apa pun. Latih dan simpan model machine learning di basis data Anda sehingga kecerdasan berada di tempat data Anda berada.

Eksekusi R dan Python Dasar di SQL Server: https://aka.ms/BasicMLServicesExecution

Menyiapkan Machine Learning Services di SQL Server: https://aka.ms/SetupMLServices

Solusi tutorial end-to-end di Github: https://microsoft.github.io/sql-ml-tutorials/

Tutorial YouTube lainnya:

Jika Anda tertarik untuk belajar lebih jauh, lihat kursus pengantar dari DataCamp.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026