ssung_데이터 엔지니어링/5주차_데이터 웨어하우스, SQL, 데이터분석

데이터 웨어하우스, SQL, 데이터분석 (2)

ssungcohol 2023. 11. 14. 17:14

SQL 기본

  • 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요
    • SQL_1; SQL_2; SQL_3;
  • 주석
    • -- (주석내용) : 인라인 한 줄짜리 주석
    • /* (주석내용) */ : 여러 줄에 걸쳐 사용 가능한 주석
  • 팀 프로젝트의 경우 팀에서 사용하는 포맷 설정 후 진행
  • 테이블/필드 이름의 규칙을 정하는 것이 중요

SQL DDL - 테이블 구조 정의 언어

 

  • CREATE TABLE
    • Primary key 속성을 지정할 수 있지만, 무시
      (Primary key uniqueness - 데이터 웨어하우스에서는 지켜지지 않음)
    • CTAS - CREATE TABLE 테이블 이름 AS SELECT
      • 새로운 테이블을 생성할 때 기존의 테이블의 내용과 똑같이 한 번에 복사하고자 할 때 사용
  • DROP TABLE
    • DROP TABLE 테이블 이름; - 존재하지 않는 테이블을 지우려 하는 경우 에러 발생
    • DROP TABLE IF EXISTS 테이블 이름; - 테이블 이름이 있으면 삭제, 없으면 에러
  • ALTER TABLE
    • ALTER TABLE 테이블 이름 ADD COLUMN 필드 이름 필드 타입;
       - 새로운 컬럼 추가
    • ALTER TABLE 테이블 이름 RENAME 현재 필드 이름 to 새 필드 이름;
       - 기존 컬럼 이름 변경
    • ALTER TABLE 테이블 이름 DROP COLUMN 필드이름;
       - 기존 컬럼 제거
    • ALTER TABLE 현재 테이블 이름 RENAME to 새 테이블 이름;
       - 테이블 이름 변경

테이블 데이터 기본 조작 언어 (형태)

 

SELECT : 원하는 필드 입력

FROM : 레코드를 읽어 올 테이블 설정

WHERE : 레코드 선택 조건 지정

GROUP BY : 그룹을 지정하여 원하는 레코드 추출

ORDER BY : 추출한 레코드의 순서를 지정

 

레코드 수정 언어

 

INSERT INTO : 테이블에 레코드 추가

UDATE FROM : 테이블 레코드의 필드 값 수정

DELETE FROM : 테이블 레코드 삭제


데이터 엔지니어는 기억하자

  • 현업에서 깨끗한 데이터는 존재하지 않는다!
    • 항상 믿을 수 있는 데이터인지 의심!
    • 노가다를 해보자! - 실제로 레코드를 100개, 1000개 든 보는게 가장 정확하다
  • 데이터 일을 한다면 항상 데이터의 품질을 의심하고 체크하자!
    • 중복 레코드 확인
    • 최근 데이터 존재 여부 확인 (freshness)
    • Primary key uniqueness가 지켜지는지 확인
    • 값이 비어있는 컬럼이 있는지 확인
    • unit test를 만들어 매번 쉽게 체크 할 수 있다!
  • 일정 시점이 지나면 너무 많은 테이블들이 존재한다
    • 회사의 성장과 밀접
    • 중요한 테이블이 무엇이고 그것들의 메타 정보를 잘 관리하는 것이 중요
  • 위의 시점부터는 Data Discovery 문제들이 발생
    • 무슨 테이블에 내가 원하고 신뢰할 수 있는 정보가 있는가?
    • 테이블에 대해 질문을 하고 싶은데 누구한테 하면 좋을까?
728x90