Data Engineering/프로그래머스 study 11기

[프로그래머스] 데이터 엔지니어 study - 8주차

히또아빠 2023. 3. 11. 23:29

1.Database Normalizaion

  • DB를 조직적이고 일관된 방법으로 디자인 → 데이터 정합성 유지, 수정/적재/삭제 용이
  • 사용되는 개념 → Primary key, Composite key, Foregin key
  • 1NF(First Normal Form)
  • 2NF(Second Normal Form)
    • 일단 1NF 만족
    • Primary Key 중심으로 의존결과 알 수 있어야함
    • 부분적인 의존도 x → 모든 부가 속성들은 Primary Key를 가지고 찾을 수 있어야함
  • 3NF(Third Normal Form)
    • 2NF 만족
    • 전이적 부분 종속성 없어야함
  • Slowly Changing Dimensionsl
    • DW, DL에서 모든 테이블의 히스토리를 유지하는 것이 중요함
    • 보통은 두개의 timestamp 필드
      •  create_time
      • update_time
  •  
 

What is Normalization in DBMS (SQL)? 1NF, 2NF, 3NF Example

Normalization in Database 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF. Normalization is a database design technique which organizes tables in a manner that reduces redundancy and dependency of data.

www.guru99.com

2.DBT(Data Build Tool)

  • 소개
    • ELT용 오픈소스: In-warehouse data transformation
    • dbt Labs 라는 회사가 상용화 → Analytics Engineer라는 말 만듦
    • 다양한 DW 지원
      • Redshift, Snowflake, Bigquery, Spark
    • 클라우드 버전도 존재 → dbtCloud
    • git 연동가능, SQL 지식 필요
    • raw data를 한번 정리해서 ELT
      • 그냥 할때보다 시간이 들지 몰라도 한번 더 본다는 장점
    • 데이터 모델(models) → data lineage 추적 가능, data discovery tool
    • 입력 데이터(seeds)
    • 데이터 체크(tests)
    • 스냅샷(snapshots)구성
  • 사용 시나리오(요구조건)
    • 모델링 변경 사항을 이해하기 쉽고 필요하다면 롤백 가능
    • 모델간 종속성이 명확(리니지) 하고 검색 가능
    • 데이터 품질 테스트
    • 에러 보고
    • Fact 테이블의 증분 로드
    • Dimension 테이블 변경 추적(히스토리 테이블)
    • 쉽게 접근 가능한 문서
  • DBT models
    • model: ELT 테이블을 만드는데 기본이 되는 빌딩블록
    • 테이블이나 뷰의 형태로 존재
    • models 폴더 밑에 SQL 파일로 존재
      • 기본적으로 SELECT + 템플릿과 매크로
      • 다른 테이블들 사용가능 → 이를 통해 리니지 파악
    • 기본적으로 입력 데이터 정의
    • CTE (Common Table Expression)  
WITH tableA AS (
	SELECT * FROM DW1.tableB
)
SELECT
	a,
	b,
	c
FROM
	tableA
  • OUTPUT 4가지의 Materialization 종류
    • View: 데이터를 자주 사용하지 않는 경우, 피지컬하게 DB에 존재
    • Table: 데이터를 반복해서 자주 사용하는 경우, 피지컬하게 DB에 존재
    • Incaremental: Table Appends, Fact 테이블, 과거 레코드를 수정할 필요가 없는 경우
    • Ephemeral: CTE, 한 SELECT에서 자주 사용되는 데이터를 모듈화하는데 사용
    • Tests
      • 내장 일반 테스트(”Generic”)
        • unique, not_null, accepted_values, relationships 등
        • models 폴더
      • 커스텀 테스트(”SIngular”)
        • 기본적으로 SELECT로 간단하며 결과가 리턴되면 “실패”로 간주
        • tests 폴더
  • DBT Snapshots
    • Dimension 테이블은 성격에 따라 변경이 자주 발생
      • ex) 사용자 정보, 상품 정보
    • 히스토리 정보를 만들어야 함 → 과거의 그 시점에 테이블을 보고자(과거로 롤백)
    • 조건: 데이터 소스가 primary key 있어야 하고 + 레코드 변경시간을 나타내는 타임스탬프 필요
    • 위의 조건 만족해야 스냅샷 기능

 

