GCP Dataprep 사용 해보기

Posted by Jungwoon Blog on February 28, 2018

GCP Dataprep 사용 해보기

Google Cloud에 있는 Dataprep은 데이터를 분석하고 정리해서 시각적으로 보여주는 서비스 입니다. 데이터를 내 입맛대로 바꾸면 내부에서 Dataflow를 통해서 데이터를 변경합니다. 데이터를 변경하기 위해 Dataflow로 코드를 짤 필요가 없죠

어떤 서비스인지는 아래 실습을 보면서 감을 잡아보도록 하겠습니다

자세한 정보는 공식 문서를 확인하시길 바랍니다


실습

우선 구글 클라우드 콘솔에 들어갑니다.

좌측 메뉴에서 Dataprep 을 찾아서 클릭합니다

맨 처음 접근한다면 아래와 같이 Dataprep을 사용하겠다고 Allow를 해줘야 합니다

그럼 다음과 같이 화면이 나타나고, Dataprep에서 사용하는 저장소에 대해서 설정하는 부분이 나오는데, 기본적으로 GCS를 사용합니다

기본값으로 놔두고 Continue를 눌러서 진행을 합니다

그럼 다음과 같이 처음에 Flow에 대한 부분이 나옵니다.

Dataprep은 크게 3가지 메뉴로 구성되어 있습니다.

  1. Flows : 변경 작업에 대한 Workflow가 저장이 됩니다(=Recipe 저장)
  2. Datasets : import한 데이터가 저장이 됩니다
  3. 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 columnsAdd를 눌러 지웁니다

그럼 새로 생성된 컬럼은 지워지고 지금까지 변경을한 일련의 작업이 순서대로 Recipe에 보이게 됩니다

이제 변경된 내용으로 실제 파일을 생성하기 위해 우측 상단에 Run Job을 누릅니다

그럼 Export에 대한 Summary가 보이는데 어디에 Export할 것인지등을 설정할 수 있습니다

관련정보 확인해보고 우측 하단에 Run Job을 눌러서 Export를 시작합니다

그럼 아래와 같은 화면이 보이면서 변경을 시작합니다

좀 더 자세한 상태를 보고 싶으면 상단의 JOBS메뉴를 누르면 아래와 같이 좀 더 자세한 상태를 볼 수 있습니다

우측의 메뉴 - View Dataflow Job을 눌러봅니다

그럼 실제로 변경 작업을 위해서 Dataflow가 돌고 있는 모습을 볼 수 있습니다

완료가 되면 아래와 같이 STATUSCompleted가 뜹니다

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을 이용하면 누구나 쉽게 직관적으로 데이터를 내 입맛에 맞게 변경할 수 있습니다.

아직 ImportExportGCSBigQuery와 같이 구글 서비스에서만 이용할 수 있는게 아쉽지만, 베타 버전이기도 하니 나중에 다른 Database로컬에 저장하거나 하는 기능들까지 지원해주면 정말 유용한 서비스가 될걸로 생각이 됩니다