2017-07-30 24 views
5

Có thể nhận nhiều hơn một bảng do thực thi tập lệnh R với SQL Server 2016+ không? Hãy lấy một ví dụ đơn giản ngẫu nhiên từ internet (không cần phải đăng bài của tôi để không giải quyết được vấn đề):Nhiều bộ kết quả SQL Server R

EXEC sp_execute_external_script 
    @language =N'R', 
    @script=N'OutputDataSet<-InputDataSet', 
    @input_data_1 =N'SELECT 1 AS hello' 
    WITH RESULT SETS (([hello] int not null)); 

như được đăng trong here.

Đây là kết quả được trả về dưới dạng một bảng. Giả sử tôi thực hiện các phép tính khác nhau với dữ liệu và bây giờ tôi muốn trả lại nhiều bảng.

Ví dụ:

a<-InputDataSet 

b<-InputDataSet + 5 

Những sẽ quay trở lại hai bảng khác nhau như kết quả. Bây giờ tôi không thể tìm ra cách nào tốt đẹp để trả về dữ liệu trong hai bảng riêng biệt vì nó chỉ trả về một bảng. Rõ ràng, tôi có thể trả lại như sau:

OutputDataSet<-data.frame(a, b) 

Nhưng xử lý các chức năng khác nhau và dữ liệu khác nhau sẽ sớm trở nên phức tạp. Ví dụ: tôi sử dụng hàm lm. Bây giờ, một tập dữ liệu sẽ được tính giá trị ước tính và một tập dữ liệu khác sẽ là các hệ số của mỗi cột tham gia vào phương trình. Một lần nữa, tất nhiên tôi có thể tham gia hai datatables và đối phó với chúng sau này, nhưng kết quả đầu ra trở nên khổng lồ trong nhiều trường hợp.

Các tham số cho quy trình trông giống như: ..., @output_data_1_name, nhưng không có @output_data_2_name, v.v. do đó tôi không thấy cách nào. Có lẽ nó có thể tạo ra các OutputDataSet vì vậy nó nắm giữ nhiều bảng? Nếu vậy - tôi không nhận thức được như vậy trong R do tôi thiếu kinh nghiệm với nó.

tldr; là nó có thể trả về nhiều bộ kết quả hoặc giải pháp duy nhất của tôi là tự xây dựng đầu ra trong mã R vì vậy tôi sẽ luôn luôn có được một?

Trả lời

3

Theo tài liệu của Microsoft, tại thời điểm này không thể trả lại nhiều bảng. Tiểu bang nêu trên số này page:

Chỉ một bộ dữ liệu đầu vào có thể được chuyển làm tham số và bạn có thể chỉ trả lại một tập dữ liệu.

Tuy nhiên, bạn có thể trở lại biến đơn bổ sung, như đã nêu here:

Nói chung, đầu ra của R từ thủ tục lưu trữ sp_execute_external_script được giới hạn trong một khung dữ liệu duy nhất. (Giới hạn này có thể bị xóa trong tương lai.)

Tuy nhiên, bạn có thể trả lại các kết quả đầu ra của các loại khác, chẳng hạn như vô hướng, trong ngoài khung dữ liệu.

Ngoài ra còn có một ví dụ được đưa ra về cách thực hiện.

+0

Cảm ơn bạn, tôi tin điều này là đủ. Cảm ơn bạn rất nhiều vì nỗ lực nghiên cứu của bạn. –

+0

Cũng xin cảm ơn tôi. Tôi đã đọc khá nhiều về vấn đề này - cho cả bộ dữ liệu đầu vào và đầu ra - và đã hoàn toàn bỏ qua mẹo để trả về các đầu ra vô hướng bổ sung. Chúc mừng vì đã chỉ ra liên kết đó! – Jerb

Các vấn đề liên quan