Cloud Dataprep 사용해보기

김민형·2022년 8월 3일
0

GCP - Data

목록 보기
27/44

Cloud Dataprep

Cloud Dataprep은 간단한 드래그 앤 드롭 브라우저 환경에서 데이터를 시각적으로 탐색 및 정리하고 분석이 가능하도록 여러 데이터 세트를 준비하는 데 활용되는 지능형 데이터 서비스이다.
데이터를 내 입맛대로 바꾸면 내부에서 Dataflow를 통해서 데이터를 변경한다.
따라서 데이터 변경을 위해 Dataflow로 코드를 짤 필요가 없다.

Dataprep 접속

ecommerce Dataset 생성

CREATE OR REPLACE TABLE ecommerce.all_sessions_raw_dataprep
OPTIONS(
description="Raw data from analyst team to ingest into Cloud Dataprep"
) AS
SELECT * FROM data-to-insights.ecommerce.all_sessions_raw
WHERE date = '20170801'; # limiting to one day of data 56k rows for this lab

all_sessions_raw_dataprep 테이블 생성

Dataprep으로 이동


Dataprep 대시보드가 보여지게 되고 flow를 생성해준다.




ecommerce dataset을 가져올 것이다.



Import & Add to flow



32개의 열과 12,783개의 행이 있고 마우스 커서를 그래프에 갖다대면 해당 값을 볼 수 있다.

ex) 세션이 시작된 상위 3개국 > 미국, 인도, 영국이 것을 country에 커서를 갖다댐으로서 확인할 수 있다.

데이터 탐색

totalTransactionRevenue
totalTransactionRevenue의 회색 선은? > totalTransactionRevenue필드 값이 누락됐다는 것이다. 

이는 이 샘플의 많은 세션에서 수익이 발생하지 않았음을 의미

(이러한 값을 필터링하여 최종 테이블에 고객 거래 및 관련 수익만 표시할 것이다.)

timeOnSite
데이터 샘플의 최대값(초) 확인하기

  • Maximum Time On Site: 5,561 seconds (or 92 minutes)
  • Maximum Pageviews: 155 pages
  • Maximum Session Quality Dimension: 97

data

data 열을 상세히 봐보면 2017.08.01의 데이터인 것을 알 수 있다.

productSKU

열 아래 빨간색이 의미하는 것은?
빨간색 막대는 일치하지 않는 값을 나타낸다. 
데이터를 샘플링하는 동안 Dataprep은 각 열의 유형을 자동으로 식별하려고 한다.
열에 빨간색 막대가 표시되지 않으면 Dataprep이 열을 올바르게 식별했음을 의미.

위에 표시된 빨간색 막대는 Dataprep이 샘플링에서 유형이 정수여야 한다고 잘못 판단해서 정수가 아닌 값도 감지가 되는데 해당 값은 일치하지 않는 것으로 표시한 것이다.
productSKU열은 항상 정수가 아니다("GGOEGOCD078399"일 수 있음). 
따라서 이 경우 Dataprep이 열 유형을 잘못 식별하 것.
정수가 아니라 문자열이어야 합니다.

itemQuantity, itemRevenue

NULL값 밖에 없다.

데이터 전처리

ProductSKU 열 데이터 유형 변환


빨간색 막대가 사라지고 값이 정상적으로 인식하는 것을 확인할 수 있다.


레시피 아이콘을 눌러서 데이터 변환 파이프라인의 첫 번째 단계가 생성되었는지 확인

itemQuantity 및 itemRevenue 열 삭제
열에는 NULL 값만 포함되어 있으므로 이 열은 이 실습의 목적에 유용하지 않으므로 삭제

행 중복 제거
소스 데이터 세트에 중복 세션 값이 포함되어 있을 수 있다. 중복 제거를 통해 이를 제거

수익이 없는 세션 필터링
웹 사이트에서 하나 이상의 항목을 구매한 모든 사용자 세션의 테이블을 생성하도록 요청했다고 가정.
수익이 NULL인 사용자 세션을 필터링해보자

