[TIL 22일차] 데브코스 데이터엔지니어링

heering·2023년 5월 9일
0

SQL 기본

  • 맨날 까먹는데.. 문장 끝날 때 세미콜론 붙여야겠다. 한 문장이면 없어도 상관없다지만!
  • SQL 주석: --, /* -- */
  • 팀 프로젝트 때는 팀에서 사용하는 공통 포맷을 정할 필요가 있음
  • 테이블/필드 이름의 명명 규칙 정하기: 단수형 vs 복수형, _ vs CamelCasing

SQL DDL (테이블 구조 정의 언어)

  • PK 속성을 지정할 수 있으나 무시됨(Primary key uniqueness, 빅데이터 웨어하우스에서는 지켜지지 않음: 왜냐하면 PK 보장하는 게 메모리와 시간이 더 들기 때문에, 대용량 데이터의 적재가 걸림돌이 되기 때문.)
  • DROP TABLE: 없는 테이블을 지우려고 하면 에러가 나니까, DROP TABLE IF EXISTS table_name; 이렇게. (DELETE FROM은 테이블의 레코드를 지우는 거.)
  • ALTER TABLE
    • 기존 컬럼 이름 변경: ALTER TABLE 테이블이름 RENAME 현재필드이름 to 새필드이름;
    • 기존 컬럼 제거: ALTER TABLE 테이블이름 DROP COLUMN 필드이름;
    • 테이블 이름 변경: ALTER TABLE 현재테이블이름 RENAME to 새테이블이름;
    • 새로운 컬럼 추가: ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입;

SQL DML (테이블 데이터 조작 언어)

  • SELECT
SELECT channel, COUNT(1) -- COUNT(*)
FROM raw_data.user_session_channel
GROUP BY 1; -- 여기서 1은 일련번호니까 1번째인 channel을 의미
  • INSERT INTO
  • UPDATE FROM
  • DELETE FROM

기타

  • LIKE vs ILIKE: ILIKE는 대소문자 구분 안함
  • float 붙여야 0 아님
SELECT 1/2, 1/2::float;
-- 값은 각각 0, 0.5

현업

  • 현업에서 깨끗한 데이터란 존재하지 않음
  • 중복된 레코드 제거, 최근 데이터 존재 여부 체크, PK uniqueness가 지켜지는지 확인, 값이 비어있는 컬럼 있나 체크 → unit test로 매번 쉽게 체크 가능
  • 어느 시점이 되면 엄청 많은 테이블들이 존재하게 되는데, 이럴 때 생기는 문제들을 해결하기 위해 DataHub(LinkedIn), Amundsen(Lyft), ... 등 서비스 출현

0개의 댓글