빠른 시작: SQL 기계 학습에서 간단한 R 스크립트를 실행합니다.

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL Managed Instance

이 빠른 시작에서는 SQL Server Machine Learning Services 또는 빅 데이터 클러스터를 사용하여 간단한 R 스크립트 세트를 실행합니다. 저장 프로시저 sp_execute_external_script를 사용하여 SQL Server 인터페이스에서 스크립트를 실행하는 방법을 알아봅니다.

이 빠른 시작에서는 SQL Server Machine Learning Services를 사용하여 간단한 R 스크립트 세트를 실행합니다. 저장 프로시저 sp_execute_external_script를 사용하여 SQL Server 인터페이스에서 스크립트를 실행하는 방법을 알아봅니다.

이 빠른 시작에서는 SQL Server R Services를 사용하여 간단한 R 스크립트 세트를 실행합니다. 저장 프로시저 sp_execute_external_script를 사용하여 SQL Server 인터페이스에서 스크립트를 실행하는 방법을 알아봅니다.

이 빠른 시작에서는 Azure SQL Managed Instance Machine Learning Services를 사용하여 간단한 R 스크립트 세트를 실행합니다. 저장 프로시저 sp_execute_external_script를 사용하여 데이터베이스에서 스크립트를 실행하는 방법을 알아봅니다.

사전 요구 사항

이 빠른 시작을 실행하려면 다음과 같은 필수 구성 요소가 필요합니다.

  • SQL Server Machine Learning Services. Machine Learning Services를 설치하려면 Windows 설치 가이드를 참조하세요.
  • R 스크립트가 포함된 SQL 쿼리를 실행하기 위한 도구. 이 빠른 시작에서는 Azure Data Studio를 사용합니다.

간단한 스크립트 실행

R 스크립트를 실행하려면 이를 시스템 저장 프로시저 sp_execute_external_script에 대한 인수로 전달합니다. 이 시스템 저장 프로시저는 R 런타임을 시작하고, 데이터를 R에 전달하고, R 사용자 세션을 안전하게 관리하고, 결과를 클라이언트에 반환합니다.

다음 단계에서는 아래의 예제 R 스크립트를 실행합니다.

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Azure Data Studio를 열고 서버에 연결합니다.

  2. R Python 스크립트를 sp_execute_external_script 저장 프로시저에 전달합니다.

    스크립트는 @script 인수를 통해 전달됩니다. @script 인수 안의 모든 항목이 유효한 R 코드여야 합니다.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    a <- 1
    b <- 2
    c <- a/b
    d <- a*b
    print(c(c, d))
    '
    
  3. 올바른 결과가 계산되고 R print 함수가 결과를 메시지 창에 반환합니다.

    다음과 비슷합니다.

    결과

    STDOUT message(s) from external script:
    0.5 2
    

Hello World 스크립트 실행

일반적인 예제 스크립트는 "Hello World" 문자열만 출력하는 스크립트입니다. 다음 명령을 실행합니다.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'OutputDataSet<-InputDataSet'
    , @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO

sp_execute_external_script 저장 프로시저에 대한 입력에는 다음이 포함됩니다.

입력 Description
@language 호출할 언어 확장을 정의합니다(이 경우에는 R).
@script R 런타임으로 전달되는 명령을 정의합니다. 전체 R 스크립트는 이 인수에 유니코드 텍스트로 묶어야 합니다. nvarchar 형식의 변수에 텍스트를 추가한 다음, 변수를 호출할 수도 있습니다.
@input_data_1 쿼리에서 반환된 데이터는 R 런타임에 전달되고, R 런타임은 데이터를 데이터 프레임으로 전달합니다.
WITH RESULT SETS 이 절은 반환된 데이터 테이블의 스키마를 정의하고, "Hello World"를 열 이름으로 추가하고 데이터 형식으로 int를 추가합니다.

이 명령은 다음 텍스트를 출력합니다.

Hello World
1

입력 및 출력 사용

기본적으로 sp_execute_external_script는 일반적으로 사용자가 유효한 SQL 쿼리의 형식으로 제공하는 단일 데이터 세트를 입력으로 사용합니다. 그런 후 단일 R 데이터 프레임을 출력으로 반환합니다.

