1. 개요
이 Codelab에서는 Bigtable에 기록되는 신용카드 거래 데이터 스트림을 분석하는 방법을 안내합니다. Bigtable 변경 내역을 BigQuery로 스트리밍 템플릿을 사용하여 실시간으로 데이터를 내보내는 방법을 알아봅니다. 그런 다음 변경 내역 로그를 쿼리하는 기법과 데이터 형식을 다시 지정하여 Looker를 사용하여 대시보드를 만드는 방법을 알아봅니다.
이 Codelab은 명령줄 도구와 이벤트 스트리밍 서비스를 사용하여 Bigtable에 익숙한 기술 사용자를 대상으로 합니다.
이 Codelab에서는 다음을 수행하는 방법을 보여줍니다.
- 변경 내역이 사용 설정된 Bigtable 테이블을 만듭니다.
- BigQuery 데이터 세트를 만듭니다.
- Dataflow 템플릿
Bigtable change streams to BigQuery.
배포 - BigQuery에서 이벤트 스트림을 쿼리합니다.
- Looker로 이벤트 스트림을 시각화합니다.
다음 다이어그램은 배포할 시스템의 아키텍처를 보여줍니다.
2. 프로젝트 설정
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 만들거나 선택합니다.
- Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.
- 이 사전 입력된 API 사용 설정 페이지를 방문하여 Dataflow, Bigtable, BigQuery, Looker, Cloud Storage에 필요한 API를 사용 설정하세요.
3. BigQuery 데이터 세트 만들기
이 Codelab의 뒷부분에서 BigQuery를 사용하여 데이터를 분석하게 됩니다. 데이터 파이프라인의 출력에 관한 데이터 세트를 만들려면 다음 안내를 따르세요.
- Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
- 탐색기 창에서 프로젝트 이름을 찾아 오버플로 메뉴 (프로젝트 ID 옆에 있는 세 개의 수직 점)를 클릭합니다.
- 데이터 세트 만들기를 클릭합니다.
- 데이터 세트 만들기 패널에서 다음을 수행합니다.
- 데이터 세트 ID에
bigtable_bigquery_tutorial
를 입력합니다. - 나머지 기본 설정은 그대로 둡니다.
- 데이터 세트 만들기를 클릭합니다.
4. 변경 내역이 사용 설정된 Bigtable 테이블 만들기
Bigtable은 지연 시간이 짧고 가로로 확장 가능한 NoSQL 데이터베이스 서비스이며, 금융 데이터를 제공하는 것이 일반적인 사용 사례 중 하나입니다. 여기서는 신용카드 거래를 저장할 수 있는 테이블을 만듭니다. Bigtable은 전 세계 트랜잭션의 높은 처리량 쓰기를 처리할 수 있으며 실시간 사기 감지에 이 데이터를 사용할 수도 있습니다.
- Google Cloud 콘솔에서 Bigtable 인스턴스 페이지로 이동합니다.
- 이 튜토리얼에서 사용 중인 인스턴스의 ID를 클릭합니다. 사용 가능한 인스턴스가 없는 경우 가까운 리전에서 원하는 이름으로 인스턴스를 만듭니다. 나머지 모든 항목에는 기본 구성을 사용할 수 있습니다.
- 왼쪽 탐색창에서 테이블을 클릭합니다.
- 테이블 만들기를 클릭합니다.
- 테이블 이름을
retail-database
로 지정합니다. transactions
라는 column family를 추가합니다.- 변경 내역 사용 설정을 선택합니다.
- 가비지 컬렉션 정책과 보관 기간은 기본값으로 둡니다.
- 만들기를 클릭합니다.
5. 변경 내역을 캡처하도록 데이터 파이프라인 초기화
Bigtable의 성능은 포인트 읽기 및 행 범위 스캔에 최적화되어 있지만 테이블 전체를 분석하면 제공 용량과 CPU 리소스에 부담이 될 수 있습니다. BigQuery는 테이블 전체 분석에 적합하므로 여기서는 이중 쓰기를 사용합니다. 즉, 일반적인 기법인 Bigtable 및 BigQuery에 데이터를 작성합니다. Bigtable change streams to BigQuery
Dataflow 템플릿을 사용하므로 추가 코딩이 필요하지 않습니다. 데이터가 Bigtable에 쓰여지면 파이프라인이 BigQuery에 변경 레코드를 씁니다. 데이터가 BigQuery에 있으면 Bigtable의 제공 데이터 성능에 영향을 미치지 않는 전체 데이터 세트에 대해 최적화된 쿼리를 수행할 수 있습니다.
- Bigtable 테이블 페이지에서
retail-database
테이블을 찾습니다. - 변경 내역 열에서 연결을 클릭합니다.
- Dataflow에 연결 대화상자에서 BigQuery를 선택합니다.
- Dataflow 작업 만들기를 클릭합니다.
- 제공된 매개변수 필드에 매개변수 값을 입력합니다. 선택적 매개변수를 제공할 필요가 없습니다.
- Cloud Bigtable 애플리케이션 프로필 ID를
default
로 설정합니다. - BigQuery 데이터 세트를
bigtable_bigquery_tutorial
로 설정합니다.
- 작업 실행을 클릭합니다.
- 작업 상태가 시작 중 또는 실행 중이 될 때까지 기다린 후에 진행합니다. 작업이 큐에 추가되면 5분 정도 걸릴 수 있습니다. 페이지가 자동으로 업데이트됩니다. 이 템플릿은 스트리밍 작업을 생성하므로 작업이 수동으로 중지될 때까지 Bigtable에 작성된 새 데이터를 계속 처리할 수 있습니다.
6. Bigtable에 일부 데이터 쓰기
이제 1년치 신용카드 거래 내역을 Bigtable 테이블에 기록합니다. 이 데이터 세트 예시에는 신용카드 번호, 판매자 이름 및 ID, 금액과 같은 정보가 포함됩니다. 실제 신용카드 처리 애플리케이션에서는 각 거래가 발생할 때마다 이 데이터가 실시간으로 데이터베이스로 스트리밍됩니다.
- Cloud 콘솔의 오른쪽 상단에 있는 버튼을 클릭하여 Cloud Shell을 엽니다.
- 메시지가 표시되면 Cloud Shell을 승인하라는 메시지를 수락합니다.
- 데이터 세트를 다운로드합니다.
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2023.csv .
- 명령줄에서 환경 변수 설정
PROJECT_ID=your-project-id
BIGTABLE_INSTANCE_ID=your-bigtable-instance-id
cbt
CLI를 사용하여 여러 신용카드 거래를retail-database
테이블에 씁니다.
cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2023.csv column-family=transactions
출력은 다음과 같습니다.
Done importing 10000 rows.
7. BigQuery에서 변경 로그 보기
- Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
- 탐색기 창에서 프로젝트와
bigtable_bigquery_tutorial
데이터 세트를 확장합니다. retail-database_changelog
테이블을 클릭합니다. 테이블이 없는 경우 데이터 세트를 새로고침해야 할 수 있습니다.- 변경 로그를 보려면 미리보기를 클릭합니다.
검색어를 입력해 보세요
이제 이 데이터 세트에서 몇 가지 쿼리를 실행하여 유용한 정보를 얻을 수 있습니다. SQL 쿼리는 여기에 제공되어 있지만 BigQuery에서 Bigtable 변경 로그 쿼리 문서에서 변경 로그 데이터에 대한 쿼리를 작성하는 방법에 관한 자세한 내용을 확인할 수 있습니다.
거래 1건 조회하기
다음 쿼리를 사용하여 특정 거래의 데이터를 조회합니다.
SELECT *
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE row_key="3034-442694-3052#2023-03-03T14:50:46.824Z"
작성된 각 열이 BigQuery에서 개별 행으로 변환된 것을 확인할 수 있습니다.
각 카테고리의 구매 횟수 확인
다음 쿼리를 사용하여 카테고리별 구매 수를 집계합니다.
SELECT value as category, count(*) as `number of sales`
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE column="category"
GROUP BY category
데이터 형식 다시 지정
각 거래를 단일 BigQuery 테이블 행으로 재구성하려면 데이터를 피벗하고 결과를 새 테이블에 저장합니다. 이는 더 관리하기 쉬운 쿼리 형식입니다.
CREATE VIEW bigtable_bigquery_tutorial.retail_transactions_view AS (
SELECT *, parse_numeric(amount) as sales_dollars FROM (
SELECT row_key, timestamp, column, value
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
)
PIVOT (
MAX(value)
FOR column in ("merchant", "amount", "category", "transaction_date")
)
)
Looker 대시보드 만들기
- 뷰로 이동을 클릭하여 새 뷰의 세부정보 페이지로 이동합니다.
- 내보내기를 클릭합니다.
- Looker Studio로 탐색을 선택합니다.
8. 대시보드에 차트 추가
이제 정보를 그래프로 표시하여 쉽게 파악하고 보고서로 공유할 수 있습니다. 대시보드에 다음 세 가지 차트를 추가합니다.
- 시간 경과에 따른 거래 금액
- 판매자별 총 거래 수
- 카테고리별 거래 비율
페이지 설정
- 기존의 각 차트를 클릭하고 삭제 키를 눌러 삭제합니다.
- 그래프 데이터를 수정할 수 있도록 페이지 오른쪽에 있는 속성을 선택합니다.
차트 추가
시간 경과에 따른 거래 금액
- 차트 추가를 클릭하고 시계열 차트를 만듭니다.
- 측정기준을
transaction_date
로 설정합니다.
- 측정항목을
sales_dollars
로 설정합니다.
각 판매자에 대한 총 거래 수
- 차트 추가를 클릭하고 표를 만듭니다.
- 측정기준을
merchant
로 설정합니다. - 측정항목을
sales_dollars
로 설정합니다.
카테고리별 거래 비율
- 차트 추가를 클릭하고 원형 차트를 만듭니다.
- 측정기준을
category
로 설정합니다. - 측정항목을
sales_dollars
로 설정합니다.
실시간 변경사항 보기
시간을 내어 그래프의 값을 살펴보세요. 표에서 특정 판매자를 클릭하거나 표에서 특정 카테고리를 클릭하면 모든 차트에서 해당 값을 기준으로 필터링되어 더 많은 통계를 제공합니다. 다음으로, 더 많은 데이터를 작성하고 이 그래프가 실시간으로 어떻게 업데이트되는지 확인할 수 있습니다.
- Cloud Shell로 돌아갑니다.
- 두 번째 데이터 세트를 다운로드하고 작성합니다.
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2024-jan.csv .
cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2024-jan.csv column-family=transactions
- Looker 대시보드로 돌아가서
Ctrl+Shift+E
명령어를 사용하여 데이터를 새로고침하거나 보기 메뉴에서 데이터 새로고침을 클릭합니다. 이제 차트에 2024년 1월의 데이터가 표시됩니다.
이 외에도 다양한 그래프와 측정항목을 만들 수 있습니다. 자세한 내용은 Looker 문서를 참고하세요.
9. 삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
변경 내역 파이프라인 중지
- Google Cloud 콘솔에서 Dataflow 작업 페이지로 이동합니다.
- 작업 목록에서 스트리밍 작업을 선택합니다.
- 탐색에서 중지를 클릭합니다.
- 작업 중지 대화상자에서 취소를 선택한 후 작업 중지를 클릭합니다.
Bigtable 리소스 삭제
이 튜토리얼용으로 Bigtable 인스턴스를 만든 경우 인스턴스를 삭제하거나 만든 테이블을 정리할 수 있습니다.
- Google Cloud 콘솔에서 Bigtable 인스턴스 페이지로 이동합니다.
- 이 튜토리얼에서 사용 중인 인스턴스의 ID를 클릭합니다.
- 왼쪽 탐색창에서 테이블을 클릭합니다.
retail-database
테이블을 찾습니다.- 수정을 클릭합니다.
- 변경 내역 사용 설정을 선택 해제합니다.
- 저장을 클릭합니다.
- 테이블의 더보기 메뉴를 엽니다.
- 삭제를 클릭하고 테이블 이름을 입력하여 확인합니다.
- 선택사항: 이 튜토리얼용으로 새 인스턴스를 만든 경우 인스턴스 삭제
BigQuery 데이터 세트 삭제
- Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
- 탐색기 패널에서 데이터 세트
bigtable_bigquery_tutorial
를 찾아 클릭합니다. - 삭제를 클릭하고 삭제를 입력한 후 삭제를 클릭하여 확인합니다.