컴퓨터 공부/🌠 Journey to Data field

Understanding Data Engineering 7 - Processing data

letzgorats 2024. 12. 8. 23:34

데이터 처리 과정은 원시 데이터를 의미 있는 정보로 변환하는 단계로, 데이터 엔지니어링에서 중요한 역할을 한다. 이번 포스팅에서는 데이터 처리의 개념, 필요성, 방법, 그리고 데이터 엔지니어의 역할에 대해 알아보자.

1. 데이터  처리

데이터 처리 '원시 데이터(raw data)'를 의미있는 정보로 변환하는 과정이다. 예를 들어, 원시 데이터를 정리하고, 불필요한 데이터를 제거하거나, 원하는 구조로 변환하는 작업을 포함한다.


2. 왜 데이터 처리가 필요한가? 

데이터 처리의 가치의 개념 - 예시

1. 불필요한 데이터 제거

- 새 기능 롤아웃(출시) 시, 모니터링 데이터를 수집하지만, 안정화 이후에는 필요하지 않을 수 있다.

- 불필요한 데이터는 저장 비용과 네트워크 비용을 증가시킨다.

 

2. 데이터 변환

- 데이터가 특정 타입으로 제공되지만, 다른 타입으로 변환하면 사용이 더 쉬운 경우가 있다.

(예시) Spotflix에서는 아티스트가 업로드한 고품질 WAV/FLAC 파일을 .ogg 형식으로 변환하여 네트워크 비용을 절감할 수 있다.

 

3. 데이터 구조화

- 데이터를 조직화하면 분석가가 필요한 정보를 더 쉽게 찾을 수 있다.

(예시) 음악 파일의 메타데이터(아티스트 이름, 장르 등)를 추출하여 데이터베이스에 저장한다.

 

4. 생산성 향상

- 데이터 준비 과정을 자동화하여 데이터 사이언티스트가 분석에만 집중하도록 돕는다.

- 데이터 분석에서 얻은 통찰력이 회사에 가치를 더하기 때문이다. 

(The value they add to the company originates from the insights derived from their analyses, so we need to help them focus on and deliver exactly that.)


3. 데이터 엔지니어의 역할

데이터 엔지니어데이터 처리를 위한 다양한 작업을 수행한다.

데이터 엔지니어의 데이터 프로세싱

1. 데이터 정리와 변환

- 손상된 데이터(ex.잘못된 음악 파일)제거한다.

- 누락된 메타데이터 처리한다.

(예시) 장르가 없는 경우 기본값 제공, 빈칸으로 두기, 또는 데이터 거절

 

2. 데이터베이스 최적화

- 데이터가 체계적으로 구조화된 데이터베이스에 저장되도록 보장한다.

- 데이터 조회 성능을 향상시키기 위해 인덱스를 생성한다.

 

3. 뷰(Views) 생성

- 복잡한 데이터 조합을 단순화하기 위해 데이터베이스 뷰를 생성한다.

(예시) 아티스트 데이터와 앨범 데이터를 결합하여 분석가가 쉽게 접근할 수 있도록 지원한다.

※ Views are the output of a stored query on the data.

 

4. 자동화와 성능 최적화

- 반복적이고 필수적인 데이터 처리 작업을 자동화(ex.airflow)

- 데이터베이스 성능과 접근성을 최적화(ex.인덱싱, 쿼리 최적화)


4. 데이터 처리 도구

다양한 데이터 처리 도구

데이터 처리를 위한 다양한(bazillion) 도구가 존재하며, Apache Spark 가 대표적인 예시다.

이 도구들은 대량의 데이터를 배치(batch) 또는 스트림(stream) 방식으로 처리하는 데 유용하다.

※ bazillion : 매우 많은 수 = 수십억 = billion과 zillion을 합한 단어


5. 결론

- 데이터 처리는 원시 데이터를 유용한 정보로 변환하는 과정이다.

- 필요성 : 불필요한 데이터 제거, 데이터 구조화, 네트워크 비용 절감, 분석 효율화

- 데이터 엔지니어는 데이터 정리, 변환, 데이터베이스 최적화 및 자동화를 수행

- Spotflix의 사례처럼 데이터를 효율적으로 처리하면 비즈니스 모델에 큰 가치를 추가할 수 있다.


 

아래 문제를 풀어보자.

 

1. Connect the dots

Data pipelines are used to process data. Before, you learned about ETL (Extract, Transform, Load), one of the frameworks used to build data pipelines. The data processing tasks you just studied actually match that framework, corresponding to either extraction, transformation or loading operations.

 

Note that although saving and loading are usually considered to be opposites, in the context of data engineering, they are the same thing, as you may have noticed. The reason for this is that when you're saving something, you're just storing it in the next step in the pipeline.

 

Can you correctly classify data processing tasks as extraction, transformation, or loading operations?

 

1. Summarizing the yearly listening activity to tell users how many hours they've listened to music on Spotflix this year.

2. Saving the new order of a playlist that was sorted based on the data songs were added, so that it remains that way the next time the user connects.

3. Pulling the top 20 songs users have been listening to on a loop.

4. Writing all the followers of a user in a table.

5. Sorting a playlist's songs based on the date they were added.

6. Collecting data from Google Analytics about our web-marketing promotion offering 3 months of access to the premium tier.

 

Extract  

Transform  

Load  

 

Answer

더보기

Extract → 3, 6

Transform → 1, 5

Load → 2, 4

 

* Pulling: 데이터를 가져오거나 수집하는 것을 의미.

 

As you can see, most of the data processing steps are transformation steps including selecting, encoding, calculating new values, sorting and ordering, joining data from multiple sources, aggregating, pivoting tables, splitting one table into several ones, removing duplicate values.

 

Depending on the context, validating data can be considered part of the extract step (you don't extract if it's not necessary), or the transform step (you check that your results make sense before saving them).→ (ex) 1


이처럼, 데이터 처리는 데이터 엔지니어링의 핵심 단계 중 하나이다. 이를 통해, 데이터 사이언티스트가 더욱 효과적으로 분석할 수 있는 환경을 제공할 수 있다. 다음 포스팅에서는 '배치(batch)'와 '스트림(stream)' 데이터 처리 방식의 차이를 다뤄보겠다.

반응형