PROSE Code Accelerator를 사용한 데이터 랭글링

적용 대상: SQL Server 2019(15.x)

중요

Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. Software Assurance를 사용하는 SQL Server 2019의 모든 기존 사용자는 플랫폼에서 완전히 지원되며, 소프트웨어는 지원 종료 시점까지 SQL Server 누적 업데이트를 통해 계속 유지 관리됩니다. 자세한 내용은 공지 블로그 게시물Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.

PROSE Code Accelerator는 데이터 랭글링 작업에 대해 읽을 수 있는 Python 코드를 생성합니다. Azure Data Studio 내에서 Notebook으로 작업하면서 생성한 코드와 손으로 작성한 코드를 혼합할 수 있습니다.

이 문서에서는 Code Accelerator를 사용하는 방법에 대한 개요를 제공합니다.

참고 항목

Program Synthesis using Examples(즉, PROSE)는 AI를 사용하여 사람이 읽을 수 있는 코드를 생성하는 Microsoft의 기술입니다. 이렇게 하려면 사용자의 의도와 데이터를 분석하고, 여러 후보 프로그램을 생성하고, 순위 알고리즘을 사용하여 최상의 프로그램을 선정합니다. PROSE 기술에 대해 자세히 알아보려면 PROSE 홈페이지를 방문하세요.

Code Accelerator는 Azure Data Studio와 함께 미리 설치됩니다. Notebook의 다른 Python 패키지처럼 가져올 수 있습니다. 규칙에 따라 간단히 cx로 가져옵니다.

import prose.codeaccelerator as cx

현재 릴리스에서 Code Accelerator는 다음 작업에 대한 Python 코드를 지능적으로 생성할 수 있습니다.

  • Pandas 또는 Pyspark 데이터 프레임에 대한 데이터 파일 읽기.
  • 데이터 프레임에서 데이터 형식 수정.
  • 문자열 목록에서 패턴을 나타내는 정규식 찾기.

Code Accelerator 메서드에 대한 일반적인 개요를 보려면 설명서를 참조하세요.

파일에서 데이터 프레임으로 데이터 읽어오기

데이터 프레임으로 파일을 읽는 작업에는 파일의 내용을 확인하고 데이터 로드 라이브러리에 전달할 올바른 매개 변수를 결정하는 일이 포함됩니다.

파일의 복잡도에 따라 올바른 매개 변수를 식별하는 데 몇 가지 반복 작업이 필요할 수 있습니다.

PROSE Code Accelerator는 데이터 파일의 구조를 분석하고 파일을 로드하는 코드를 자동으로 생성하여 이 문제를 해결합니다. 일반적으로 생성된 코드는 데이터를 올바르게 구문 분석합니다. 몇몇 경우에 따라 필요에 맞게 코드를 조정해야 할 수 있습니다.

다음 예제를 참조하세요.

import prose.codeaccelerator as cx

# Call the ReadCsvBuilder builder to analyze the file content and generate code to load it
builder = cx.ReadCsvBuilder(r'C:/911.txt')

#Set target to pyspark if generating code to use pyspark library
#builder.Target = "pyspark"

#Get the code generated to fix the data types
builder.learn().code()

이전 코드 블록은 다음 Python 코드를 출력하여 구분된 파일을 읽습니다. PROSE가 건너뛸 줄 수, 머리글, 따옴표, 구분 기호 등을 자동으로 파악하는 방법을 확인합니다.

import pandas as pd

def read_file(file):
   names = ["lat",
            "lng",
            "desc",
            "zip",
            "title"]

   df = pd.read_csv(file,
       skiprows = 11,
       header = None,
       names = names,
       quotechar = "\"",
       delimiter = "|",
       index_col = False,
       dtype = str,
       na_values = [],
       keep_default_na = False,
       skipinitialspace = True)
   return df

Code Accelerator는 구분된, JSON 및 고정 너비 파일을 데이터 프레임에 로드하는 코드를 생성할 수 있습니다. 고정 너비 파일을 읽기 위해 ReadFwfBuilder는 경우에 따라 열 위치를 가져오기 위해 구문 분석할 수 있는 사람이 읽을 수 있는 스키마 파일을 사용합니다. 자세히 알아보려면 설명서를 참조하세요.

데이터 프레임에서 데이터 형식을 수정합니다

Pandas 또는 Pyspark 데이터 프레임에 잘못된 데이터 형식이 지정되는 경우가 일반적입니다. 열의 몇 가지 비준수 값으로 인해 잘못된 데이터 형식이 발생합니다. 결과적으로 정수는 부동 또는 문자열로 읽혀지고 날짜는 문자열로 읽힙니다. 데이터 형식을 수동으로 수정하는 데 필요한 작업은 열 수에 비례합니다.

이러한 상황에서는 DetectTypesBuilder를 사용할 수 있습니다. 데이터를 분석하고 코드를 생성하여 데이터 형식을 수정합니다. 이 코드는 시작점 역할을 합니다. 필요에 따라 이를 검토, 사용하거나 수정할 수 있습니다.

import prose.codeaccelerator as cx

builder = cx.DetectTypesBuilder(df)

#Set target to pyspark if working with pyspark
#builder.Target = "pyspark"

#Get the code generated to fix the data types
builder.learn().code()

자세히 알아보려면 설명서를 참조하세요.

문자열에서 패턴 식별

Row 이름 BirthDate
0 베르트람 뒤 플레시스 1995
1 나이아라 모라브시코바 Unknown
2 지후 스펠 2014
3 비아차슬라우 고르단 힐라리오 1967년 4월 22일
4 마야 드 빌리어스 1960년 3월 19일

데이터의 볼륨 및 다양성에 따라 열의 다양한 패턴에 대한 정규식을 작성하는 것은 매우 많은 시간이 소요되는 작업이 될 수 있습니다. FindPatternsBuilder는 문자열 목록에 대한 정규식을 생성하여 위의 문제를 해결하는 강력한 코드 가속 도구입니다.

import prose.codeaccelerator as cx

builder = cx.FindPatternsBuilder(df['BirthDate'])

#Set target to pyspark if working with pyspark
#builder.Target = "pyspark"

builder.learn().regexes

위의 데이터에 대해 FindPatternsBuilder에서 생성된 정규식은 다음과 같습니다.

^[0-9]{2}-[A-Z][a-z]+-[0-9]{2}$
^[0-9]{2}[\s][A-Z][a-z]+[\s][0-9]{4}$
^[0-9]{4}$
^Unknown$

정규식을 생성하는 것 외에도 FindPatternsBuilder는 생성된 정규식을 기반으로 값을 클러스터링하는 코드를 생성할 수도 있습니다. 열의 모든 값이 생성된 정규식을 준수하도록 어설션할 수도 있습니다. 자세한 내용을 알아보고 다른 유용한 시나리오를 보려면 Microsoft PROSE Code Accelerator SDK를 참조하세요.