데이터 타입, 변환과 문자열 함수와 날짜 및 시간 데이터를 이해하고자 한다.
데이터 타입을 이해하는 것은 내가 원하는 집계, 조회를 하기 위해 필요한 과정이며
조건문을 활용하기 위해서는 컬럼의 데이터 타입을 이해하는 것이 필수인 것 같다.
함수의 경우, 기본적으로 원리가 "엑셀"과 유사한 것 같아서
함수를 사용하고자 하는 이유에 대해서 함께 체크해보고자 한다.
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 값 상으로는 같은 것으로 묶여있고 옆의 행 컬럼은 수치가 없을 수 있음)
'Google BigQuery' 카테고리의 다른 글
| [강의 수강 11일차] 조건문과 연습 문제 (2) | 2025.06.02 |
|---|---|
| [강의 수강 10일차] 시간 데이터 연습 문제 풀기 (0) | 2025.05.30 |
| [강의 수강 7일차] SQL 쿼리 잘 작성하기, 쿼리 템플릿 (0) | 2025.05.24 |
| [강의 수강 6일차] SELECT절 연습 문제 풀어보기 (3) (0) | 2025.05.21 |
| [강의 수강 5일차] SELECT절 연습 문제 풀어보기 (2) (0) | 2025.05.18 |