dbt workflow
1. dbt init
2. profiles.yml 파일에서 설정 정의, 업데이트
3. 데이터 모델 정의 & 사용 (dbt run)
- 데이터 모델 : 데이터 웨어하우스에 저장된 원천 데이털르 변환한 결과
- dbt run : 원본 SQL 코드르 프로필(배포 대상)에 맞게 변환한 뒤, 변환 과정을 수행
4. 데이터 검증 & 테스트
5.
데이터를 어떤 형태로 저장하고 보여줄 것인가? 에 대한 전략
Materialized View(구체화된 뷰)
완전 무작위 누락(MCAR) : 결측 데이터와 다른 값 사이에 체계적인 관계가 없음
process.extract(비교의 기준이 되는 문자열, 비교할 대상들이 담긴 리스트나 딕셔너리, limit=유사도가 높은 순서대로 몇 개의 결과 가져올지 결정)
페어 생성하기, 블로킹
recordlinkage,compare, exact
# import recordlinkage
import recordlinkage
# create indexing object
indexer = recordlinkage.Index()
# generate pairs blocked on state
indexer.block('state')
pairs = indexer.index(column_A, column_B)
# create a compare object
compare_cl = recordlinkage.Compare()
# find exact matches for pairs of column
compare_cl.exact('column', 'column', label='label_name')
# find similar matches for pairs of surname and address_1 using string similarity
compare_cl.string('surname', 'surname', threshold=0.85, label='label_name')
# find matches
potential_matches = compare_cl.compute(pairs, column_A, column_B)
서로 다른 두 데이터셋에서 같은 대상을 가르키는 행들을 찾아내는 과정
ex) A 데이터셋의 A 식당과 B데이터셋의 B 식당이 같은 식당인가?
city, cuisine_type을 먼저 비교해.
Indexing(Block) : 비교할 범위를 제한
Compare(exact) : 완벽히 일치해야 하는 항목 → 같으면 True, 다르면 False
Compare(string): 오타가 있어도 비슷한 항목 → Threshold 이상 = 1
Compute: 최종 점수 계산
페어 생성 → 컬럼 간 비교 → 잠재적 매치 찾기 → 중복 탐색 → 두 데이터프레임 붙이기
Python으로 데이터 정제하기 Again → Record Linkage