[데이터 엔지니어링 데브코스] TIL 22일차 - 데이터 웨어하우스와 SQL과 데이터분석(2), (3)

박단이·2023년 11월 15일
0

데브코스 TIL

목록 보기
21/56

오늘 배운 것🤓

1. SQL 기본

  • 여러 줄의 SQL문을 실행한다면 세미콜론(;)로 분리하는 것이 필수
  • 주석이 한 줄일 땐 --, 여러 줄 일 땐 /* */
  • 테이블, 필드 이름의 명명규칙, SQL 키워드 대소문자 등 규칙을 정해서 통일성을 맞추도록 하자.

2. DDL

1) CREATE

  • 테이블을 만들 수 있으며, RDB와 같은 문법을 사용한다. - PK(Primary Key) 속성을 지정할 수 있으나 데이터 웨어하우스에서는 무시된다.
    (데이터가 커지면 레코드가 추가될 때마다 전체 데이터를 조회해야하기 때문에 성능이 떨어지기 때문이다.)
  • PK는 데이터 웨어하우스 상에서 SQL Optimizer에게 이 필드를 PK가 적용될 수 있게 검사하라고 알려주는 것
CREATE TABLE schema_name.table_name (
	column1 type1,
    column2 type2 Primary Key,
    column3 type3
)

2) DROP

  • 존재하는 테이블을 삭제한다. (존재하지 않는 테이블이라면 에러가 난다.)
-- 기본
DROP TABLE schema_name.table_name

-- 테이블이 있을 때만 테이블 삭제
DROP TABLE IF EXISTS schema_name.table_name

3) ALTER

  • 테이블의 이름, 컬럼 정보 등을 수정한다.
-- 컬럼추가
ALTER TABLE table_name ADD COLUMN field_name type
-- 기존 컬럼 이름 변경
ALTER TABLE table_name RENAME current_field TO new_field
-- 기존 컬럼 제거
ALTER TABLE table_name DROP COLUMN field_name
-- 테이블 이름 변경
ALTER TABLE table_name RENAME TO new_table_name

3. DML

1) SELECT : 레코드 질의 언어
2) INSERT : 레코드 추가
3) UPDATE : 필드값 수정
4) DELETE : 레코드 삭제, transaction에 사용 가능
5) TRUNCATE : 레코드 삭제, transaction에 사용 불가능

DROP TABLE table_name : 테이블 자체 삭제
DELETE FROM table_name : 데이터만 삭제, 테이블을 남아있음, WHERE 절을 사용하여 조건에 맞는 데이터만 삭제 가능
TRUNCATE TABLE table_name : 전체 데이터 삭제만 가능, 테이블은 남아있으나 사용하고 있는 공간을 전부 반환

4. 데이터 품질 체크

  1. 노가다가 가장 중요하다!
    • 중복된 레코드 체크
      : 모든 row 수 count vs 모든 열에 대해 DISTINCT 후 count
      일 때, 수가 같은지 확인
    • 최근 데이터 여부(freshness) 체크
      : MAX(timestamp), MIN(timestamp)
    • PK Uniqueness가 지켜지는지 체크
      : PK에 대해 group화를 하고 count, 만들어진 count가 2 이상이라면 PK 위반
    • NULL 값 체크
      : COUNT(CASE WHEN column_name IS NULL THEN 1 END)
    • 위의 내용을 모두 unit test 형태로 만들어서 매번 체크하자.
  2. 너무 많은 테이블이 존재한다.
    • Data Distcovery 문제가 발생한다.
      어디에 어떤 정보가 있는지 누구에게 물어봐야 하는지 알 수 없는 시기가 온다.
    • 이 모든 내용을 담고 있는 메타 정보를 잘 관리하는 것이 중요해진다.
    • 이를 잘 관리 하기 위해 오픈소스 및 서비스가 생겨났다.
      DataHub(LinkedIn), Amundsen(Lyft), ...
      Select Star, DataFrame, ...

5. CTAS, CTE

  • CTAS : CREATE TABLE AS SELECT

    • 테이블을 만드는 것과 동시에 데이터를 넣어주는 과정이다.
    • insert 와 create를 동시에 한다.
    • 자주 join하는 table들이 있다면 CTAS를 이용하여 만들어주면 편리해진다.
    CREATE TABLE table_name AS
    SELECT ~~ 원하는 조합 ~~~
  • CTE

    • with 쿼리를 이용하여 임시 테이블을 만들어주는 과정
    • 뒤에 다른 sql에도 재사용이 가능하다.
with table_name(
	SELECT ~~ 원하는 조합 ~~
)
SELECT ... FROM table_name

느낀 점😊

SQL에 대한 전반적인 정리를 하는 주차라서 가볍게 들을 수 있어서 좋은 것 같다. 내가 이미 알고 있는 명령어에 대해 조금더 상세한 설명을 들으면서 머리속에서 한번더 정리하는 시간이 되어 새로운 쿼리를 짤 때 더 빠르게 명령어를 생각해낼 수 있다.

실제 현업에서 사용하는 언어를 섞어서 알려주셔서 나에게는 더 유익한 시간이 되고 있다. 이미 아는 내용일수록 참고할만한 내용을 놓치지 않게 더더욱 집중이 필요한 주차라고 느낀다.

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글