본문 바로가기
WORK/SQL 101

[SQL 101] 데이터 타입과 차원/측정값

by 브로페 2023. 3. 14.

 

 

💡 이번 시간에는 데이터의 종류를 알아보고, 이를 차원과 측정값으로 나누어 구분해 본다. 특히 차원과 측정값이라는 이 두 개념은 데이터의 속성으로서 기능하며, 차원과 측정값을 잘 구분할 수 있어야 데이터를 이리저리 집계할 때 오류가 생기지 않는다.

 

 

  • 데이터 형태의 종류 (Data Type)
  • 차원과 측정값
  • 차원/측정값과 데이터 타입의 관계

 

 

요약

  • 데이터 타입에는 숫자, 문자열, 날짜, 부울값 등이 있다.
  • 차원은 데이터를 분류/세분화할 때 사용되는 속성이다.
  • 측정값은 데이터 분석의 목적인 최종 값이다.

 

데이터 형태의 종류 (Data Type)

우리가 업무를 하면서 관리하는 데이터에는 여러 종류가 있다. 거래처코드, 매출액, 원가, 담당자명, 조직명 등 여러 가지 데이터를 다루는데, 이러한 데이터들은 데이터베이스에 입력되고 저장될 때 특정한 형태임을 함께 선언하여야 저장이 된다. 이를 데이터 타입이라고 하는데, 크게는 아래 네 가지 종류의 데이터 타입이 존재한다. (물론 이것보다 그 종류는 정의에 따라 훨씬 많을 수 있다)

  • 숫자형

아마도 가장 많이 쓰일 데이터 타입인 숫자 데이터는 정수형과 실수형으로 나눌 수 있으며, 정수형(Integer)은 소수점이 없는 수를 의미하고, 실수형(Float)은 소수점이 있는 수를 의미한다. 예를 들어, 1, 2, 3 등은 정수형 데이터인 반면, 1.2, 3.14, 10.0 등은 실수형 데이터이다.

  • 문자열

문자열 데이터는 말 그대로 문자로 이루어진 데이터를 의미한다. 이 문자는 한글일수도, 알파벳일 수도, 혹은 다른 언어의 문자일 수도 있다. 예를 들어, "hello", "world", "123", "가나다" 등은 문자열 데이터이다. "123"이 어떻게 문자열 데이터인지 의문을 표할 수 있는데, 겉보기에 숫자 형태이지만 사실 문자열인 데이터가 있다. 예를 들면 "001845"와 같이 0으로 시작되는 데이터이다. 아래 [차원/측정값과 데이터 타입의 관계]에서 한번 더 다루도록 하겠다.

  • 날짜

날짜 데이터는 일반적으로 YYYY-MM-DD 형식으로 저장하며, 날짜와 함께 시간 정보를 포함할 수도 있다. 날짜와 시간 정보가 합쳐진 경우에는 타임스탬프(Timestamp)라고 표현한다. 예를 들어, 날짜형 데이터는 “2023-03-14”로, 타임스탬프는 “2023-03-14 08:19:54”와 같은 형식으로 저장할 수 있다.

  • 부울값

부울값(Boolean)은 위 데이터에 비해 아주 간단한 데이터 타입인데, 참(True) 또는 거짓(False) 중 하나의 값만을 가지는 타입이다. 쉽게 말해 부울값에는 Y 아니면 N이라는 두 개의 선택지밖에 없다.

이 부분 역시 프로그래밍이나 컴퓨터공학 차원에서 파기 시작하면 정말 끝도 없이 팔 수 있다. 업무 상 사용하는 SQL만 배울 목적이라면 숫자형, 문자열, 날짜 정도가 있다는 것만 이해하고 가도 90% 이상의 업무에서 SQL을 사용하는 데 전혀 어려움이 없을 것이다.

 

차원과 측정값

그렇다면 이제 차원과 측정값을 배워볼 차례다. 우리가 업무를 하며 데이터를 추출할 때, 보통 이러한 질문에 대해 답을 찾으려고 한다. “일자별 매출 현황”, “일자별 조직별 매출현황”, “직급별 평균 연봉” 등의 질문이 있을 텐데, 이러한 질문들에 의거하여 위의 데이터 타입을 차원과 측정값으로 구분할 수 있다.

차원(dimension)은 데이터를 분류하거나 세분화하는 데 사용되는 속성이다. “일자별 매출 현황”이라는 질문은 매출액이라는 데이터를 일자별로 나눈 것을 말한다. 따라서 매출액을 나누는 기준인 ‘일자’가 차원이 되는 것이다. 차원에는 보통 날짜, 지역, 제품 등이 해당된다.

