이 글은 Google Cloud BigQuery 실습을 처음 수행하는 수강생을 위한 글입니다. 공개 데이터셋은 조회했지만, 내 파일을 올려 별도 테이블까지 만드는 흐름이 헷갈리는 분을 대상으로 합니다. 이 글을 끝까지 따라오면 공개 데이터 조회 → dataset 생성 → CSV 업로드 → SQL 결과 확인까지 한 번에 정리할 수 있습니다.
이 글의 질문
BigQuery에서 공개 데이터셋을 조회하고, 직접 업로드한 CSV를 테이블로 만들어 쿼리하려면 어떻게 해야 하는가?
실습 환경
- Cloud: Google Cloud Platform(GCP)
- 서비스: BigQuery
- 실행 위치: BigQuery Console
- Public Dataset:
bigquery-public-data.usa_names.usa_1910_2013 - 사용자 Dataset:
babynames - Data Location:
us - 업로드 파일:
yob2014.txt(CSV, header 없음) - 파일 컬럼:
name,sex,number
아키텍처

핵심 흐름은 실습 사용자 → BigQuery Console → Public Dataset 조회 → 사용자 Dataset 생성 → CSV 업로드 → 커스텀 테이블 조회입니다. 티스토리 본문에 바로 붙여 넣을 수 있도록 아키텍처 이미지를 HTML 안에 직접 포함했습니다.
■ 강사 설명
이 실습의 목적은 네 가지입니다. 첫째, 공개 데이터셋을 조회합니다. 둘째, dataset을 직접 생성합니다. 셋째, 로컬 파일을 새 테이블로 적재합니다. 넷째, 적재한 테이블에 다시 SQL을 실행합니다. 즉 BigQuery를 단순 조회 도구로 쓰는 것이 아니라, 직접 적재하고 분석하는 흐름까지 익히는 실습입니다.
■ 내가 이해한 핵심
핵심은 공개 데이터셋이든 내 테이블이든 결국 BigQuery 안에서는 같은 SQL 문법으로 다룬다는 점입니다. 먼저 bigquery-public-data에서 구조를 익히고, 그다음 내 dataset인 babynames에 파일을 업로드해 같은 방식으로 조회하면 됩니다. 실습의 본질은 “데이터 출처가 달라도 분석 인터페이스는 같다”는 것을 체감하는 데 있습니다.
■ 내가 실제로 겪은 문제
처음 실습할 때 가장 많이 막히는 부분은 세 가지입니다. Explorer에서 public project가 바로 안 보이는 문제, dataset은 만들었는데 CSV 업로드 설정이 헷갈리는 문제, 컬럼명이 sex인지 gender인지 혼동하는 문제입니다. 그래서 이 글은 실제로 막히는 지점을 기준으로 정리했습니다.
실습 순서
1) 공개 데이터셋 조회
Explorer에서 usa_names를 검색하고, bigquery-public-data 프로젝트를 탐색합니다. 여기서 usa_names.usa_1910_2013 테이블을 열고 SQL을 실행합니다.
SELECT
name, gender,
SUM(number) AS total
FROM
`bigquery-public-data.usa_names.usa_1910_2013`
GROUP BY
name, gender
ORDER BY
total DESC
LIMIT
10;
이 쿼리는 1910년부터 2013년까지 누적 기준으로 가장 많이 사용된 이름 상위 10개를 확인하는 용도입니다.
2) 커스텀 dataset 생성
프로젝트 ID 오른쪽 메뉴에서 Create dataset을 선택하고, Dataset ID를 babynames로 지정합니다. Location은 us를 선택합니다.
- Dataset ID:
babynames - Data location:
us - Table name:
names_2014 - File format:
CSV
3) 로컬 CSV 업로드
다운로드한 yob2014.txt 파일은 헤더가 없는 CSV입니다. 파일에는 이름, 성별, 출생 수가 들어 있습니다. 이 파일을 babynames.names_2014 테이블로 업로드합니다.
파일 설명에는
sex (M or F)와 number of children라고 되어 있지만, 테이블 스키마를 구성할 때는 실습 편의상 gender, count처럼 해석해서 쓰게 됩니다. 이후 SQL에서 어떤 컬럼명을 쓸지는 실제 생성한 스키마 기준으로 맞추면 됩니다.4) 업로드한 테이블 조회
이제 공개 데이터가 아니라 내가 만든 테이블을 바로 조회합니다. 여기서 남자 아기 이름 상위 5개를 확인합니다.
SELECT
name, count
FROM
`babynames.names_2014`
WHERE
gender = 'M'
ORDER BY
count DESC
LIMIT
5;
결과는 2014년 남자 이름 상위 5개 행으로 반환됩니다. 공개 데이터 조회와 동일하게 결과는 Query results 영역에서 바로 확인할 수 있습니다.
트러블슈팅
문제 증상: public dataset이 Explorer에서 바로 보이지 않습니다.
원인 분석: bigquery-public-data 프로젝트를 Star하지 않았거나 검색 범위가 제한되었을 수 있습니다.
확인 방법: Explorer 검색창에 bigquery-public-data를 입력하고, SEARCH ALL PROJECTS 또는 Star a project by name를 사용합니다.
해결 방법: bigquery-public-data를 추가한 뒤 usa_names 데이터셋을 확장합니다.
재발 방지 방법: 실습 시작 전에 public project를 먼저 고정해 두면 다음 단계가 훨씬 빨라집니다.
문제 증상: CSV 업로드 후 import error 메시지가 보입니다.
원인 분석: 실습 문서 기준으로는 오류 창이 떠도 데이터가 실제로는 적재된 경우가 있습니다.
확인 방법: Explorer에서 babynames > names_2014를 선택하고 Preview 탭을 확인합니다.
해결 방법: 오류 창을 닫고 import dialog를 종료한 뒤, Preview로 실제 적재 여부를 확인합니다.
재발 방지 방법: 업로드 직후에는 에러 메시지만 보지 말고, 반드시 테이블 Preview까지 확인합니다.
결론
핵심 원칙: BigQuery 실습의 본질은 공개 데이터로 SQL 구조를 익히고, 내 파일을 같은 방식으로 적재·조회해 보는 것입니다.
실무 적용 시 주의점: dataset 위치, 파일 형식(CSV), 헤더 유무, 스키마 컬럼명 일치 여부가 어긋나면 가장 먼저 막힙니다. 쿼리보다 적재 설정이 더 중요할 때가 많습니다.
다음 학습 단계: 이 다음에는 JOIN, DATE 함수, 파티션 테이블, 외부 테이블, 비용 최적화까지 이어서 학습하면 BigQuery를 실무 도구로 더 빠르게 연결할 수 있습니다.
'서버 구축·실습' 카테고리의 다른 글
| GCP Dataflow 템플릿으로 CSV 데이터를 BigQuery에 실시간 적재하는 방법 (0) | 2026.03.22 |
|---|---|
| Azure VM에서 OpenAI API를 안전하게 연결해 AI 챗봇을 완성하는 방법 (1) | 2026.03.02 |
| Azure 부하분산기 실습 — 새로고침할 때마다 서버1, 서버2가 번갈아 나오는 구조 직접 만들어봤다 (0) | 2026.02.23 |
| Azure 첫 실습 — AWS만 하던 사람이 느낀 충격적인 차이점 (0) | 2026.02.19 |
| 리눅스 FTP 서버 구축 실습 정리 – 사용자 권한 설계부터 보안 사고 대응 관점까지 (0) | 2026.01.26 |