Chuyển đến nội dung chính

Cách thực thi Python/R trong SQL

Sau khi đọc hướng dẫn này, bạn sẽ biết cách nhúng các script R & Python vào câu lệnh T-SQL và biết các kiểu dữ liệu được dùng để truyền dữ liệu giữa SQL & Python/R.
Đã cập nhật 5 thg 10, 2026  · 6 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

đưa trí tuệ đến nơi dữ liệu tồn tại

Giới thiệu

Bạn có biết rằng bạn có thể viết mã R và Python ngay trong các câu lệnh T-SQL không? Machine Learning Services trong SQL Server loại bỏ nhu cầu di chuyển dữ liệu. Thay vì truyền các tập dữ liệu lớn và nhạy cảm qua mạng hoặc đánh đổi độ chính xác khi dùng các tệp csv mẫu, bạn có thể cho mã R/Python chạy ngay trong cơ sở dữ liệu của mình. Triển khai dễ dàng mã R/Python với stored procedure của SQL để chúng có thể được sử dụng trong quy trình ETL hoặc bởi bất kỳ ứng dụng nào. Huấn luyện và lưu trữ mô hình máy học trong cơ sở dữ liệu của bạn, đưa trí tuệ đến nơi dữ liệu của bạn đang sống.

Bạn có thể cài đặt và chạy 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. Cũng có 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ở cho phép bạn mang đến cho ứng dụng sự lựa chọn, hiệu năng và khả năng mở rộng vượt trội.

tại sao phân tích trong cơ sở dữ liệu với sql server

Nếu bạn háo hức muốn thử SQL Server Machine Learning Services, hãy xem hướng dẫn thực hành bên dưới. Nếu bạn chưa cài đặt Machine Learning Services trong SQL Server, trước tiên bạn nên làm theo hướng dẫn bắt đầu tại đây: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/

Hướng dẫn thao tác

Bạn sẽ học được gì

Hướng dẫn này sẽ trình bày những điều cơ bản về cách thực thi R và Python trong các câu lệnh T-SQL. Sau khi hoàn thành, bạn sẽ biết:

  1. Cách nhúng các script R và Python vào câu lệnh T-SQL.
  2. Cách dùng các tham số cơ bản để chỉ định dữ liệu đầu vào và đầu ra cho script R/Python.
  3. Các kiểu dữ liệu được dùng để truyền dữ liệu giữa quy trình SQL và Python/R.

Yêu cầu thiết lập

Nếu bạn chưa cài đặt Machine Learning Services trên SQL Server, trước tiên hãy đọc hướng dẫn bắt đầu hoặc xem các video này để thiết lập: https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices

Video đi kèm

Nếu bạn thích học qua video, hướng dẫn này cũng có trên YouTube: @https://aka.ms/ExecuteMLServices https://youtu.be/ACejZ9optCQ

Cơ bản

Mở SQL Server Management Studio và kết nối tới máy chủ của bạn. Mở một truy vấn mới và dán ví dụ cơ bản này: (Mặc dù các mẫu này dùng Python, bạn có thể làm mọi thứ tương tự với R)

EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'

Sp_execute_external_script là một stored procedure hệ thống đặc biệt cho phép thực thi R và Python trong SQL Server. Có tham số language để bạn chọn giữa Python và R. Tham số script là nơi bạn dán mã R hoặc Python. Nếu bạn không thấy kết quả in ra 7, hãy quay lại và xem lại các bước thiết lập trong bài viết này.

Giới thiệu tham số

Sau khi bàn về ví dụ cơ bản, hãy bắt đầu bổ sung thêm các phần:

EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';

Machine Learning Services cung cấp cách giao tiếp tự nhiên hơn giữa SQL và R/Python với một tham số dữ liệu đầu vào chấp nhận bất kỳ truy vấn SQL nào. Tên tham số đầu vào là input_data_1.