회색 부분 클릭 > 누락된 값이 있는 모든 행 은 이제 빨간색으로 강조 표시된다. > Add

페이지뷰에 대한 세션 필터링

데이터세트에는 PAGE 또는 EVENT ("제품 카테고리 조회" 또는 "장바구니에 추가됨"과 같은 트리거 이벤트 의 경우)와 같은 다양한 유형의 세션이 포함 되어있다. 
페이지뷰 세션이 이중으로 계산되지 않도록 하려면 페이지뷰 관련 조회수만 포함하도록 필터를 추가할 것이다.


PAGE 막대를 클릭 > PAGE 유형의 모든 행 이 이제 녹색으로 강조 표시될 것이다 > Add

방문자에 대한 새 열 만들기
데이터 세트에는 고유 방문자 세션에 대한 단일 열이 없다.
fullVisitorID 및 visitId 필드를 연결하여 각 세션에 대한 고유 ID를 만들 것이다.


열 병합 아이콘 클릭

구분기호는 -로 해주고 새 열의 이름지정해준다 > Add
unique_session_id 는 fullVisitorId 와 visitId 의 조합이다.

전자상거래 작업 유형에 대한 case statement 만들기
eCommerceAction_type 열은 7개의 값이 있었고 해당 세션에서 수행된 실제 전자상거래 작업에 매핑되는 정수이다.

0은 알 수 없음을, 3= 장바구니에 추가, 5= 체크아웃, 6= 구매완료 등등

이 매핑은 최종 사용자에게 즉시 명확하지 않으므로 값 이름을 가져오는 계산된 필드를 만들어 볼 것이다.



add를 클릭해서 value를 9개까지 만들어준다.

ComparisonNew Value
0'알려지지 않은'
1'제품 목록 클릭'
2'상품 상세보기'
3'장바구니에 제품 추가'
4'장바구니에서 제품 제거'
5'체크아웃'
6'구매완료'
7'구매환불'
8'결제 옵션'


새 열 이름 에 eCommerceAction_label 을 입력 > Add

totalTransactionRevenue 값 조정
totalTransactionRevenue 열에는 10^6을 곱한 값이 포함된다.
(ex: 2.40은 2400000으로 지정됨). 
이제 해당 열의 내용을 10^6으로 나누어 원래 값을 얻을 것이다.

DIVIDE(totalTransactionRevenue,1000000)


새 totalTransactionRevenue1 열의 유형을 십진법으로 변환


10단계의 레시피 RUN

파이프라인 실행


생성된 게시 작업에서 편집 클릭



빅쿼리 ecommerce 데이터세트에 revenue_reporting이라는 새 테이블에 처리된 데이터를 적재할 것이다.

성공

Cloud Dataprep 작업이 완료되면(10~15분 소요) BigQuery 페이지를 새로고침하고 revenue_reporting 테이블이 있는지 확인

# 가장 최근 거래를 보여주는 보고서 생성
SELECT
date,
unique_session_id,
fullVisitorId,
totalTransactionRevenue1,
-- push the entire checkout basket into an array
ARRAY_AGG(DISTINCT v2ProductName) AS products_bought
FROM
ecommerce.revenue_reporting
-- only include products that were actually bought
WHERE productQuantity > 0
GROUP BY 1,2,3,4
ORDER BY date DESC

파이프라인 스케쥴링 설정
파이프라인이 여전히 실행 중이더라도 다음 단계에서 파이프라인 실행을 예약할 수 있으므로 작업이 정기적으로 자동 재실행되어 최신 데이터를 처리할 수 있다.



작업이 매주 일요일 자정에 실행되도록 설정 또한 위의 그림에서 볼 수 있다시피 옵션에서 Email notification을 누르면 이메일로의 알람을 설정할 수도 있다.

왼쪽에 작업 아이콘을 클릭하여 파이프라인 상태를 확인할 수 있다.

profile
Solutions Architect (rlaalsgud97@gmail.com)

0개의 댓글