다음을 통해 공유


빠른 시작: SQL 기계 학습에서 R 함수 사용

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

이 빠른 시작에서는 SQL Server Machine Learning Services 또는 빅 데이터 클러스터에서 R 수학 및 유틸리티 함수를 사용하는 방법을 알아봅니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.

이 빠른 시작에서는 SQL Server Machine Learning Services와 함께 R 수학 및 유틸리티 함수를 사용하는 방법에 대해 알아보겠습니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.

이 빠른 시작에서는 SQL Server R Services와 함께 R 수학 및 유틸리티 함수를 사용하는 방법에 대해 알아보겠습니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.

이 빠른 시작에서는 Azure SQL Managed Instance Machine Learning Services에서 R을 사용할 때 데이터 구조와 데이터 형식을 사용하는 방법을 알아봅니다. R과 SQL Managed Instance 사이의 데이터 이동과 일반적으로 발생할 수 있는 문제에 대해 알아봅니다.

필수 조건

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

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

난수를 생성하는 저장 프로시저 만들기

간단히 하기 위해 기본적으로 설치 및 로드되는 R stats 패키지를 사용하겠습니다. 패키지에는 일반 통계 태스크에 대한 수백 개의 함수가 포함되고, 이들 중 rnorm 함수는 표준 편차 및 평균을 고려하고 정규 분포를 사용하여 지정된 개수의 난수를 생성합니다.

예를 들어 다음 R 코드는 표준 편차 3을 고려하여 평균 50에 대한 100개의 숫자를 반환합니다.

as.data.frame(rnorm(100, mean = 50, sd = 3));

T-SQL에서 이 R 줄을 호출하려면 다음과 같이 sp_execute_external_script의 R 스크립트 매개 변수에 R 함수를 추가합니다.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
         OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
    , @input_data_1 = N'   ;'
      WITH RESULT SETS (([Density] float NOT NULL));

다른 난수 집합을 더 쉽게 생성하려면 어떻게 해야 할까요?

T-SQL과 결합하면 쉽습니다. 사용자로부터 인수를 가져오는 저장 프로시저를 정의한 다음, 해당 인수를 R 스크립트에 변수로 전달합니다.

CREATE PROCEDURE MyRNorm (
    @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
	     OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
    , @input_data_1 = N'   ;'
    , @params = N' @mynumbers int, @mymean int, @mysd int'
    , @mynumbers = @param1
    , @mymean = @param2
    , @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
  • 첫 번째 줄은 저장 프로시저가 실행될 때 필요한 각 SQL 입력 매개 변수를 정의합니다.

  • @params로 시작하는 줄은 R 코드에서 사용하는 모든 변수와 해당 SQL 데이터 형식을 정의합니다.

  • 바로 뒤에 오는 줄은 SQL 매개 변수 이름을 해당 R 변수 이름에 매핑합니다.

이제 저장 프로시저에서 R 함수를 래핑했으므로 다음과 같이 쉽게 함수를 호출하고 다른 값을 전달할 수 있습니다.

EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3

R 유틸리티 함수를 사용하여 문제 해결

기본적으로 설치되는 utils 패키지는 R 환경을 조사하기 위한 다양한 유틸리티 함수를 제공합니다. 이러한 함수는 R 코드가 SQL Server 및 외부 환경에서 수행하는 방식의 불일치를 찾는 경우에 유용할 수 있습니다.

예를 들어 R에서 system.timeproc.time과 같은 시스템 타이밍 함수를 사용하여 R 프로세스에서 사용하는 시간을 캡처하고 성능 문제를 분석할 수 있습니다. 예를 들어 R 타이밍 함수가 솔루션에 포함된 데이터 기능 만들기 자습서를 참조하세요.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
        library(utils);
        start.time <- proc.time();
        
        # Run R processes
        
        elapsed_time <- proc.time() - start.time;'

다른 유용한 함수는 R 코드 프로파일링 함수를 사용하여 성능 향상을 참조하세요.

다음 단계

SQL 기계 학습에서 R을 사용하여 기계 학습 모델을 만들려면 다음 빠른 시작을 수행합니다.