3.커리어 및 이력서

  • 잡 타이틀로 찾기 vs 아는 기술로 찾기 → 기술로 찾는게
  • 경력 상관없이 지원
  • 이력서
    • 이력서에 첫번째 장에는 스킬셋에 관련된게 있어야함
    • 한번이라도 써본거 스킬 다쓰기 → 면접가서 어느정도 쓰는지
    • 기술별로 카테고리화 해서 적기
      • programming languages: Python, Pyspark, Julia, R
      • Database: MySQL, Redshift
      • Cloud: AWS, Hive
      • Productivity Tools: Jenkins, VScode, Jupyter Notebook, Slack, Notion, Jira, Git, Mermaid
    • 이력서 커버레터 굳이 불필요한 페이지 하나 더 있는거
    • 데이터 경력 쓸게 많으면 데이터와 관련 없는 과거 경력 넣을 필요 없음
  • 행동양식 질문
    • Collaboration
      • 다른 팀에 속한 다수의 사람들과 했던 프로젝트에 대해서 이야기 해주세요
      • 지금까지 가장 같이 일하기 힘들었던 사람들은 누구고 왜 힘들었냐
    • Ownership
      • 프로젝트 중에 문제가 생겼는데 주도적으로 해결한 경우가 있냐
      • 프로젝트를 처음부터 끝까지 진행한 경우가 있다면 설명
    • Impact
      • 가장 임팩트가 컸던 프로젝트에 대해 설명해 달라
    • Craftsmanship
      • 맡은 일을 더 잘 하기 위해서 취했던 행동 그리고 그로 인해 좋은 결과가 나온 케이스 있다면 설명
    • 위의 네 질문을 받으면 상황/업무/액션/결과(STAR, situation, task, action, result)
  • 어떤 질문을 해야할까?
    • 좋은 질문은 면접관의 생각을 바꿀 수 있음!
      • 미리 회사를 검색해 무엇을 하는 곳인지 찾아볼 것
      • 면접관이 자기 소개를 할때 잘 듣고 그에대해 짧게 질문해볼 것
    • 추천질문 예시
      • hiring manager에게 처음에 무슨 일을 하게 되나?
      • 지금 진행중인 중요한 프로젝트가 있는지?
      • 지금 일을 잘 하는 사람들은 어떤 특징을 갖고 있는지?
      • 지금 회사에서 제일 좋았던 점 그리고 안좋았던 점 설명 해주실수 있나요?
      • 회사는 어떻게 수익창출을 하고있는지?
      • 지금 사용중인 데이터 관련 기술 스택에 대해 설명해주실 수 있나요?
  • 직장 선택 기준
    • 성장성
      • 회사 크기보다는 회사가 성장하고 있는지
    • 사람/문화
      • 회사내에 inner circle이 존재하는지?
        • 존재한다면 내가 들어가서 일을 잘해도 그 안에 끼지 않는 한 인정받기 쉽지 않음
        • 안에 들어가서 일을해보거나 잘 아는 지인이 회사에 있지 않은한 알기 힘듦
        • 존재한다면 회사가 더 큰 성장을 이루는 것이 쉽지 않음
    • 내 매니저
      • 보고 배울점이 많은 사람인가? → 나이스한 것을 이야기 하는게 아님.
      • 윤리적이고 공정한 사람이며 명확한 결정을 내리고 피드백을 잘 주는지?, 회사내에서 힘이 있는 사람인지?
      • 좋은 매니저랑 일을 하면 나중에 큰 도움이 됨
        • 매니저가 가는 회사 따라가기
        • 이 사람이라면 지금 어떻게 했을까?
      •  
300x250
반응형