Q. 위 포켓몬도감 데이터에서 차원이 될 수 있는 데이터를 모두 골라보시오.

 

측정값(measure)은 데이터 분석에 사용되는 계산이나 집계된 값이다. “일자별 매출 현황”으로 돌아오면, 일자라는 차원으로 나누어야 하는 값 그 자체가 측정값이 되겠으며, 이 경우 ‘매출액’이 측정값이 된다. 이와 같이 측정값은 매출액, 주문량, 수량 등의 데이터가 해당된다.

Q. 위 포켓몬도감 데이터에서 측정값이 될 수 있는 데이터를 모두 골라보시오.

 

위와 같이 차원과 측정값은 관계형 데이터베이스에서 서로 다른 역할을 수행한다. 차원은 데이터를 필터링하고 분류하는 데 사용되는 반면, 측정값은 데이터를 계산하고 집계하는 데 사용된다. 이를 위의 데이터 타입 개념과 연관시켜보면, 어떠한 데이터 타입을 차원, 혹은 측정값으로 사용할 수 있는지 알 수 있게 된다.

 

차원/측정값과 데이터 타입의 관계

측정값은 일반적으로 숫자 데이터 타입만이 해당된다. 이유를 생각해보면 아주 쉬운데, 명칭 자체가 측정값인 만큼 특정한 수치를 알 수 있어야 하기 때문이다. 매출액, 주문량, 수량 등의 데이터는 모두 숫자로밖에 표현되지 않는다. 그리고 이를 다르게 바라보면, 측정값은 서로 간에 게산이 가능해야 한다. 일자별 매출액을 모두 더하면 전체 기간의 매출액이 나올 것이고, 이를 연도별, 혹은 월별로 쪼갤 수도 있을 것이다.

반면 차원은 사실상 모든 데이터 타입을 사용할 수 있는 개념이다. 예를 들어 “일자”와 같은 차원은 날짜 타입을 사용할 수 있고, “조직”이라는 차원은 문자열을 통해 표현할 수 있다. 숫자 또한 차원으로 사용할 수 있는데, 예를 들어 특정 일련번호가 매겨진 제품 코드의 경우에는 차원으로 볼 수 있다.

여기서 많이들 헷갈리는 개념이 바로 차원/측정값과 숫자 데이터 타입의 관계이다. 위에서 언급했다시피 숫자 타입은 차원과 측정값에서 모두 사용 가능하다. 그렇다면 어떤 숫자 데이터가 측정값이고, 어떤 숫자 데이터가 차원값일까? 해답은 바로 “집계가 가능한지 여부”에 따라 구분된다는 것이다.

예를 들어, ‘매출액’이라는 데이터는 여러 데이터를 결합하여 총 매출액, 평균 매출액 등으로 집계가 가능하다. ‘매출액’은 집계가 가능할 뿐만 아니라, 집계된 매출액은 또 다른 의미를 가진 데이터로 재탄생하는 셈이다. 하지만 ‘일련번호’ 데이터는 덧셈 뺄셈을 할 수 있을까? 물론 억지로 하면 가능은 할 것이다. 하지만 12345678이라는 일련번호와 90123456이라는 일련번호를 더하고 뺀다면 어떤 의미가 추가로 생길 수 있을까? 아무 의미도 생기지 않는다. 이 경우 ‘일련번호’라는 데이터는 아무리 숫자형일지라도 측정값이 아닌 차원으로 정의된다. 그래서 아예 이러한 일련번호 등의 데이터는 숫자가 아닌 문자열로 바꾸어버리기도 한다. 

차원과 측정값은 데이터와 관련된 학습을 할 때 꼭 알아야 할 매우 기초적인 개념이다. 특히 숫자 타입과 차원/측정값의 관계는 데이터를 글로만 배웠을 때 아주 헷갈리기 아주 좋은 개념이므로 반드시 이해하고 넘어가는 것이 좋다.

 

반드시 이해해야 하는 핵심 내용

  • 데이터 타입의 종류
  • 차원과 측정값의 정의
  • 어떤 데이터 타입이 차원과 측정값으로 연결되는가?

 

 

 

재미있게 보셨다면 공감 버튼 / 댓글 남겨주세요!
컨텐츠 작성에 큰 힘이 됩니다 :)