Google Cloud에 있는 Dataprep은 데이터를 분석하고 정리해서 시각적으로 보여주는 서비스 입니다. 데이터를 내 입맛대로 바꾸면 내부에서 Dataflow를 통해서 데이터를 변경합니다. 데이터를 변경하기 위해 Dataflow로 코드를 짤 필요가 없죠
어떤 서비스인지는 아래 실습을 보면서 감을 잡아보도록 하겠습니다
자세한 정보는 공식 문서를 확인하시길 바랍니다
실습
우선 구글 클라우드 콘솔에 들어갑니다.
좌측 메뉴에서 Dataprep
을 찾아서 클릭합니다
맨 처음 접근한다면 아래와 같이 Dataprep
을 사용하겠다고 Allow
를 해줘야 합니다
그럼 다음과 같이 화면이 나타나고, Dataprep
에서 사용하는 저장소에 대해서 설정하는 부분이 나오는데, 기본적으로 GCS
를 사용합니다
기본값으로 놔두고 Continue
를 눌러서 진행을 합니다
그럼 다음과 같이 처음에 Flow
에 대한 부분이 나옵니다.
Dataprep
은 크게 3가지 메뉴
로 구성되어 있습니다.
Flows
: 변경 작업에 대한Workflow
가 저장이 됩니다(=Recipe 저장)
Datasets
:import한 데이터
가 저장이 됩니다Jobs
: 변경 작업을 하는 작업을 볼 수 있습니다
Create Flow
를 누릅니다
Flow 이름
을 지정하고 Create
를 누릅니다
Import & Add datasets
를 눌러서 데이터를 넣습니다
그럼 다음과 같이 데이터를 올릴 수 있는 화면이 나타납니다
올릴 수 있는 건 현재(2018.02.28.기준) 아래와 같습니다
Local의 csv파일
GCS의 csv파일
BigQuery
저는 제가 가지고 있는 user_data.csv
란 파일을 올려보도록 하겠습니다
그럼 데이터가 올라가고 우측에 해당 데이터에 대한 Preview
를 볼 수 있습니다
그 다음 우측 하단에 있는 Import & Add to Flow
버튼을 누릅니다.
그럼 다음과 같은 화면이 보이고, 여기서 우측의 Add new Recipe
버튼을 눌러서 새로운 Workflow
를 만들어 줍니다
그 다음 Edit Receipe
를 눌러서 해당 Flow
를 수정합니다
그럼 아래와 같이 자동으로 Datasets
에 올린 CSV파일
을 읽어와 테이블 형태로 보여줍니다
개별 컬럼 이름의 우측에 있는 화살표
를 누르면 데이터를 변경할 수 있는 메뉴들이 뜹니다
저는 날짜를 변경해보도록 하겠습니다. Format - Change format...
을 누릅니다
(날짜 포맷은 개별 팀마다 너무 달라서 데이터 통합시 자주 맞춰줘야 하기 때문에 해당 작업을 살펴 보도록 하겠습니다.)
그럼 자동으로 우측에 바꿔주는데, 저희는 MM/dd/yyyy
에서 yyyy-MM-dd
로 바꿔보도록 하겠습니다
우측의 메뉴에서 yyyy-MM-dd
로 바꿔줍니다
그럼 바로 테이블에 원본 컬럼
에 취소선
이 가고 바로 우측에는 변경 후 예상되는 데이터
를 보여줍니다
확인 후에 우측 하단
에 Add
를 누릅니다
그럼 아래와 같이 적용된 모습이 보이고 우측에는 Date Format을 변경하는 Recipe(=Query)가 추가
된 것을 볼 수 있습니다
개별 컬럼의 제목을 누르면 우측에 Dataprep이 알아서 바꿀 만한 설정
등을 보여주고 해당 설정
에 마우스 커서를 가져가면
해당 설정 이후에 데이터 변경 Preview
가 보이기 시작합니다
데이터 타입같은 경우도 컬럼 제목 우측 화살표 - Change type - 바꾸고자 하는 type 선택
으로 손쉽게 변경할 수 있습니다
두개이상의 컬럼제목을 누르고 우측을 보면 변경할 수 있는 작업이 보이고 아래는 Merge
에 대한 Preview
를 본 예제입니다
Add
를 눌러서 Merge
한 컬럼을 추가를 먼저 합니다
그리고 Merge가 되어 생성된 컬럼
을 확인합니다
불필요 하니 해당 컬럼을 클릭하고 우측의 Delete columns
의 Add
를 눌러 지웁니다
그럼 새로 생성된 컬럼은 지워지고 지금까지 변경을한 일련의 작업이 순서대로 Recipe
에 보이게 됩니다
이제 변경된 내용으로 실제 파일을 생성하기 위해 우측 상단에 Run Job
을 누릅니다
그럼 Export
에 대한 Summary
가 보이는데 어디에 Export
할 것인지등을 설정할 수 있습니다
관련정보 확인해보고 우측 하단에 Run Job
을 눌러서 Export
를 시작합니다
그럼 아래와 같은 화면이 보이면서 변경을 시작합니다
좀 더 자세한 상태를 보고 싶으면 상단의 JOBS
메뉴를 누르면 아래와 같이 좀 더 자세한 상태를 볼 수 있습니다
우측의 메뉴 - View Dataflow Job
을 눌러봅니다
그럼 실제로 변경 작업을 위해서 Dataflow
가 돌고 있는 모습을 볼 수 있습니다
완료가 되면 아래와 같이 STATUS
에 Completed
가 뜹니다
Completed옆 화살표 - View Results
를 누릅니다
그럼 변경 결과에 대한 Summary를 확인할 수 있습니다. 우측 상단에 Export Results
버튼을 누릅니다
그럼 아래와 같이 보이는데 Cloud Storage
옆에 주소를 누릅니다
그럼 Export 되어 저장된 파일을 볼 수 있는데, 파일이 두개가 생기는데(왜 두개가 생기는지는 모르겠네요, 백업용인가?)
용량이 있는걸 클릭하면 다운로드가 시작됩니다
다운로드가 되는걸 확인할 수 있습니다
하지만 다운받은 파일을 보면 CSV 파일
이 아니네요
그래서 *.csv
형태로 이름을 다시 변경합니다
그리고 해당 파일을 열어보면 변경된 파일을 볼 수 있습니다
유용한 기능 (=스케쥴링)
Dataprep에는 무려 Schedule
기능도 제공합니다 갓 구글
반복되는 작업을 Recipe로 만들어 놓으면
정해놓은 시간에 자동으로 데이터를 변경하게끔 할 수 있습니다. 사용하는 방법은 아래와 같습니다
FLOWS
에서 스케쥴 설정을 하고 싶은 Flow 우측메뉴 - Add Schedule...
를 누릅니다
그 다음 시간을 잡아주고 Save
를 누릅니다
하지만 해당 Flow를 누르면 다음과 같이 Export를 어디에 할 것인지 설정이 안되어 있다고 나옵니다
Recipe
옆의 화살표 버튼
을 누릅니다
그럼 우측의 Scheduled destinations
에 설정이 안되어 있다고 나옵니다 옆에 Add
를 누릅니다
그럼 다음과 같이 Export
에 대한 설정을 할 수 있는데 우측의 Add Publishing Action
을 누릅니다
여기서 이제 Scheduled된 데이터
를 GCS
에 저장할건지 BigQuery
에 저장할건지, 그리고 추가
할건지 교체
할건지에 대한 설정을 할 수 있습니다
자신에 맞게끔 정하고 Save Settings
를 누릅니다
그럼 이전 화면에 해당 메뉴가 추가된것을 확인할 수 있고, 우측 하단에 Save settings
를 누릅니다
그럼 다음과 같이 에러가 사라진것을 확인할 수 있습니다. 이렇게까지 설정을하면 정해진 시간에 데이터를 처리해서 저장을 하게 됩니다
마무리하며
데이터 변경시에, 코드나 Query를 이용해서도 바꿀 수 있는데, 관련 지식이 없으면 매우 힘든데, Dataprep을 이용하면 누구나 쉽게 직관적으로 데이터를 내 입맛에 맞게 변경할 수 있습니다.
아직 Import
와 Export
가 GCS
와 BigQuery
와 같이 구글 서비스에서
만 이용할 수 있는게 아쉽지만, 베타 버전이기도 하니 나중에 다른
Database
나 로컬
에 저장하거나 하는 기능들까지 지원해주면 정말 유용한 서비스가 될걸로 생각이 됩니다