Google BigQuery

[강의 수강 8일차] 데이터 탐색 - 변환 (1) 데이터 타입의 이해 / 문자열 함수

쭈경잉 2025. 5. 28. 23:34

데이터 타입, 변환과 문자열 함수와 날짜 및 시간 데이터를 이해하고자 한다.

 

데이터 타입을 이해하는 것은 내가 원하는 집계, 조회를 하기 위해 필요한 과정이며 

조건문을 활용하기 위해서는 컬럼의 데이터 타입을 이해하는 것이 필수인 것 같다. 

 

함수의 경우, 기본적으로 원리가 "엑셀"과 유사한 것 같아서

함수를 사용하고자 하는 이유에 대해서 함께 체크해보고자 한다. 

 

1. 기본적인 데이터 타입 확인하기

데이터 타입의 경우, 컬럼별로 일치 > 우선 기본적인 데이터 타입을 이해해두면 된다.

ex. 숫자, 문자, 시간, 날짜, 부울(참/거짓) 

 

2. 데이터 타입이 중요한 이유

✔️ 보이는 것과 저장된 것의 차이가 존재한다. 그러기에 이에 대한 이해도가 있어야 한다. 

✏️ 데이터를 이해하는 과정이라고 생각한다. 

 

CASE 예시

1️⃣ 엑셀에서 보면 빈값이 "" 일 수도 있고 NULL 일 수도 있음

2️⃣ 1이라고 작성된 경우, 숫자 1일 수도 있고, 문자 1일 수도 있음

3️⃣ 2023-12-31 => DATE 2023-12-31 일 수도 있고 문자 2023-12-31일 수도 있음

4️⃣ TRUE, FALSE 도 부울 타입일 수도 문자일 수도 있음 

➡️ 내 생각과 다른 경우 데이터의 타입을 서로 변경해야 한다.

 

3. 자료 타입 변경하기

✔️ 자료 타입을 변경하는 함수 : CAST

ex. select cast (1 AS STRING) # 숫자 1을 문자 1로 변경

 

✔️ 단, 문자열을 숫자로 변경하려 해도 불가능하고 오류 발생된다

ex. select cast("쭈경" AS INT64) 

➡️ 이때, 더 안전하게 데이터 타입 변경을 위해 SAFE_CAST 활용한다. 

☑️ SAFE_가 붙은 함수는 변환이 실패할 경우 NULL을 반환한다. 

 

수학 함수는 수학 연산(평균, 표준편차, 코사인 등) 존재하며 

나눗셈 : SAFE_DIVIDE 를 자주 사용하지만 이외 함수들의 경우, 필요할 때마다 찾아서 익숙해지는 과정이 필요하다. 

 

✔️ TIP) 나누기를 할 경우, x/y 대신 SAFE_DIVIDE 함수 사용하기

➡️ x,y 중 하나라도 0인 경우 그냥 나누면 zero error 발생! 해당 case 오류 방지 + NULL 값으로 표기해준다. 

 

✔️ 문자열(STRING) 함수 이해 

-- 문자열 붙이기 => CONCAT
SELECT 
	CONCAT("안녕", "하세요") AS result; -- 결과: 안녕하세요 
-- FROM이 없어도 동작하는 이유
-- > CONCAT 인자로 STRING이나 숫자를 넣을 때는 데이터를 직접 넣어준 것이라 FROM 없어도 실행 가능하다

-- 문자열 분리하기 => SPLIT(문자열_원본, 나눌 기준이 되는 문자) 
SELECT
	SPLIT("가, 나, 다, 라", ", ") AS result -- 결과: 가 / 나 / 다 / 라 4개 행으로 출력 
    -- , 뒤에 공백 있으므로 분리 구분자에 포함해서 넣어주면 공백도 포함해서 구분으로 나눠준다
    
-- 특정 단어 수정하기 => REPLACE(문자열 원본, 찾을 단어, 바꿀 단어) 
SELECT
	REPLACE("안녕하세요", "안녕", "실천") AS result --결과 : 실천하세요
 
 -- 문자열 자르기 => TRIM(문자열 원본, 자를 단어) 
SELECT
	TRIM("안녕하세요", "하세요") AS result 
    
-- 영어 소문자를 대문자로 변경 => UPPER(문자열 원본) 
SELECT 
	UPPER("abc") AS result

 

✏️ 만약 함수를 사용할 때 오타를 낼 경우, Function not found 에러가 뜬다 

그러면서 Did you mean upper? at [30:3] 와 같이 철자 유사한 함수와 위치를 알려준다.는 점을 참고하기! 

 

✏️ 이번 강의와 학습을 통해 느낀점과 배운점 
✅ 데이터 타입, 컬럼에 대한 이해도를 높여야 한다. 
✅ Array 타입의 경우, 테이블 조회할 경우 같은 행 값에 나열되어 조회될 수 있다. 어쨌든 구조를 잘 파악하고 데이터 이해하자. 
(*다른 행으로 조회되나 id 값 상으로는 같은 것으로 묶여있고 옆의 행 컬럼은 수치가 없을 수 있음)