IT 지식 및 정보 (구글 클라우드 등)

데이터 분석의 첫걸음, 핵심 용어 완벽 정리

azzaman 2025. 10. 22. 13:00

데이터가 비즈니스의 핵심 자산이 된 시대, 우리는 매일 수많은 데이터 관련 용어와 마주하게 됩니다. 데이터베이스, SQL, 데이터 웨어하우스 등 낯선 용어들은 데이터 분석의 진입 장벽처럼 느껴지기도 합니다. 하지만 이 개념들은 데이터를 이해하고 활용하여 가치 있는 인사이트를 발견하기 위한 가장 기본적인 '언어'이자 '도구'입니다.

이 글은 데이터 분석가뿐만 아니라, 데이터 기반 의사결정이 필요한 마케터, 기획자, 비즈니스 리더를 위한 심화 용어 가이드입니다. 복잡하게 흩어져 있던 핵심 개념들을 체계적으로 정리하고, 보다 충실한 설명과 명확한 예시를 통해 데이터 리터러시를 한 단계 끌어올리는 것을 목표로 합니다. 이 글을 통해 데이터와 더 깊이 소통하고, 자신감 있게 데이터를 다룰 수 있게 되기를 바랍니다.


1. 데이터의 보금자리: 데이터베이스와 웨어하우스

모든 데이터 분석은 데이터가 저장된 공간에서 시작됩니다. 데이터의 생성 목적과 활용 방식에 따라 저장소의 성격과 구조가 근본적으로 달라집니다.

  • 데이터베이스 (Database, DB): 실시간으로 발생하는 데이터를 저장, 수정, 삭제하며 관리하는 시스템입니다. 가장 큰 특징은 '현재 시점'의 정확한 데이터를 유지하는 것입니다. 이는 '온라인 쇼핑몰의 실시간 주문 처리 시스템' 과 같습니다. 고객의 주문, 결제, 재고 변경 등 끊임없이 발생하는 **트랜잭션(Transaction)**을 빠르고 안정적으로 처리하는 데 최적화되어 있습니다. 이러한 시스템의 특징을 OLTP (Online Transaction Processing) 라고 부릅니다. 대표적으로 MySQL, PostgreSQL, Oracle, AWS Aurora 등이 여기에 속합니다.
  • 데이터 웨어하우스 (Data Warehouse): 분석을 목적으로 대량의 데이터를 한곳에 통합하여 저장해 둔 '데이터 창고'입니다. 여러 데이터베이스나 외부 서비스 등 다양한 소스에서 수집된 과거 데이터부터 현재 데이터까지, 방대한 양의 데이터를 시간의 흐름에 따라 축적합니다. 이는 '쇼핑몰의 분기별, 연도별 매출 동향 및 고객 패턴 분석을 위한 통합 데이터 보관소' 와 같습니다. 대량의 데이터를 복잡한 조건으로 조회하고 집계하는 분석(Analysis) 작업에 특화되어 있으며, 이러한 시스템을 OLAP (Online Analytical Processing) 라고 합니다. Google BigQuery, Amazon Redshift, Snowflake가 대표적인 데이터 웨어하우스 솔루션입니다.
  • 데이터 마트 (Data Mart): 데이터 웨어하우스의 일부를 특정 부서나 팀의 목적에 맞게 작게 나누어 놓은 것입니다. 예를 들어, 거대한 데이터 웨어하우스에서 마케팅팀에 필요한 고객 데이터와 광고 성과 데이터만 추출하여 구성한 것이 데이터 마트입니다. 이를 통해 사용자는 더 빠르고 쉽게 필요한 데이터에 접근할 수 있습니다.

2. 데이터의 뼈대: 구조와 속성

