BLOG
AWS Glue DataBrew로 기술 분석을 위한 데이터 세트 강화하기
데이터 분석은 여전히 많은 기업들이 중요하게 생각하는 과제입니다. 점점 더 많은 기업이 데이터가 고객에게 더 효과적으로 서비스를 제공하고 경쟁 우위를 제공할 수 있다는 잠재력을 이해하기 시작했습니다. 그러나 많은 중소기업의 경우 내부 데이터 엔지니어링 기술과 지식이 부족한 경우가 많기 때문에 데이터에서 통찰력을 얻는 것이 어려울 수 있습니다.
데이터 강화는 또 다른 과제입니다. 내부 데이터 세트만을 사용하여 분석에 집중하는 기업은 신뢰할 수 있는 퍼블릭 데이터 세트를 사용하여 더 나은 통찰력을 얻을 기회를 놓치고 있습니다. 데이터 부족과 같은 장애로 인해 정확한 분석 통찰력을 기반으로 정보에 입각한 의사 결정 능력이 떨어지는 중소기업도 이러한 단점에서 예외는 아닙니다.
이번 포스팅에서는 AWS Glue DataBrew를 사용하여 모든 규모의 기업이 사전 코딩 지식 없이 데이터 분석을 시작할 수 있는 방법을 알아보겠습니다. DataBrew는 데이터 분석가와 과학자가 분석 또는 기계 학습을 준비하기 위해 데이터를 쉽게 정리하고 정규화할 수 있는 시각적 데이터 준비 도구입니다. 여기에는 일반적인 데이터 준비 사용 사례를 위한 350개 이상의 사전 구축된 변환이 포함되어 있어 코드를 작성하지 않고도 데이터 세트를 정리, 준비 및 결합할 수 있습니다.
오늘 포스팅에서 우리는 OurCompany라는 가상의 작은 네덜란드 태양광 패널 배포 및 설치 회사의 역할을 맡습니다. 우리는 이 회사가 네덜란드 공공 기관인 CBS(Centraal Bureau voor de Statistiek) 또는 영어로 Statistics Netherlands에서 공개적으로 사용 가능한 데이터로 내부 데이터 세트를 준비, 결합 및 강화할 방법을 알아볼 것입니다. 궁극적으로 OurCompany는 두 가지 중요한 KPI(핵심 성과 지표), 즉 태양 전지 패널 설치 양과 지역당 총 에너지 용량(kW)에 대해 CBS가 공식적으로 보고한 값과 비교하여 얼마나 잘 수행하고 있는지 알고자 합니다.
솔루션 개요
이 아키텍처는 데이터 준비 및 변환을 위해 DataBrew를 사용하고, 전체 데이터 파이프라인의 스토리지 계층으로 Amazon Simple Storage Service(Amazon S3)를 사용하고, 데이터 세트의 비즈니스 및 기술 메타데이터를 저장하기 위해 AWS Glue Data Catalog를 사용합니다. 최신 데이터 아키텍처 모범 사례에 따라 이 솔루션은 Lake House 아키텍처의 기본 논리 계층을 준수합니다.
솔루션에는 다음 단계가 포함됩니다.
- Amazon S3를 사용하여 raw-data, transformed-data 및 curated-data 폴더를 생성하여 스토리지 계층을 설정했습니다. 이 폴더를 사용하여 데이터 파이프라인 소비 준비의 다양한 단계를 추적합니다.
- CBS의 외부 데이터 세트뿐만 아니라 처리되지 않은 태양 전지판 데이터를 포함하는 3개의 CSV 원시 데이터 파일이 raw-data S3 폴더에 수집됩니다.
- 아키텍처의 이 부분은 처리 및 카탈로그 기능을 모두 통합합니다:
- AWS Glue 크롤러를 사용하여 원시 데이터 세트에 대한 초기 스키마 정의 테이블을 자동으로 채웁니다. 데이터 파이프라인의 나머지 두 단계(transformed-data 및 curated-data)의 경우 DataBrew의 기능을 활용하여 스키마 정의 테이블을 Data Catalog에 직접 생성합니다. 각 테이블은 Amazon S3에 저장하는 데이터 세트의 최신 스키마 정의를 제공합니다.
- 우리는 데이터 분석 및 변환 노력의 핵심으로 DataBrew 프로젝트와 협력합니다. 여기에서 코드 없는 데이터 준비 및 변환 단계를 설정하고 고도의 대화형 직관적인 사용자 인터페이스를 통해 시각화합니다. 마지막으로 DataBrew 작업을 정의하여 이러한 단계를 적용하고 Amazon S3에 변환 출력을 저장합니다.
- 세분화된 액세스 제어의 이점을 얻고 Amazon S3의 데이터를 쉽게 시각화하기 위해 Amazon Athena와 Amazon QuickSight 간의 원활한 통합을 활용합니다. 이는 매니페스트 파일을 생성 및 유지 관리할 필요 없이 Amazon S3에 저장된 선별된 데이터 세트에서 필요한 모든 정보를 쿼리할 수 있는 SQL 인터페이스를 제공합니다.
- 마지막으로 QuickSight를 사용하여 대화형 대시보드를 구성하여 두 가지 중요한 KPI와 함께 최종 선별된 데이터 세트를 설명합니다.
전제 조건
이 튜토리얼을 시작하기 전에 솔루션의 일부로 필요한 리소스를 생성하는 데 필요한 IAM(Identity and Access Management) 권한이 있는지 확인하십시오. 처리된 데이터에 대한 시각화를 생성하려면 AWS 계정에도 QuickSight 구독이 활성화되어 있어야 합니다. QuickSight 계정이 없는 경우 계정을 등록할 수 있습니다.
다음 섹션에서는 코드를 사용하지 않고 OurCompany에 대한 전체 데이터 파이프라인을 만들고 배포하는 단계별 가이드를 제공합니다.
데이터 준비 단계
다음 파일로 작업합니다:
- CBS Dutch municipalities and provinces (Gemeentelijke indeling op 1 januari 2021) – 네덜란드의 모든 지방 자치 단체 및 주 이름과 코드가 있습니다. gemeenten alfabetisch 2021 파일을 다운로드합니다. 파일을 열고 cbs_regions_nl.csv로 저장합니다. 형식을 CSV(쉼표로 구분)로 변경해야 합니다.
- CBS Solar power dataset(Zonnestroom, vermogen bedrijven en winingen, regio, 2012-2018) – 이 파일에는 2012-2018년 동안 네덜란드 전역의 기업 및 개인 주택에 대한 설치 용량(킬로와트) 및 총설치 수가 포함되어 있습니다. 파일을 다운로드하려면 데이터 세트 페이지로 이동하여 Onbewerkte dataset를 선택하고 CSV 파일을 다운로드하십시오. 파일 이름을 cbs_sp_cap_nl.csv로 바꿉니다.
- OurCompany’s solar panel historical data – 2012년부터 2018년까지 네덜란드 전역 OurCompany의 모든 태양광 패널 설치에서 보고된 에너지 용량이 포함되어 있습니다. 파일을 다운로드하십시오.
결과적으로 다음은 데이터 분석 파이프라인 작업에 사용하는 예상 입력 파일입니다:
- cbs_regions_nl.csv
- cbs_sp_cap_nl.csv
- sp_data.csv
스토리지 계층 설정
먼저 모든 원시, 변환 및 큐레이트된 데이터 세트를 저장하기 위해 솔루션에 대한 스토리지 계층을 생성해야 합니다. Amazon S3를 전체 데이터 파이프라인의 스토리지 계층으로 사용합니다.
- 이 솔루션을 구축하려는 AWS 리전에 S3 버킷을 생성합니다. 이 경우 버킷의 이름은 cbs-solar-panel-data입니다. 동일한 이름 뒤에 고유 식별자를 사용할 수 있습니다.
- Create folder (폴더 생성)을 선택하여 S3 버킷에 다음 세 개의 접두사(폴더)를 생성합니다.
- curated-data/
- raw-data/
- transformed-data/
3. 3개의 원시 파일을 raw-data/ 접두사에 업로드합니다.
4. transformed-data/ 접두사 내에 cbs_data/ 및 sp_data/라는 접두사 두 개를 만듭니다.
데이터 카탈로그 데이터베이스 생성
데이터 파이프라인의 스토리지 계층을 설정한 후에는 Amazon S3에서 호스팅 되는 데이터 세트의 모든 메타데이터를 저장할 데이터 카탈로그를 생성해야 합니다.
이렇게 하려면 다음 단계를 따르세요:
- 새로 생성된 S3 버킷의 동일한 리전에서 AWS Glue 콘솔을 엽니다.
- 탐색 창에서 Databases (데이터베이스)를 선택합니다.
- Add database(데이터베이스 추가)를 선택합니다.
- 모든 데이터 세트의 메타데이터를 저장할 데이터 카탈로그의 이름을 입력합니다.
- 데이터베이스 이름을 sp_catalog_db로 지정합니다.
AWS Glue 데이터 크롤러 생성
카탈로그 데이터베이스를 생성했으므로 원시 데이터 접두사를 크롤링하여 각 입력 파일과 연결된 메타데이터를 자동으로 검색할 차례입니다.
- AWS Glue 콘솔의 탐색 창에서 Crawlers를 선택합니다.
- crawler_raw라는 이름의 크롤러를 추가하고 Next(다음)를 선택합니다.
- S3 path (S3 경로)의 경우 cbs-solar-panel-data 접두사의 raw-data 폴더를 선택합니다.
- IAM 역할을 생성하고 이름을 AWSGlueServiceRole-cbsdata로 지정합니다.
- Run on demand(빈도를 요청 시 실행)로 둡니다.
- 이전 섹션에서 만든 sp_catalog_db 데이터베이스를 선택하고 raw_ 접두사를 입력하여 원시 데이터 폴더에 속한 테이블을 식별합니다.
- 크롤러의 매개변수를 검토한 다음 Finish(마침)를 선택합니다.
- 크롤러가 생성되면 크롤러를 선택하고 Run crawler(크롤러 실행)를 선택합니다.
크롤러를 성공적으로 배포하면 sp_catalog_db 데이터베이스에 raw_sp_data_csv, raw_cbs_regions_nl_csv 및 raw_cbs_sp_cap_nl_csv라는 세 개의 테이블이 생성됩니다.
DataBrew 원시 데이터 세트 생성
DataBrew의 기능을 활용하려면 방금 생성한 Data Catalog S3 테이블을 가리키는 데이터 세트를 연결해야 합니다. 데이터 세트를 연결하려면 다음 단계를 따르세요:
- DataBrew 콘솔의 탐색 창에서 Datasets (데이터 세트)를 선택합니다.
- Connect new dataset (새 데이터 세트 연결)을 선택합니다.
- 데이터 세트의 이름을 cbs-sp-cap-nl-dataset로 지정합니다.
- 새 Connect to new dataset (데이터 세트에 연결)에서 Data Catalog S3 tables를 선택합니다.
- sp_catalog_db 데이터베이스와 raw_cbs_sp_cap_nl_csv 테이블을 선택합니다.
- Create dataset(데이터 세트 생성)을 선택합니다.
동일한 프로세스에 따라 두 개의 데이터 세트를 더 생성해야 합니다. 다음 표에는 새 데이터 세트에 필요한 카탈로그의 이름과 테이블이 요약되어 있습니다.
DataBrew 레시피 가져오기
레시피는 데이터 변환 단계의 집합입니다. 이러한 변환은 DataBrew 프로젝트의 하나 이상의 데이터 세트에 적용됩니다. 레시피에 대한 자세한 내용은 AWS Glue DataBrew 레시피 생성 및 사용을 참조하십시오.
우리는 이 데이터 파이프라인에 필요한 데이터 변환 단계 세트를 포함하는 세 가지 DataBrew 레시피를 준비했습니다. 이러한 변환 단계 중 일부에는 열 이름 바꾸기(네덜란드어에서 영어로), null 또는 누락된 값 제거, 특정 속성을 기반으로 행 집계, 변환 단계에서 데이터 세트 결합이 포함됩니다.
레시피를 가져오려면 다음 지침을 따르십시오:
- DataBrew 콘솔의 탐색 창에서 Recipes(레시피)를 선택합니다.
- Upload Recipe(레시피 업로드)를 선택합니다.
- 레시피의 이름을 입력하십시오: recipe-1-transform-cbs-data.
- 다음 JSON 레시피를 업로드합니다.
- Create recipe (레시피 생성)을 선택합니다.
이제 DataBrew에서 변환 및 집계 프로젝트에 사용하는 레시피를 두 개 더 업로드해야 합니다.
6. 동일한 절차에 따라 다음 레시피를 가져옵니다:
- All recipes(모든 레시피)로 필터링된 Recipes(레시피) 섹션에 레시피가 나열되어 있는지 확인합니다.
DataBrew 프로젝트 및 작업 설정
Data Catalog 데이터베이스, 크롤러, DataBrew 데이터 세트를 성공적으로 생성하고 DataBrew 레시피를 가져온 후 첫 번째 변환 프로젝트를 생성해야 합니다.
CBS 외부 데이터 변환 프로젝트
첫 번째 프로젝트는 cbs-sp-cap-nl-dataset 변환, 정리 및 준비를 처리합니다. 프로젝트를 생성하려면 다음 단계를 따르세요.
- DataBrew 콘솔의 탐색 창에서 Projects (프로젝트)를 선택합니다.
- 1-transform-cbs-data라는 이름으로 새 프로젝트를 만듭니다.
- Recipe details (레시피 세부 정보) 섹션에서 Edit existing recipe (기존 레시피 편집)을 선택하고 레시피 recipe-1-transform-cbs-data를 선택합니다.
- Select a dataset (데이터 세트 선택)에서 새로 생성된 cbs-sp-cap-nl-dataset을 선택합니다.
- Permissions (권한) 섹션에서 Create a new IAM role (새 IAM 역할 생성)을 선택합니다.
- 접미사로 sp-project를 입력합니다.
- Create project (프로젝트 생성)을 선택합니다.
프로젝트를 생성한 후 선택한 레시피를 적용한 결과 미리 보기 데이터 세트가 표시됩니다. 10 more recipe steps(10가지 더 많은 레시피 단계)를 선택하면 서비스에 전체 변환 단계 세트가 표시됩니다.
프로젝트를 생성한 후 IAM에서 생성된 역할 AWSGlueDataBrewServiceRole-sp-project에 S3 객체 넣기 및 삭제 권한을 부여해야 합니다. 다음 JSON을 사용하여 인라인 정책을 추가하고 리소스를 S3 버킷 이름으로 바꿉니다:
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“s3:PutObject”,
“s3:DeleteObject”
],
“Resource”: “arn:aws:s3:::<your-S3-bucket-name>/*”
}
]
}
이 역할에는 데이터 카탈로그에 액세스할 수 있는 권한도 필요합니다. 이러한 권한을 부여하려면 관리형 정책 AWSGlueServiceRole을 역할에 추가하십시오.
CBS 외부 데이터 변환 작업
프로젝트를 정의한 후에는 S3 버킷의 Raw-data 폴더에 저장된 전체 원시 데이터 세트에 변환을 적용하는 작업을 구성하고 실행해야 합니다.
이렇게 하려면 다음을 수행해야 합니다:
- DataBrew 프로젝트 페이지에서 Create job (작업 생성)을 선택합니다.
- Job name (작업 이름)에 1-transform-cbs-data-job을 입력합니다.
- 출력 대상에서 Data Catalog S3 테이블을 선택합니다.
- File type (파일 형식)에 대해 Parquet을 선택합니다.
- Database name (데이터베이스 이름)으로 sp_catalog_db를 선택합니다.
- Table name (테이블 이름)에서 Create new table (새 테이블 생성)을 선택합니다.
- Catalog table name (카탈로그 테이블 이름)에 transformed_cbs_data를 입력합니다.
- S3 location (S3 위치)에 s3://<your-S3-bucket-name>/transformed-data/cbs_data/를 입력합니다.
9. 작업 출력 설정 섹션에서 Settings (설정)을 선택합니다.
10. Replace output files for each job run (각 작업 실행에 대해 출력 파일 바꾸기)를 선택한 다음 Save (저장)을 선택합니다.
- 권한 섹션에서 sp-project 접미사가 있는 자동 생성 역할을 선택합니다(예: AWSGlueDataBrewServiceRole-sp-project).
12. 작업 세부 정보를 한 번 더 검토한 다음 Create and run job (작업 생성 및 실행)을 선택합니다.
13. 기본 프로젝트 보기로 돌아가서 작업 세부 정보를 선택합니다.
몇 분 후 작업 상태 Running(실행 중)에서 Successful(성공)로 변경됩니다. 생성된 모든 Parquet 파일이 저장된 S3 위치로 이동할 출력을 선택합니다.
태양광 패널 데이터 변환 단계
이제 데이터 파이프라인의 두 번째 단계를 생성합니다. 이전 섹션에서 설명한 것과 동일한 절차를 사용하여 프로젝트와 작업을 만듭니다.
- 다음 매개변수를 사용하여 DataBrew 프로젝트를 생성합니다.
- 프로젝트 이름 – 2-transform-sp-data
- 가져온 레시피 – recipe-2-transform-sp-data
- 데이터 세트 – sp_dataset
- 권한 역할 – AWSGlueDataBrewServiceRole-sp-project
- 다음 매개변수를 사용하여 다른 DataBrew 작업을 생성하고 실행합니다.
- 작업 이름 – 2-transform-sp-data-job
- 출력 대상 – Data Catalog S3 테이블
- 파일 형식 – Parquet
- 데이터베이스 이름 – sp_catalog_db
- 테이블 이름으로 새 테이블 생성 – transformed_sp_data
- S3 위치 – s3://<your-S3-bucket-name>/transformed-data/sp_data/
- 설정 – 각 작업 실행에 대한 출력 파일을 바꿉니다.
- 사용 권한 역할 – AWSGlueDataBrewServiceRole-sp-project
- 작업이 완료되면 다음 매개변수를 사용하여 DataBrew 데이터세트를 생성합니다.
이제 DataBrew 데이터 세트의 일부로 5개의 항목이 표시되어야 합니다.
데이터 큐레이션 및 집계 단계
이제 최종 DataBrew 프로젝트와 작업을 생성합니다.
- 다음 매개변수를 사용하여 DataBrew 프로젝트를 생성합니다:
- 프로젝트 이름 – 3-curate-sp-cbs-data
- 가져온 레시피 – recipe-3-curate-sp-cbs-data
- 데이터 세트 – transformed_sp_dataset
- 권한 역할 – AWSGlueDataBrewServiceRole-sp-project
- 다음 매개변수를 사용하여 DataBrew 작업을 생성합니다:
- 작업 이름 – 3-curate-sp-cbs-data-job
- 출력 대상 – Data Catalog S3 테이블
- 파일 형식 – Parquet
- 데이터베이스 이름 – sp_catalog_db
- 테이블 이름으로 새 테이블 생성 – curated_data
- S3 위치 – s3://<your-S3-bucket-name>/curated-data/
- 설정 – 각 작업 실행에 대한 출력 파일 바꾸기
- 권한 역할 – AWSGlueDataBrewServiceRole-sp-project
마지막 프로젝트는 단일 변환 단계를 정의합니다; 지방 자치 단체 코드 및 연도를 기반으로 하는 transformed-cbs-dataset과 transformed-sp-dataset 간의 조인입니다.
DataBrew 작업을 완료하는 데 몇 분 정도 걸립니다.
그런 다음 sp_catalog_db 데이터베이스를 확인합니다. 이제 데이터베이스에 원시, 변환 및 큐레이트된 테이블이 있어야 합니다. DataBrew는 카탈로그의 변환된 테이블과 선별된 테이블 모두에 접두사 awsgluedatabrew_를 자동으로 추가합니다.
기술 분석을 위해 선별된 데이터 세트 사용
이제 QuickSight를 사용하여 기술 분석을 위한 소비 계층을 구축할 준비가 되었습니다. 이 섹션에서는 2012년부터 2018년까지 CBS에서 보고한 값과 대조적으로 OurCompany의 태양광 패널 에너지 용량 및 설치 참여를 반영하는 비즈니스 인텔리전스 대시보드를 구축합니다.
이 섹션을 완료하려면 데이터 파이프라인을 구현한 동일한 리전의 Athena에 기본 작업 그룹이 이미 설정되어 있어야 합니다. Athena에서 작업 그룹을 처음 설정하는 경우 작업 그룹 설정의 지침을 따르십시오. 또한 QuickSight에 Athena 및 S3 버킷에 액세스할 수 있는 올바른 권한이 있는지 확인하십시오. 그런 다음 다음 단계를 완료하십시오:
- QuickSight 콘솔의 탐색 창에서 Datasets (데이터 세트)를 선택합니다.
- Create a new dataset (새 데이터 세트 생성)을 선택합니다.
- Athena를 데이터 소스로 선택합니다.
- Data source name (데이터 소스 이름)에 sp_data_source를 입력합니다.
- Create data source (데이터 소스 생성)을 선택합니다.
- AWSDataCatalog를 카탈로그로 선택하고 sp_catalog_db를 데이터베이스로 선택합니다.
- curated_data 테이블을 선택합니다.
8. Select(선택)를 선택합니다.
- Finish dataset creation(데이터 세트 생성 완료) 섹션에서 Directly query your data(데이터 직접 쿼리)를 선택하고 Visualize(시각화)를 선택합니다.
- Visual types (시각적 유형) 목록에서 군집 막대 콤보 차트를 선택합니다.
- field wells(필드 웰) 섹션을 확장하고 다음 스크린샷과 같이 다음 필드를 각 섹션으로 끌어다 놓습니다.
- 원하는 대로 시각화 이름을 바꾸고 선택적으로 Filter(필터) 옵션을 사용하여 sp_year 별로 보고서를 필터링합니다.
이 그래프에서 우리는 이미 CBS가 보고한 지역 값에 대해 OurCompany를 총설치량과 태양 전지판에서 생성된 총 kW 용량이라는 두 가지 차원에서 벤치마킹할 수 있습니다.
우리는 한 단계 더 나아가 설명 분석 기능을 강화하기 위해 두 개의 KPI 시각화를 만들었습니다. 다음은 의사 결정 프로세스를 향상하는 데 사용할 수 있는 최종 대시보드입니다.
리소스 정리
데이터 파이프라인에 대해 생성한 모든 리소스를 정리하려면 다음 단계를 완료하십시오.
- 생성한 QuickSight 분석을 제거합니다.
- 데이터 세트 curated_data를 삭제합니다.
- 연결된 레시피와 함께 모든 DataBrew 프로젝트를 삭제합니다.
- 모든 DataBrew 데이터세트를 삭제합니다.
- 생성한 모든 AWS Glue 크롤러를 삭제합니다.
- sp_catalog_db 카탈로그 데이터베이스를 삭제합니다; 이것은 모든 테이블을 제거합니다.
- S3 버킷의 내용을 비우고 삭제합니다.
결론
오늘 포스팅에서는 데이터 분석 여정을 시작하는 방법을 알아보았습니다. DataBrew를 사용하면 코드를 한 줄도 작성하지 않고도 네덜란드 CBS(Central Bureau voor de Statistiek)의 데이터와 같은 공개적으로 사용 가능한 데이터 세트와 함께 이미 가지고 있는 데이터를 준비하고 결합할 수 있습니다. 지금 DataBrew 사용을 시작하고 AWS에서 주요 데이터 세트를 강화하여 향상된 설명 분석 기능을 사용해보세요.
메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.