지금은 sp_execute_external_script의 기본 입력 및 출력을 사용합니다. InputDataSetOutputDataSet.

  1. 테스트 데이터의 작은 테이블을 만듭니다.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. SELECT 문을 사용하여 테이블을 쿼리합니다.

    SELECT *
    FROM RTestData
    

    결과

    RTestData 테이블의 콘텐츠

  3. 다음 R 스크립트를 실행합니다. SELECT 문을 사용하여 테이블에서 데이터를 검색하고 R 런타임을 통해 이를 전달하고 데이터를 데이터 프레임으로 반환합니다. WITH RESULT SETS 절은 SQL에 대한 반환된 데이터 테이블의 스키마를 정의하고, 열 이름 NewColName을 추가합니다.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'OutputDataSet <- InputDataSet;'
        , @input_data_1 = N'SELECT * FROM RTestData;'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    결과

    테이블에서 데이터를 반환하는 R 스크립트의 출력

  4. 이제 입력 및 출력 변수의 이름을 변경하겠습니다. 기본 입력 및 출력 변수 이름은 InputDataSetOutputDataSet입니다. 이 스크립트는 이름을 SQL_inSQL_out으로 변경합니다.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N' SQL_out <- SQL_in;'
        , @input_data_1 = N' SELECT 12 as Col;'
        , @input_data_1_name = N'SQL_in'
        , @output_data_1_name = N'SQL_out'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    R은 대/소문자를 구분합니다. R 스크립트(SQL_out, SQL_in)에 사용되는 입력 및 출력 변수는 대/소문자를 포함하여 @input_data_1_name@output_data_1_name으로 정의된 이름과 일치해야 합니다.

    하나의 입력 데이터 세트만 매개 변수로 전달할 수 있으며 하나의 데이터 세트만 반환할 수 있습니다. 그러나 R 코드 내에서 다른 데이터 세트를 호출할 수 있으며 데이터 세트 외에 다른 유형의 출력을 반환할 수 있습니다. 또한 모든 매개 변수에 OUTPUT 키워드를 추가하여 결과와 함께 반환되게 만들 수 있습니다.

  5. 입력 데이터 없이 R 스크립트만 사용하여 값을 생성할 수도 있습니다(@input_data_1이 공백으로 설정됨).

    다음 스크립트는 "hello" 및 "world" 텍스트를 출력합니다.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    mytextvariable <- c("hello", " ", "world");
    OutputDataSet <- as.data.frame(mytextvariable);
    '
        , @input_data_1 = N''
    WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
    

    결과

    <span class=@script를 입력으로 사용하는 쿼리 결과" />

R 버전 확인

설치된 R의 버전을 확인하려면 다음 스크립트를 실행합니다.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(version)';
GO

R print 함수는 버전을 메시지 창으로 반환합니다. 아래 예제 출력에서 R 버전 3.4.4가 설치되어 있는 것을 확인할 수 있습니다.

결과

STDOUT message(s) from external script:
                   _
platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          3
minor          4.4
year           2018
month          03
day            15
svn rev        74408
language       R
version.string R version 3.4.4 (2018-03-15)
nickname       Someone to Lean On

R 패키지 나열

Microsoft는 Machine Learning Services와 함께 미리 설치된 여러 R 패키지를 제공합니다.

Microsoft는 R Services와 함께 미리 설치된 여러 R 패키지를 제공합니다.

버전, 종속 항목, 라이선스 및 라이브러리 경로 정보를 포함하여 설치된 R 패키지 목록을 보려면 다음 스크립트를 실행합니다.

EXEC sp_execute_external_script @language = N'R'
    , @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
            Package NVARCHAR(255)
            , Version NVARCHAR(100)
            , Depends NVARCHAR(4000)
            , License NVARCHAR(1000)
            , LibPath NVARCHAR(2000)
            ));

R의 installed.packages()에서 출력이 생성되고 결과 집합으로 반환됩니다.

결과

R의 설치된 패키지

다음 단계

SQL 기계 학습에서 R을 사용할 때 데이터 구조를 사용하는 방법을 알아보려면 다음 빠른 시작을 수행하세요.