데이터는 무질서하게 쌓여있는 것이 아니라, 명확한 설계도(Schema)에 따라 체계적으로 관리됩니다. Google BigQuery를 예로 들면, 그 구조는 마치 하나의 잘 계획된 도시와 같습니다.

  • 프로젝트 (Project): 가장 큰 단위로, '하나의 도시' 전체에 해당합니다. 모든 데이터 자원과 권한 관리가 이 단위에서 이루어집니다.
  • 데이터셋 (Dataset): 프로젝트 내에서 데이터를 용도별로 묶어놓은 그룹으로, 도시의 '특정 구역(예: 상업지구, 주거지구)' 에 비유할 수 있습니다.
  • 테이블 (Table): 데이터셋 안에 실제 데이터가 저장되는 2차원 표(Grid) 형태의 공간입니다. 이는 각 구역에 있는 '개별 건물' 과 같습니다.
  • 컬럼 (Column)과 로우 (Row): 테이블을 구성하는 기본 요소입니다. **컬럼(열)**은 데이터의 속성(Attribute)을 정의하며(예: user_id, email, age), 건물의 '층별 안내(1층: 이름, 2층: 이메일)' 와 같습니다. **로우(행)**는 하나의 고유한 데이터 단위를 의미하며(예: A 고객의 정보 한 줄), 건물의 '각 층에 입주한 실제 정보' 입니다.
  • 스키마 (Schema): 테이블의 구조를 정의한 설계도입니다. 각 컬럼의 이름, 데이터 타입(예: INTEGER는 숫자, STRING은 문자열), 그리고 제약 조건(예: NULL 값 허용 여부) 등의 정보가 담겨 있습니다. 잘 설계된 스키마는 **데이터 정합성(Data Integrity)**을 보장하는 첫걸음입니다.
  • 키 (Key): 테이블 간의 관계를 맺거나 각 로우를 고유하게 식별하기 위해 사용되는 특별한 컬럼입니다. **PK (Primary Key, 기본 키)**는 각 로우를 유일하게 구분하는 값(예: 학번, 주민등록번호)이며, **FK (Foreign Key, 외래 키)**는 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 연결하는 역할을 합니다.
  • 파티션 (Partition): 대용량 테이블의 데이터를 특정 기준(주로 날짜)으로 나누어 저장하는 기능입니다. 파티션을 사용하면 쿼리 시 전체 테이블이 아닌 필요한 부분만 스캔하므로, 비용을 절감하고 성능을 크게 향상시킬 수 있습니다.

3. 데이터와 대화하는 언어: SQL 기본 문법

데이터베이스에 저장된 데이터를 가져오거나 조작하려면 SQL (Structured Query Language) 이라는 표준 언어를 사용해야 합니다. SQL로 작성하는 명령문을 **쿼리(Query)**라고 합니다.

가장 기본적인 쿼리 구조는 다음과 같습니다.

SELECT user_id, age FROM user_table WHERE signup_date >= '2024-01-01'

  • SELECT: 어떤 **컬럼(데이터 속성)**을 가져올지 선택합니다. (user_id, age 컬럼을 선택)
  • FROM: 어떤 테이블에서 데이터를 가져올지 지정합니다. (user_table 테이블에서)
  • WHERE: 특정 조건에 맞는 로우만 필터링합니다. (2024년 1월 1일 이후에 가입한 사용자만)
  • GROUP BY: 특정 컬럼을 기준으로 데이터를 그룹화하여 집계 함수와 함께 사용합니다. 예를 들어 GROUP BY GENDER를 사용하면 성별로 그룹을 묶어 각 그룹의 평균 연령이나 수를 계산할 수 있습니다.
  • JOIN: 두 개 이상의 테이블을 공통 **키(Key)**를 기준으로 연결하여 데이터를 합칩니다.
    • INNER JOIN: 두 테이블에 모두 존재하는 데이터(교집합)만 연결합니다.
    • LEFT JOIN: 왼쪽 테이블의 모든 데이터를 기준으로, 오른쪽 테이블에 일치하는 데이터가 있으면 연결하고 없으면 NULL로 표시합니다.

4. 데이터를 요리하는 만능 도구: 주요 함수들

단순히 데이터를 가져오는 것을 넘어, 원하는 형태로 가공하고 분석하려면 SQL 함수를 적극적으로 활용해야 합니다.

  • 집계 함수 (Aggregate Function): 데이터를 그룹으로 묶어 요약된 통계치를 계산합니다.
    • COUNT(): 로우의 개수를 셉니다. COUNT(DISTINCT user_id)처럼 DISTINCT와 함께 쓰면 중복을 제외한 고유한 값의 개수를 셀 수 있습니다.
    • SUM(): 숫자 데이터의 합계를 구합니다.
    • AVG(): 숫자 데이터의 평균을 구합니다.
  • 조건문 (Conditional Statement): 특정 조건에 따라 다른 값을 반환하게 하여 데이터를 재가공합니다.
    • CASE WHEN ... THEN ... ELSE ... END: 여러 복잡한 조건에 따라 값을 부여할 때 매우 유용합니다. (예: CASE WHEN age >= 40 THEN '40대 이상' WHEN age >= 30 THEN '30대' ELSE '기타' END)
  • 형 변환 및 가공 함수: 데이터의 타입을 바꾸거나(예: CAST), 텍스트를 자르거나 붙이고(CONCAT, SPLIT), 날짜 정보를 추출(EXTRACT)하는 등 데이터를 분석하기 좋은 형태로 다듬는 역할을 합니다.
  • SAFE_ 접두사: Google BigQuery에서 지원하는 기능으로, 함수 앞에 SAFE_를 붙이면 연산 실패 시 쿼리 전체를 중단시키는 대신 NULL을 반환하여 안정성을 높여줍니다. 예를 들어, SAFE_DIVIDE(10, 0)은 오류 대신 NULL을 반환합니다.

