Bạn có biết rằng bạn có thể thực thi mã R và Python từ xa trong SQL Server từ Jupyter Notebooks hoặc bất kỳ IDE nào không? Machine Learning Services trong SQL Server loại bỏ nhu cầu di chuyển dữ liệu. Thay vì truyền dữ liệu lớn và nhạy cảm qua mạng hoặc làm giảm độ chính xác khi huấn luyện ML bằng các tệp csv mẫu, bạn có thể thực thi mã R/Python ngay trong cơ sở dữ liệu của mình. Bạn có thể làm việc trong Jupyter Notebooks, RStudio, PyCharm, VSCode, Visual Studio, ở bất cứ đâu bạn muốn, rồi gửi việc thực thi hàm tới SQL Server, đưa trí tuệ đến đúng nơi dữ liệu của bạn đang sống.
Hướng dẫn này sẽ minh họa cách bạn có thể gửi mã python từ Jupyter notebooks để thực thi trong SQL Server. Nguyên tắc tương tự cũng áp dụng cho R và bất kỳ IDE nào khác. Nếu bạn thích học qua video, hướng dẫn này cũng đã được đăng trên YouTube tại đây:
Để R hoặc Python có thể thực thi trong SQL, trước tiên bạn cần cài đặt và cấu hình tính năng Machine Learning Services. Xem hướng dẫn từng bước này.
2. Cài đặt RevoscalePy qua Python Client của Microsoft
Để gửi lệnh thực thi Python tới SQL từ Jupyter Notebooks, bạn cần dùng gói RevoscalePy của Microsoft. Để lấy RevoscalePy, hãy tải và cài đặt Microsoft ML Services Python Client. Trang tài liệu hoặc Liên kết tải trực tiếp (cho Windows).
Sau khi tải về, mở PowerShell với quyền quản trị và điều hướng tới thư mục tải về. Bắt đầu cài đặt với lệnh này (bạn có thể tùy chỉnh thư mục cài đặt): .\Install-PyForMLS.ps1 -InstallFolder "C:\Program Files\MicrosoftPythonClient"
Hãy kiên nhẫn vì quá trình cài đặt có thể mất một lúc. Khi hoàn tất, điều hướng đến đường dẫn mới bạn đã cài đặt. Tạo một thư mục trống và mở Jupyter Notebooks: mkdir JupyterNotebooks; cd JupyterNotebooks; ..\Scripts\jupyter-notebook
Tạo một notebook mới với trình thông dịch Python 3:
Để kiểm tra mọi thứ đã sẵn sàng, hãy import revoscalepy ở ô đầu tiên và thực thi. Nếu không có thông báo lỗi, bạn có thể tiếp tục.
Thiết lập cơ sở dữ liệu (Chỉ yêu cầu cho hướng dẫn này)
Cho phần còn lại của hướng dẫn, bạn có thể nhân bản Jupyter Notebook này từ Github nếu bạn không muốn sao chép dán toàn bộ mã. Thiết lập cơ sở dữ liệu này chỉ cần thực hiện một lần để đảm bảo bạn có cùng dữ liệu như trong hướng dẫn này. Bạn không cần thực hiện bất kỳ bước thiết lập nào dưới đây nếu dùng dữ liệu của riêng bạn.
1. Tạo cơ sở dữ liệu
Chỉnh sửa chuỗi kết nối cho máy chủ của bạn và dùng pyodbc để tạo cơ sở dữ liệu mới.
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")Được hỗ trợ bởi
2. Nhập mẫu Iris từ SkLearn
Iris là một bộ dữ liệu phổ biến cho các hướng dẫn nhập môn khoa học dữ liệu. Nó được bao gồm sẵn trong gói 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)Được hỗ trợ bởi
3. Dùng các API RecoscalePy để tạo bảng và nạp dữ liệu Iris
(Bạn cũng có thể làm điều này với pyodbc, sqlalchemy hoặc các gói khác)
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")Được hỗ trợ bởi
Định nghĩa một hàm để gửi đến SQL Server
Viết bất kỳ mã python nào bạn muốn thực thi trong SQL. Trong ví dụ này, chúng ta tạo một scatter matrix trên bộ dữ liệu iris và chỉ trả về luồng byte của tệp .png về Jupyter Notebooks để hiển thị trên máy khách.
defsend_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()Được hỗ trợ bởi
Gửi lệnh thực thi tới SQL
Giờ mọi thứ đã sẵn sàng, hãy xem việc gửi thực thi từ xa dễ đến thế nào! Trước hết, import revoscalepy. Tạo một sql_compute_context, rồi gửi việc thực thi của bất kỳ hàm nào một cách liền mạch tới SQL Server với RxExec. Không có dữ liệu thô nào phải chuyển từ SQL sang Jupyter Notebook. Tất cả tính toán diễn ra trong cơ sở dữ liệu, và chỉ tệp ảnh được trả về để hiển thị.
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)Được hỗ trợ bởi
Dù ví dụ này khá đơn giản với bộ dữ liệu Iris, hãy hình dung quy mô, hiệu năng và khả năng bảo mật bổ sung mà bạn có thể mở khóa. Bạn có thể dùng bất kỳ gói R/Python mã nguồn mở mới nhất nào để xây dựng ứng dụng Học sâu và AI trên lượng dữ liệu lớn trong SQL Server. Chúng tôi cũng cung cấp các thuật toán tiên tiến, hiệu năng cao trong các API RevoScaleR và RevoScalePy của Microsoft. Kết hợp chúng với những đổi mới mới nhất trong thế giới mã nguồn mở sẽ giúp bạn mang đến cho ứng dụng khả năng lựa chọn phong phú, hiệu năng vượt trội và khả năng mở rộng tối đa.
Tham khảo Tài liệu SQL Machine Learning Services để tìm hiểu cách bạn có thể dễ dàng triển khai mã R/Python với stored procedure của SQL, giúp chúng sẵn sàng trong quy trình ETL hoặc cho bất kỳ ứng dụng nào. Huấn luyện và lưu trữ mô hình học máy trong cơ sở dữ liệu, đưa trí tuệ đến nơi dữ liệu của bạn đang sống.
Giới thiệu
Bạn có biết rằng bạn có thể thực thi mã R và Python từ xa trong SQL Server từ Jupyter Notebooks hoặc bất kỳ IDE nào không? Machine Learning Services trong SQL Server loại bỏ nhu cầu di chuyển dữ liệu. Thay vì truyền dữ liệu lớn và nhạy cảm qua mạng hoặc làm giảm độ chính xác khi huấn luyện ML bằng các tệp csv mẫu, bạn có thể thực thi mã R/Python ngay trong cơ sở dữ liệu của mình. Bạn có thể làm việc trong Jupyter Notebooks, RStudio, PyCharm, VSCode, Visual Studio, ở bất cứ đâu bạn muốn, rồi gửi việc thực thi hàm tới SQL Server, đưa trí tuệ đến đúng nơi dữ liệu của bạn đang sống.
Hướng dẫn này sẽ minh họa cách bạn có thể gửi mã python từ Jupyter notebooks để thực thi trong SQL Server. Nguyên tắc tương tự cũng áp dụng cho R và bất kỳ IDE nào khác. Nếu bạn thích học qua video, hướng dẫn này cũng đã được đăng trên YouTube tại đây:
https://youtu.be/D5erljpJDjE
Điều kiện tiên quyết khi thiết lập môi trường
1. Cài đặt ML Services trên SQL Server
Để R hoặc Python có thể thực thi trong SQL, trước tiên bạn cần cài đặt và cấu hình tính năng Machine Learning Services. Xem hướng dẫn từng bước này.
2. Cài đặt RevoscalePy qua Python Client của Microsoft
Để gửi lệnh thực thi Python tới SQL từ Jupyter Notebooks, bạn cần dùng gói RevoscalePy của Microsoft. Để lấy RevoscalePy, hãy tải và cài đặt Microsoft ML Services Python Client. Trang tài liệu hoặc Liên kết tải trực tiếp (cho Windows).
Sau khi tải về, mở PowerShell với quyền quản trị và điều hướng tới thư mục tải về. Bắt đầu cài đặt với lệnh này (bạn có thể tùy chỉnh thư mục cài đặt):
.\Install-PyForMLS.ps1 -InstallFolder "C:\Program Files\MicrosoftPythonClient"Hãy kiên nhẫn vì quá trình cài đặt có thể mất một lúc. Khi hoàn tất, điều hướng đến đường dẫn mới bạn đã cài đặt. Tạo một thư mục trống và mở Jupyter Notebooks:
mkdir JupyterNotebooks; cd JupyterNotebooks; ..\Scripts\jupyter-notebookTạo một notebook mới với trình thông dịch Python 3:
Để kiểm tra mọi thứ đã sẵn sàng, hãy import revoscalepy ở ô đầu tiên và thực thi. Nếu không có thông báo lỗi, bạn có thể tiếp tục.
Thiết lập cơ sở dữ liệu (Chỉ yêu cầu cho hướng dẫn này)
Cho phần còn lại của hướng dẫn, bạn có thể nhân bản Jupyter Notebook này từ Github nếu bạn không muốn sao chép dán toàn bộ mã. Thiết lập cơ sở dữ liệu này chỉ cần thực hiện một lần để đảm bảo bạn có cùng dữ liệu như trong hướng dẫn này. Bạn không cần thực hiện bất kỳ bước thiết lập nào dưới đây nếu dùng dữ liệu của riêng bạn.
1. Tạo cơ sở dữ liệu
Chỉnh sửa chuỗi kết nối cho máy chủ của bạn và dùng pyodbc để tạo cơ sở dữ liệu mới.
2. Nhập mẫu Iris từ SkLearn
Iris là một bộ dữ liệu phổ biến cho các hướng dẫn nhập môn khoa học dữ liệu. Nó được bao gồm sẵn trong gói sklearn.
3. Dùng các API RecoscalePy để tạo bảng và nạp dữ liệu Iris
(Bạn cũng có thể làm điều này với pyodbc, sqlalchemy hoặc các gói khác)
Định nghĩa một hàm để gửi đến SQL Server
Viết bất kỳ mã python nào bạn muốn thực thi trong SQL. Trong ví dụ này, chúng ta tạo một scatter matrix trên bộ dữ liệu iris và chỉ trả về luồng byte của tệp .png về Jupyter Notebooks để hiển thị trên máy khách.
Gửi lệnh thực thi tới SQL
Giờ mọi thứ đã sẵn sàng, hãy xem việc gửi thực thi từ xa dễ đến thế nào! Trước hết,
import revoscalepy. Tạo mộtsql_compute_context, rồi gửi việc thực thi của bất kỳ hàm nào một cách liền mạch tới SQL Server vớiRxExec. Không có dữ liệu thô nào phải chuyển từ SQL sang Jupyter Notebook. Tất cả tính toán diễn ra trong cơ sở dữ liệu, và chỉ tệp ảnh được trả về để hiển thị.Dù ví dụ này khá đơn giản với bộ dữ liệu Iris, hãy hình dung quy mô, hiệu năng và khả năng bảo mật bổ sung mà bạn có thể mở khóa. Bạn có thể dùng bất kỳ gói R/Python mã nguồn mở mới nhất nào để xây dựng ứng dụng Học sâu và AI trên lượng dữ liệu lớn trong SQL Server. Chúng tôi cũng cung cấp các thuật toán tiên tiến, hiệu năng cao trong các API RevoScaleR và RevoScalePy của Microsoft. Kết hợp chúng với những đổi mới mới nhất trong thế giới mã nguồn mở sẽ giúp bạn mang đến cho ứng dụng khả năng lựa chọn phong phú, hiệu năng vượt trội và khả năng mở rộng tối đa.
Tìm hiểu thêm
Xem hướng dẫn của DataCamp về Cách thực thi Python/R trong SQL.
Tham khảo Tài liệu SQL Machine Learning Services để tìm hiểu cách bạn có thể dễ dàng triển khai mã R/Python với stored procedure của SQL, giúp chúng sẵn sàng trong quy trình ETL hoặc cho bất kỳ ứng dụng nào. Huấn luyện và lưu trữ mô hình học máy trong cơ sở dữ liệu, đưa trí tuệ đến nơi dữ liệu của bạn đang sống.
Thực thi cơ bản R và Python trong SQL Server: https://aka.ms/BasicMLServicesExecution
Thiết lập Machine Learning Services trong SQL Server: https://aka.ms/SetupMLServices
Các giải pháp hướng dẫn end-to-end trên Github: https://microsoft.github.io/sql-ml-tutorials/
Các hướng dẫn YouTube khác:
Nếu bạn muốn học thêm, hãy xem các khóa nhập môn của DataCamp.