1. 데이터를 다루는 검증된 언어
  • 장점
    • 구조화된 데이터를 다루기 쉽다
    • 맵리듀스는 하이브
  • 단점
    • 비구조화된 데이터 다루기 어려움
    • Spark, Hadoop 등으로 대체
  1. 데이터를 다루는 자세
  • 깨끗한 데이터란 존재하지 않음
    • 믿을만 한지 항상 의심할 것
    • 실제 레코드를 살펴보는 것이 최고 (노가다)
  • 항상 데이터의 품질을 의심하고 체크하는 버릇 필요
    • 중복된 레코드들 확인
    • 최근 데이터의 존재여부 (freshness)
    • Primary Key uniqueness 지켜지는 지 확인
    • 값이 비어있는 컬럼들이 있는 지 체크
    • 코딩의 unit test 형태로 만들어 매번 쉽게 체크 가능
  1. Data Discovery 문제가 발생하는 경우
  • 어느 시점에 축적되는 방대한 데이터 테이블의 양
    • 회사 성장과 밀접한 관련
    • 중요 테입믈들이 무엇인고 그것들의 메타 정보를 잘 관리하는 것이 중요
    • ERD의 중요성
  • 이 문제를 해결하기 위한 다양한 오픈소스들
    • DataHub(LinkedIn), Amundsen(Lyft)
    • Select Star, DataFrame
  1. SQL의 기본
  • 다수의 SQL문은 세미콜론으로 분리
SQL1; SQL2; SQL3;
  • 여러 줄짜리 주석
  • 키워드는 포맷팅이 필요 (팀 내 공통 포맷)
  • 테이블, 필드 이름의 명명규칙을 정하는 것이 중요
    • 단수형 vs 복수형
    • User vs Users
  1. SQL의 두 가지 측면

Data Definition Language

  • CREATE TABLE
    - Primary key 속성을 지정할 수 있으나 무시됨
    • Primary key uniqueness
      • Big Data Warehouse에서는 지켜지지 않음 (Redshift, Snowflake, Bigquery)
    • CTAS: SELECT할 때마다 원하는 테이블 생성
      • Summary Table 생성이 용이
  • primary key uniqueness를 만든 사람이 보장해 주어야 하며, 직접 확인하려 하면 시간이 너무 오래 걸린다.

Data Manipulation Language

  1. SQL 문법
  • WHERE

    	- IN
    WHERE Channel in ('Google', 'Youtube')
    WHERE channel = 'Google' OR channel = 'Youtube'
    NOT IN
    • LIKE and ILIKE

      • LIKE 는 문자열 일치에 특화된 CASE
      • ILIKE는 CASE에 까다롭지는 않음
  • String 관련 함수

  • INSERT

  • ORDER BY

    • Redshift에서는 Null이 가장 큰 값
    • MySQL에서는 반대
  • JOIN

    	- FULL JOIN
    • INNER JOIN
    • CROSS JOIN
    • SELF JOIN
  • JOIN시 유의점

    	- 중복 레코드가 없고, Primary Key의 uniqueness 보장됨을 확인할 것
    • one to one
    • one to many -> 이 경우 중복값이 증폭됨
profile
유저가 왜 그랬을까

0개의 댓글