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 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
cbtCLI를 사용하여 신용카드 거래 수를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를 찾아 클릭합니다. - 삭제를 클릭하고 '삭제'를 입력한 후 삭제를 클릭하여 확인합니다.