Czy można uzyskać więcej niż jedną tabelę w wyniku wykonywania skryptu R z SQL Server 2016+? Weźmy prosty przykład losowy z internetu (nie musisz odpowiedzieć kopalni nie overcomplicate problemu):SQL Server R wiele zestawów wyników
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));
jak pisał w here.
Tutaj wynik jest zwracany jako pojedyncza tabela. Powiedzmy, że robię różne obliczenia z danymi i teraz chcę zwrócić wiele tabel w wyniku.
Na przykład
a<-InputDataSet
b<-InputDataSet + 5
Byłyby zwrócić dwa różne tabele wyniki. Teraz nie mogę wymyślić żadnego ładnego sposobu, aby zwrócić dane w dwóch oddzielnych tabelach, ponieważ zwraca tylko jedną tabelę. Oczywiście, mogę to zwrócić w następujący sposób:
OutputDataSet<-data.frame(a, b)
Ale zajmowanie się różnymi funkcjami i różnymi danymi wkrótce staje się dość kłopotliwe. Na przykład używam funkcji lm
. Teraz jeden zestaw danych będzie obliczał wartości szacunkowe, a inny będzie współczynnikiem każdej kolumny uczestniczącej w równaniu. Ponownie, oczywiście mogę dołączyć do tych dwóch datatables i poradzić sobie z nimi później, ale wynik wyjściowy staje się kolosalny w wielu przypadkach.
Parametry procedury wyglądają następująco: ..., @output_data_1_name
, ale nie ma @output_data_2_name
itd., Więc nie widzę sposobu. Być może jest możliwe utworzenie OutputDataSet
, więc zawiera wiele tabel? Jeśli tak - nie jestem tego świadomy w R ze względu na brak doświadczenia w tym zakresie.
tldr; czy możliwe jest zwrócenie wielu zestawów wyników, czy też moim jedynym rozwiązaniem jest ręczne skonstruowanie wyjścia w kodzie R, więc zawsze będę je mieć?
Dziękuję, uważam, że to wystarczy. Bardzo dziękuję za wysiłek włożony w twoje badania. –
Dziękuję również ode mnie. Dużo czytałem na ten temat - zarówno dla zbiorów danych wejściowych, jak i wyjściowych - i całkowicie pominąłem trik do zwrócenia dodatkowych wyników skalarnych. Pozdrawiam za wskazanie tego linku! – Jerb