Table of contents
Issue Point
개별 기사 데이터 분석 기능에서 dimension GA4 data API 지연 이슈
SELECT id, title, published_at, view_count, category_1depth, category_2depth FROM donga_article
WHERE published_at >= '2026-02-11'
ORDER BY published_at desc
LIMIT 70;
SQL
복사
위의 쿼리로 데이터 집계 결과, 다음의 결과 출력
약 2시간 이전의 데이터는 수집이 되지 않고 있음 (13:41:00 데이터 15:35:00 부터 수집)
→ 이 부분은 람다코드 수집기간 조정으로 해결이 가능할 것 같음.
RunRealtimeRequest
async def query_metrics(
client: "GoogleAnalyticsClient",
article_id: str,
start_date: str,
end_date: str
):
"""
기사 지표 집계 쿼리 실행 (KPI Aggregation Query)
조회수, 세션 시간, 스크롤 깊이 등의 지표를 집계하기 위한 쿼리
Args:
client: GoogleAnalyticsClient 인스턴스
article_id: 기사 ID
start_date: 시작 날짜 (YYYY-MM-DD)
end_date: 종료 날짜 (YYYY-MM-DD)
Returns:
GA API raw response
"""
request = RunReportRequest(
property=f"properties/{client.property_id}",
dimensions=[
Dimension(name=DIMENSION_CONTENT_ID),
],
metrics=[
Metric(name=METRIC_SCREEN_PAGE_VIEWS),
Metric(name=METRIC_USER_ENGAGEMENT_DURATION),
Metric(name=METRIC_SCROLL_DEPTH_AMOUNT),
Metric(name=METRIC_SESSIONS),
Metric(name=METRIC_EVENT_COUNT),
],
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimension_filter=FilterExpression(
filter=Filter(
field_name=DIMENSION_CONTENT_ID,
string_filter=Filter.StringFilter(value=article_id)
)
),
limit=METRICS_QUERY_LIMIT
)
return await client.beta_client.run_report(request)
Python
복사
GA4, donga.com 수집 조회수 차이
db상의 donga_article table과 ga4쪽 donga 조회수 가 많이 차이나는 문제
실제 데이터 까보니 category_1depth, category_2depth도 null인 데이터가 많았음.
그리고 조회수에서 크게는 10000개 가까이, 1000개 이상 조회수가 차이나는 데이터가 있었음.
•
유진 매니저님이 월간 데이터 집계해서 보여주셨는데, lambda 서비스 터졌던 시점 (24~27일) 전후로 누락 데이터가 많음 → 이건 그냥 그때 데이터 수집을 제대로 못해서 터진 것 같음.
◦
SQS (local_workers) 로그 데이터 확인
◦
로컬 WPS 수집 스케줄링 간격 확인, 수집 범위(기간) 확인
◦
24~30일 사이 데이터 다시 수동 머지 시도 후 기사 개수 비교 (혹시 기사 수집 자체가 누락되었을까봐)
▪
현재 조회수
◦
lambda(get_donga_articles) 로그 데이터 확인
→ 기사 개수는 동일함. 따라서 기사 수집에는 문제가 없었으나 추후 조회수 업데이트가 되지 않아 조회수 차이가 발생한 것으로 보임.
Detail
파이프라인
1.
local-workers (WPS 스크래퍼)
•
WPS API 조회: 오늘 기준 7일 전 ~ 오늘 (기사 목록)
•
결과를 2개 SQS로 나눠서 전송:
◦
전체 기사 → all-donga-article-today (전체 파이프라인용)
◦
8~30일 전 기사 ID만 필터링 → donga-article-ids-for-view-update (조회수 업데이트용)
2.
get_donga_analytics Lambda
•
Trigger: SQS (all-donga-article-today)
•
GA4 조회 범위: date_range=60 (기본값, 60일치 GA 데이터)
•
수집 항목: view_count, duration, scroll_depth, category, click_events, thumbnail 등 전체
•
대상 기사: 최근 0~7일 전 기사
3.
get_donga_view_count Lambda
•
Trigger: SQS (donga-article-ids-for-view-update)
•
GA4 조회 범위: date_range=30
•
수집 항목: view_count, duration, scroll_depth 만
•
대상 기사: 8~30일 전 기사
•
문제점
WPS API가 7일치만 가져오는데, 조회수 업데이트 필터는 8~30일 전 기사를 찾고있음. 7일 안에는 8~30일 전 기사가 없으니까 filter_articles_for_view_update()가 항상 빈 리스트를 반환.
Solution
•
희래님 advice
오히려 7일간 데이터보다, 2달로 했을때 데이터가 더 적게 나온결과가 있었다. 그 부분 참고해서 로직적으로 어떤 문제가 있을지 찾아보는게 맞는 것 같다.
→ 현재 7일 ⇒ 30일로 데이터 수집 범위 늘리기. ga4 view count update 쿼리 용량 확인해.(유진님한테 ga4 토큰 개수(API quota) 확인해보기) 각각에 대한 조회수 비교.
변경점
•
get_donga_view_count/handler.py
line 53: date_range=7 → date_range=30으로 조정해서 한 번 돌려보기
•
local-workers
line 131: VIEW_DATE_RANGE=30 → VIEW_DATE_UPDATE=30
→ 1/29 ~ 1/31 기간 코드 실행 결과 : 예상값 9,598 / 실제값 9,598