5. 성공적인 분석을 위한 과정과 문화

훌륭한 데이터 분석은 단순히 SQL 쿼리를 능숙하게 작성하는 것을 넘어섭니다. 이는 명확한 목표 설정에서 시작하여 신뢰성 있는 결과를 도출하기까지의 체계적인 프로세스입니다.

  • 문제 정의 (Problem Definition): "어떤 문제를 해결하기 위해, 무엇을 알고 싶은가?"를 명확히 하는 가장 중요한 첫 단계입니다. 해결할 문제가 명확하지 않으면 분석은 방향을 잃게 됩니다.
  • 데이터 탐색 및 전처리 (Data Exploration & Preprocessing): 필요한 데이터가 어디에 어떤 형태로 있는지 탐색하고, 분석에 방해가 되는 결측치나 이상치를 제거하거나(Data Cleansing), 원하는 형태로 가공하는 과정입니다. 분석의 품질은 이 단계에서 결정되는 경우가 많습니다.
  • 집계 및 분석 (Aggregation & Analysis): 전처리된 데이터를 바탕으로 SQL 쿼리를 작성하여 데이터를 집계하고, 패턴이나 인사이트를 도출합니다.
  • 결과 검증 및 시각화 (Verification & Visualization): 분석 결과가 논리적으로 타당한지, 비즈니스 맥락에 부합하는지 반드시 검증해야 합니다. 이후 차트나 대시보드 등으로 시각화하여 결과를 효과적으로 전달합니다.
  • 협업과 코드 가독성: 데이터 분석은 혼자 하는 작업이 아닙니다. 다른 동료가 쉽게 이해하고 재사용할 수 있도록 스타일 가이드를 준수하고, 쿼리의 의도를 명확히 설명하는 주석을 작성하는 것은 매우 중요한 협업 문화입니다.

관련 웹사이트 (URL)

주요 용어 정리

  • RDBMS (Relational Database Management System): 관계형 데이터베이스 관리 시스템. 데이터를 행(Row)과 열(Column)으로 이루어진 테이블 형태로 관리하며, **키(Key)**를 이용해 테이블 간의 관계를 정의함으로써 데이터의 중복을 최소화하고 일관성을 유지합니다.
  • SQL (Structured Query Language): 데이터베이스와 소통하기 위한 표준 언어. "고객 테이블에서 30대 이상인 사람들의 이름과 이메일을 보여줘"와 같은 요청을 컴퓨터가 이해할 수 있는 명령문(쿼리)으로 작성하는 규칙입니다.
  • NULL (널): '값이 없음' 또는 '알 수 없음'을 나타내는 특별한 상태입니다. 숫자 0이나 빈 문자열("")과는 완전히 다른 개념으로, 정보가 비어있음을 의미합니다.
  • 정규화 (Normalization): 데이터베이스 설계 시, 데이터의 중복을 최소화하고 데이터 무결성을 보장하기 위해 테이블을 논리적으로 분해하는 과정입니다. 이를 통해 데이터 관리가 효율적으로 이루어집니다.
  • CTE (Common Table Expression): WITH 구문을 사용하여 정의하는 임시 결과 집합입니다. 복잡한 쿼리를 여러 단계로 나누어 작성할 수 있게 해주어 쿼리의 가독성과 재사용성을 크게 향상시킵니다.
  • 서브쿼리 (Subquery): 하나의 SQL 쿼리 문 안에 포함된 또 다른 SELECT 쿼리입니다. FROM 절, WHERE 절 등 다양한 위치에서 사용되어 메인 쿼리가 필요한 데이터를 동적으로 생성하거나 조건을 설정하는 데 사용됩니다.
  • 데이터 정합성 (Data Consistency/Integrity): 데이터베이스 내의 데이터가 항상 정확하고 일관된 상태를 유지하는 것을 의미합니다. 예를 들어, 존재하지 않는 회원의 주문 정보가 생성되지 않도록 하는 등의 규칙을 통해 보장됩니다.