2016-08-30 2 views
3

이곳은 새로운 기능으로 도움을 받으 hope습니다.Microsoft SQL 및 R, 저장 프로 시저 및 k- 수단

그러나 저는 R과의 통합을 암시하는 새로운 기능을 사용하여 새로운 Microsoft SQL Server Management Studio (2016) 작업을하고 있습니다. 우선 목표는 K- x 및 y 열을 사용하여 클러스터링을 의미합니다.

문제는 제가 온라인 문서를 제 경우로 거부 할 수 없기 때문에 중간에 갇혀 있다는 것입니다. 여기

스크립트

CREATE TABLE [dbo].[ModelTable] 
    (
    column_name1 varchar(8000) 
    ) 
    ; 

    CREATE TABLE [dbo].[ResultTable] 
    (
    column_name1 varchar(8000), 
    column_name2 varchar(8000), 
    column_name3 varchar(8000), 
    column_name4 varchar(8000) 
    ) 
    ; 

    CREATE PROCEDURE [dbo].[kmean] 

    AS 
    BEGIN 
    DECLARE @inquery nvarchar(max) = N' 
       select name,x,y FROM [dbtable] 

    ' 
    -- then I decide to insert the model in a table: this is similar to the documentation, but I am not sure it fits well. 

    INSERT INTO [dbo].[ModelTable] 
    EXEC sp_execute_external_script @language = N'R', 
            @script = N' 

    ## Here I create model: this is one of the biggest problem, because I tried to create a data frame with the data, but I do not know if here, 
    ## in the R code, the data are read in this way. Generally in "pure" R, I write data.frame(sourcedata$x,sourcedata$y), but here, where is source of data? 
    ## In the documentation it is used ImputDataSet, so maybe I could do: 

    trained_model <- kmeans(data.frame(ImputDataSet$x,ImputDataSet$y),8) 

    -- If everything is ok (doubtfully) I should have the model. And here, the part that I really cannot handle. 
    -- I'd like to have a table [ResultTable] with name, variable x, variable y, and trainedmodel$cluster. 

    ', 
           @input_data_1 = @inquery, 
           @output_data_1_name = N'trained_model' 
    ; 


    END 
    GO 

    EXEC kmean 

음이 많은 문제 등등과,이 MSSMS에서 아주 새로운 기능이 있다는 사실 때문에, 인터넷에서 등 도움의 다량이 아니다 . 사전

+0

어쩌면 다른 방법으로, [데이터 읽기] (http://stackoverflow.com/questions/3932864/reading-data-from-microsoft-sql-server-into-r) R로 이동 한 다음 R을 사용하십시오. [kmeans] (https://stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html)? – zx8754

+0

@ zx8754 - OP는 구문과 함께 R을 실행하지만 SQL Server 저장 프로 시저 (SQL Server R 서비스)를 사용하여 소스 코드를 생성한다고 믿습니다 (https://msdn.microsoft.com/en-us/library). /mt604885.aspx). – Parfait

답변

3

우리는 다음과 같은 시도 할 수있는 감사 : 출력

CREATE TABLE #tempData (x float not null, y float not null); 
INSERT INTO #tempData VALUES (0, 0), (0.1, 0.1), (1, 1), (1.1, 1.1); 

CREATE TABLE #output (x float, y float, Cluster int); 

INSERT INTO #output 
EXECUTE sp_execute_external_script 
       @language = N'R' 
       , @script = N'     
         trained_model <- kmeans(df[, c("x", "y")], 2) 
         df$cluster <- trained_model$cluster 
         ' 
       , @input_data_1 = N'SELECT * from #tempData' 
       , @output_data_1_name = N'df' 
       , @input_data_1_name = N'df'; 

SELECT * 
FROM #output 

: 내 입력 - 출력 데이터를 지정

x y Cluster 
0 0 1 
0.1 0.1 1 
1 1 2 
1.1 1.1 2 

참고 df을한다. 기본값은 InputDataSetOutputDataSet입니다.

더 긴 R 스크립트가있는 경우 : R 환경에서 작성하고 테스트 한 다음 패키지에 보관하고 대신로드하고 호출하는 것이 좋습니다.

+0

고마워, 지금까지 작동 : 나는 그것을 쿼리로 거부해야합니다. 예, 저는 R을 시도해 보았습니다. 꾸러미를 잘 관리 했어요! – user6498650

+0

당신은 환영합니다! R- 패키지에 큰 스크립트를 래핑하는 것이 스토어드 프로 시저 인 R에 대한 최선의 방법입니다. 쓰기, 디버깅 및 유지 보수가 더 쉬워집니다. 이것이 왜 명확하게 예시되지 않았는지 궁금합니다. 'sp_execute ... '명령은 끔찍합니다. –