Bạn có thể thấy trong mã python rằng có các biến mặc định được định nghĩa để truyền dữ liệu giữa Python và SQL. Tên biến mặc định là OutputDataSet và InputDataSet. Bạn có thể đổi các tên mặc định này như ví dụ sau:

EXEC sp_execute_external_script @language =N'Python',
@script = N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo',
@output_data_1_name =N'MyOutput';

Khi chạy các ví dụ này, bạn có thể nhận thấy chúng đều trả về kết quả với (No column name)? Bạn có thể chỉ định tên cho các cột được trả về bằng cách thêm mệnh đề WITH RESULT SETS vào cuối câu lệnh, là danh sách các cột và kiểu dữ liệu của chúng, phân tách bằng dấu phẩy.

EXEC sp_execute_external_script  @language =N'Python',
@script=N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo,2 AS bar',
@output_data_1_name =N'MyOutput'
WITH RESULT SETS ((MyColName int, MyColName2 int));

Kiểu dữ liệu đầu vào/đầu ra

Được rồi, hãy bàn thêm một chút về các kiểu dữ liệu đầu vào/đầu ra dùng giữa SQL và Python. Câu lệnh SQL SELECT đầu vào của bạn truyền một "DataFrame" sang python dựa trên gói Python Pandas. Đầu ra từ Python trả về SQL cũng cần ở dạng đối tượng Pandas DataFrame. Nếu bạn cần chuyển các giá trị vô hướng thành DataFrame, đây là ví dụ:

EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
c = 1/2
d = 1*2
s = pd.Series([c,d])
df = pd.DataFrame(s)
OutputDataSet = df
'

Biến c và d đều là các giá trị vô hướng; bạn có thể thêm chúng vào một Series của pandas nếu muốn, rồi chuyển thành một DataFrame của pandas. Ví dụ sau phức tạp hơn một chút; hãy đọc thêm tài liệu gói pandas của python để biết chi tiết và ví dụ:

EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
s = {"col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(s)
OutputDataSet = df
'

Bây giờ bạn đã biết những điều cơ bản về cách thực thi R và Python trong T-SQL! Rất đơn giản để gọi EXEC sp_execute_external_script, sao chép/dán mã R hoặc Python của bạn, và sao chép/dán truy vấn select đầu vào của SQL. Có thể bạn cần thực hiện một chuyển đổi hay trích xuất dữ liệu đơn giản trong R/Python nhưng quá phức tạp để viết bằng SQL. Có thể bạn đang huấn luyện một mạng nơ-ron sâu trên lượng dữ liệu khổng lồ quá lớn để truyền qua mạng. Hoặc bạn muốn tự động chấm điểm/dự đoán kết quả trên dữ liệu mới đi vào hệ thống OLTP của bạn. Các trường hợp sử dụng rất đa dạng, và giờ đây bạn đã sẵn sàng nâng cao bảo mật, hiệu năng và khả năng mở rộng với Machine Learning Services trong SQL Server.

Tài liệu đọc thêm

Bạn có biết rằng bạn cũng có thể viết mã R và Python trong IDE yêu thích như RStudio và Jupyter Notebooks rồi gửi lệnh thực thi từ xa của mã đó tới SQL Server không? Xem các liên kết tài liệu sau để tìm hiểu thêm: Tài liệu: https://aka.ms/R-RemoteSQLExecution Tài liệu: https://aka.ms/R-RemoteSQLExecution Ví dụ Jupyter Notebook trên Github: https://aka.ms/RemoteExecJupyter

Nếu bạn muốn tìm hiểu thêm về SQL, hãy xem khóa học Nhập môn SQL cho Khoa học dữ liệu và trung tâm học SQL của chúng tôi..

Chủ đề
SQL
Khoa học Dữ liệu
Python
R

Tìm hiểu thêm về SQL

Khóa học

Xử lý dữ liệu trong SQL

4 giờ
339.1K
Thành thạo truy vấn SQL phức tạp để giải đáp nhiều câu hỏi về Khoa học dữ liệu và chuẩn bị bộ dữ liệu đáng tin cậy để phân tích trong PostgreSQL.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm