Today I Learn
: 코드카타, 아티클 스터디, Python 과제
- 코드카타
- 문제 1
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/157340
2. 정답 코드:
with selected as (
select
car_id,
case when start_date <= '2022-10-16' and end_date >= '2022-10-16' then '대여중'
else '대여 가능' end as availability
from car_rental_company_rental_history
),
selected2 as (
select
car_id,
row_number() over (partition by car_id order by (case when availability = '대여중' then 1 else 2 end) asc ) as rnk,
availability
from selected
)
select car_id, availability
from selected2
where rnk = 1
order by car_id desc
select
car_id,
max(case when '2022-10-16' between start_date and end_date then '대여중'
else '대여 가능' end) as availability
from car_rental_company_rental_history
group by car_id
order by car_id desc
- Window Function 사용한 코드
- 모든 행에 번호를 매긴 후 필터링
- '대여중'을 1등으로 만들어 뽑기 → 상대적으로 무거움 (정렬/순위 연산)
- 모든 행에 번호를 매긴 후 필터링
- Group by 사용한 코드
- 자동차별로 그룹화하여 즉시 비교
- '대여중'이 하나라도 있으면 최댓값 선택 → 상대적으로 가벼움 (집계 연산)
- MAX() 함수는 숫자 뿐만 아니라 문자열에도 적용됨!!
- '대여중' vs '대여 가능' 을 비교하면 '대여중'이 더 큼.
- 자동차별로 그룹화하여 즉시 비교
select
car_id,
case when sum(case when '2022-10-16' between start_date and end_date then 1 else 0 end) > 0 then '대여중'
else '대여 가능' end as availability
from car_rental_company_rental_history
group by car_id
order by car_id desc
- case when sum() 함수를 사용한 코드
- 대여중인 행의 개수가 0보다 크면 '대여중'으로 표시
- 현업에서 가장 많이 쓰임!!!
- 문제 2
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131532
2. 정답 코드:
# 내가 작성한 코드
select date_format(os.sales_date,'%Y') as year, # 문자열 타입
date_format(os.sales_date,'%m') as month,
ui.gender,
count(distinct os.user_id) as users
from online_sale os
join user_info ui
on os.user_id = ui.user_id
where ui.gender is not null
group by 1,2,3
order by 1,2,3
# 개선된 코드
select year(os.sales_date) as year, # 숫자 타입
month(os.sales_date) as month,
ui.gender,
count(distinct os.user_id) as users -- 행위의 주체인 os 테이블 기준!
from online_sale os
join user_info ui
on os.user_id = ui.user_id
where ui.gender is not null
group by 1,2,3
order by 1,2,3
- 파이썬 공부
- 리스트
- 튜플
- 딕셔너리 (mutable)
https://myun0506.tistory.com/53
리스트, 튜플, 딕셔너리
- 리스트슬라이싱 기본 구조 [start:stop:step]start (시작 인덱스) - 기본값: 0stop (종료 인덱스) - 기본값: 시퀀스의 길이step (간격) - 기본값: 1step의 부호에 따라 생략된 start와 stop의 기본값이 완전히 바
myun0506.tistory.com
- 아티클 스터디
https://yozm.wishket.com/magazine/detail/2563/
새로운 데이터 직군, 데이터 애널리틱스 엔지니어란? | 요즘IT
‘애널리틱스 엔지니어’, 혹은 ‘분석 엔지니어’라고 들어보셨나요? 미국에서는 대략 3~4년 전부터 화제가 되기 시작했고, 한국에서는 작년부터 본격적으로 주목받고 있습니다. 간단히 말해
yozm.wishket.com
- 요약:
- 데이터 애널리틱스 엔지니어의 역할
- 데이터 파이프라인 만들고 관리
- 엔지니어가 구축한 인프라를 사용해 데이터를 ‘분석할 수 있는 형태’로 만듦
- 데이터 정제, 모델링, 변환
- 데이터 분석가가 데이터를 분석할 수 있도록 수집하고 기반을 다져줌
- 데이터 모델링, 데이터 마트 구성, 데이터 대시보드 개발
- 데이터 애널리틱스 엔지니어의 필요 역량/역할
- Python
- ETL : 원시 데이터 추출, 데이터 변환, 데이터 웨어하우스(DW)에 적재
- SQL
- 저장된 데이터를 쿼리하고 분석
- API 데이터 추출
- 다양한 외부 소스로부터 데이터를 추출하기 위해 API활용
- API 문서 이해, 적절한 요청 매개변수를 설정하는 능력 필요
- 다양한 외부 소스로부터 데이터를 추출하기 위해 API활용
- On-Premise 서버 / 클라우드 모두에서 작업할 수 있어야 함
- On-Premise : 물리적 인프라의 직접 제어 (Bare Metal & Virtualization)
- 기업이 자체 데이터 센터(IDC) 내에 물리적 서버, 네트워크 스위치, 스토리지 장비를 직접 구축하고 운영하는 방식 (회사 건물 안에 진짜 서버를 들여놓고 전선을 연결하고, 에어컨을 틀어 열을 식히며 직접 관리하는 방식)
- 특징
- 컴퓨팅 리소스 관리: 하드웨어 선정부터 OS 커널 파라미터 튜닝, 네트워크 토폴로지 설계까지 엔지니어가 직접 관여함
- 데이터 보안 및 거버넌스: 데이터가 물리적으로 사내 망 내부에만 존재하므로, 보안 정책이 엄격한 금융권이나 공공기관에서 선호함. 외부망과의 물리적 차단(Airgap)이 가능함
- 엔지니어의 역할: CLI(Command Line Interface) 숙련도가 필수적인 환경. SSH 접속을 통해 서버 리소스를 직접 핸들링하고, 하드웨어 성능의 한계(Resource Bound) 내에서 ETL 파이프라인을 최적화해야함
- 단점: Scalability(확장성)가 매우 낮음. 트래픽이 몰려 서버가 더 필요하면 발주, 입고, 랙 마운팅, OS 설치까지 오래 걸림
- 클라우드(Cloud) : 추상화된 자원과 Managed Service (IaaS, PaaS, SaaS)
- 하이브리드 혹은 퍼블릭 환경(AWS, GCP, Azure 등)에서 가상화된 자원을 API 기반으로 할당받아 사용하는 방식
- 특징
- 추상화 (Abstraction): 물리적인 하드웨어 관리는 클라우드 제공사(CSP)가 담당하며, 엔지니어는 인스턴스(EC2)나 서버리스(Lambda), 데이터 웨어하우스(BigQuery)등의 '서비스' 단위로 자원을 제어함
- Elasticity & Agility: 수 분 내에 수천 대의 노드를 클러스터링 할 수 있는 Auto-Scaling 이 핵심. Snowflake나 BigQuery가 대표적인 예로, 컴퓨팅과 스토리지를 분리하여 독립적으로 확장(Decoupled Storage and Compute)할 수 있음
- 엔지니어의 역할: 인프라를 코드로 관리하는 IaC(Infrastructure as Code) 개념이 중요해지며, CSP가 제공하는 다양한 Managed Service 간의 연동(Intergration)과 비용 최적화(FinOps)가 주 업무가 됨
- On-Premise : 물리적 인프라의 직접 제어 (Bare Metal & Virtualization)
- 지표 정의
- 조직의 비즈니스 목표 달성을 위한 명확한 지표 설정 필요
- 다른 팀과의 협업/미팅을 통해 필요한 데이터의 지표 파악 (의사소통 능력)
- 데이터 시각화
- 데이터 마트 구축
- 관련 데이터를 효율적으로 저장하고 접근할 수 있도록 함
- 데이터 대시보드 개발
- 의사결정 과정 지원
- Python
- 데이터 애널리틱스 엔지니어의 역할
데이터 분석가나 다른 데이터를 다루는 직무에서 데이터를 편하게 다룰 수 있도록 데이터의 기반을 다져주는 역할!데이터를 수집하기도 하며 사용하기 힘든 데이터를 양질의 데이터로 변환해주는!
<공통 인사이트> 데이터 분석가와 데이터 엔지니어의 중간 단계인 것 같다. 하지만 이 경계가 모호하기 때문에 명확하게 분류해서 필요 역량만 공부하는 것이 아닌, 전체적으로 두루 습득을 해야할 것이다.
- 2025 데이터 분석가 채용동향 및 엔지니어링 역량 요구 심화 분석
(▷ 재천님 공유 자료)
- 시기별 시장 동향 분석
- 상반기: 기술 도입의 과도기 (Q1~Q2)
- 주요 특징: 'Full-stack Analyst' 개념의 태동.
- 시장 상황: 1분기 기준 전체 DA 공고 중 약 $44.2%$가 AE 역량(데이터 마트 설계, 파이프라인 관리 등)을 요구하기 시작함.
- 기술적 변곡점: 2025년 4월 Airflow 3.0 출시와 함께 데이터 파이프라인 구축의 진입 장벽이 낮아짐. 이에 따라 별도의 데이터 엔지니어(DE) 없이 분석가가 직접 파이프라인을 수정·관리하기를 기대하는 기업 수요가 증가함.
- 하반기: 역량의 표준화 및 고도화 (Q3~Q4)
- 주요 특징: 엔지니어링 역량의 '필수 조건(Must-have)'화.
- 시장 상황: '비전공자(문과) 분석가'에 대한 수요가 감소하고, CS(컴퓨터공학) 지식을 갖춘 분석가 선호 현상이 뚜렷해짐 (관련 전공 우대 비중 약 50% 육박).
- 핵심 키워드 'A.C.E': 4분기 채용 트렌드는 AI(인공지능 활용), Communication(소통), Expertise(기술 전문성)로 요약됨. 특히 단순 SQL 추출을 넘어, Git을 통한 버전 관리와 dbt를 활용한 데이터 모델링 능력이 신입 채용의 당락을 가르는 핵심 지표로 자리 잡음.
- 데이터 분석가 직무 내 엔지니어링 (AE) 역량 요구 심화의 원인
- Modern Data Stack의 보편화: SaaS 기반 데이터 도구(Snowflake, BigQuery, dbt 등)의 확산으로 분석가가 인프라를 직접 다루기 쉬워짐.
- 조직 효율성 추구: 비용 절감 기조에 따라, 데이터 엔지니어에게 의존하지 않고 스스로 데이터를 가공(ELT)하여 분석까지 완료할 수 있는 '올라운더(All-rounder)' 인재를 선호함.
- 지원자를 위한 전략적 제언
- 포트폴리오의 기술적 깊이(Depth) 강화:
- 단순한 시각화(Tableau/PowerBI) 프로젝트보다는, 데이터 수집부터 적재, 가공, 시각화에 이르는 전체 파이프라인(End-to-End)을 경험한 프로젝트를 최우선으로 배치해야 한다.
- 협업 툴 (Git) 사용의 내재화:
- 분석 코드를 로컬에 저장하지 않고, GitHub를 통해 관리하며 커밋 메시지(Commit Message)를 작성하는 등 실제 현업의 개발 문화를 이해하고 있음을 증명해야 한다.
- dbt 등 트렌드 도구의 전략적 학습:
- 깊은 수준의 엔지니어링 지식보다는, dbt의 기본 개념(Modeling, Testing, Documentation)을 이해하고 미니 프로젝트에 적용해 본 경험만으로도 신입 경쟁에서 상위 10% 내의 변별력을 확보할 수 있다.
'[데이터분석] 부트캠프 TIL' 카테고리의 다른 글
| 20260112 TIL (1) | 2026.01.12 |
|---|---|
| 20260111 TIL (1) | 2026.01.12 |
| 20260108 TIL (0) | 2026.01.08 |
| 20260107 TIL (1) | 2026.01.07 |
| 20260106 TIL (0) | 2026.01.06 |