실패 원인을 확인하고 대시보드로 전달하기
이 레슨에서 익혀야 할 것
코드 오류를 실행 히스토리에서 확인해 복구한 뒤, 일별 마트를 대시보드 차트로 올리고 설명과 권한을 정리해 분석가에게 넘깁니다.
마지막 레슨은 두 부분입니다. 먼저 weather_daily_pipeline을 일부러 실패시켜 원인을 찾는 경로를 익힙니다. 그다음 복구한 파이프라인의 결과를 대시보드 차트로 올려 분석가에게 넘깁니다.
시작하기 전 안전한 실습 환경 만들기
이 실습은 collect_weather_hourly 코드를 잠시 망가뜨립니다. 공유·운영 파이프라인에서는 진행하지 마세요.
- 파이프라인 설정 → 일정에서 일정 활성화를 끕니다. 진단하는 동안 자동 실행이 끼어들지 않게 합니다.
- 현재 코드를 다른 곳에 복사해 둡니다.
기존 코드를 다른 파이프라인에서도 참조하고 있다면 검사기에서 원본을 수정하지 말고 새 코드로 저장해 연습용 복사본을 사용하세요. 원본 수정은 그 코드를 참조하는 다른 파이프라인의 다음 실행에도 영향을 줍니다.
현재 파이프라인은 다음과 같이 연결돼 있어야 합니다.
collect_weather_hourly → src_weather_hourly → prepare_weather_daily
├→ stg_weather_hourly
└→ mart_weather_daily
확인할 수 있는 실행 정보
- 상단 실행 이력 — 최근 실행의 상태를 작은 막대로 보여 줍니다.
- 캔버스의 노드 — 실행 중, 성공, 실패 상태가 노드에 반영됩니다.
- 검사기 → 히스토리 — 선택한 노드의 실행별 상태, 시작 시각, 소요 시간, 오류 설명과 스택 트레이스를 보여 줍니다.
각 노드의 입력·출력 행을 이 화면에서 바로 미리보는 기능은 아닙니다. 데이터 값은 실행이 끝난 뒤 데이터셋의 데이터 화면에서 확인하세요.
오류 만들기
외부 연동에서 가장 흔한 실패인 잘못된 경로를 재현합니다.
collect_weather_hourly코드를 편집합니다.- 호출 경로
"/v1/forecast"를 존재하지 않는"/v1/forecastx"로 바꿉니다. - 코드와 파이프라인 변경 사항을 저장합니다.
- 지금 실행을 누릅니다.
- 실행이 실패 상태로 끝날 때까지 기다립니다.


히스토리에서 원인 찾기
- 캔버스에서 실패 상태인
collect_weather_hourly노드를 선택합니다. - 오른쪽 검사기의 히스토리 탭을 엽니다.
- 가장 최근 실행의 오류 설명에서
ConnectorHTTPError: HTTP 404를 확인합니다. - 코드 탭으로 돌아가
forecastx오타가 남아 있는지 확인합니다. - 필요하면 실행 식별자와 오류 내용을 복사해 장애 기록에 남깁니다.

REST 커넥터는 대상 서버가 4xx나 5xx를 돌려주면 그 상태 코드와 응답 본문을 그대로 실어 오류를 냅니다. 상태 코드가 원인을 좁혀 줍니다.
| 상태 | 흔한 원인 |
|---|---|
404 | 경로 오타, Base URL에 경로가 중복해 들어감 |
401 · 403 | 자격 증명 누락이나 만료 |
429 | 호출 한도 초과. 호출 간격이나 주기를 조정 |
| 타임아웃 | 대상 지연 또는 매니저의 아웃바운드 경로 차단 |
앞 노드가 실패하면 뒤 노드는 실행되지 않으므로 mart_weather_daily에는 직전 성공 실행의 값이 그대로 남아 있습니다. 마트에 값이 보인다고 방금 실행이 성공한 것은 아닙니다. 실행 이력을 함께 확인해야 합니다.
원래대로 복구하고 전체 재실행하기
- 경로를
"/v1/forecast"로 되돌립니다. - 코드를 저장하고 파이프라인에 저장되지 않은 변경 사항이 있다면 저장을 누릅니다.
- 지금 실행을 눌러 파이프라인 전체를 다시 실행합니다.
- 상단 실행 이력과 노드의 히스토리에서 새 실행이 성공했는지 확인합니다.
mart_weather_daily를 열어 날짜별 3행이 다시 조회되는지 확인합니다.

현재 화면에는 실패한 노드부터 이어서 실행하는 기능이 없습니다. 수정 후 지금 실행을 누르면 파이프라인 전체가 실행됩니다. 이 파이프라인은 수집이 전체 교체라 전체 재실행이 안전하지만, 운영 파이프라인을 재실행하기 전에는 출력 쓰기 방식을 먼저 확인하세요.
마트를 대시보드 차트로 올리기
여기까지가 엔지니어가 만드는 부분입니다. 결과가 실제로 쓸 만한지는 차트로 한 번 그려 보면 바로 드러납니다.
- 왼쪽 사이드바에서 대시보드를 선택하고 생성을 누릅니다.
- 저장할 컬렉션으로 실습 컬렉션을 선택하고 계속을 누릅니다.

- 빈 대시보드가 열리면 위쪽의 대시보드 설정을 누릅니다.
- 제목은
일별 기상 요약, 별칭은daily_weather_summary, 설명은서울 최근 3일의 일별 평균 기온을 보여 줍니다.로 입력하고 저장합니다.

- 빈 캔버스의 빠른 추가에서 라인 차트를 선택합니다.
- 오른쪽 구성 패널에서 분석 소스로
mart_weather_daily를 선택합니다. - 데이터 모드는 간단 모드를 그대로 사용합니다.
- X축에
observed_date, Y축에avg_temp_c를 선택하고 집계에서 평균을 선택합니다.

- 오른쪽 위의 저장을 누릅니다.

날짜 3개를 잇는 선이 그려집니다. 마트는 이미 날짜당 한 행이므로 어떤 집계를 골라도 값은 같습니다. 위젯의 집계는 여러 행이 한 X값에 모일 때 어떻게 합칠지를 정하는 설정입니다.
분석가가 이해할 수 있게 정리하기
데이터셋 이름만으로는 분석가가 기준 시점이나 단위를 알기 어렵습니다. mart_weather_daily 상세 화면에서 다음을 채웁니다.
- 별칭 — 목록에서 알아볼 이름. 예:
일별 기상 요약 - 설명 — 단위, 범위, 갱신 시각. 예:
서울 좌표 기준 일별 기온·습도 요약 · °C / % · 최근 3일 · 매일 03:00 KST 갱신 - 태그 — 검색에 사용할 업무 용어. 예:
weather,daily,mart

src_weather_hourly에도 원본이라는 점과 API 출처를 남겨 두면, 나중에 값이 이상할 때 어디까지 거슬러 올라가야 하는지 분석가가 스스로 판단할 수 있습니다.
컬렉션 권한으로 전달하기
- 실습 컬렉션을 엽니다.
- 컬렉션 위쪽의 공유를 눌러 공유 및 권한 창을 엽니다.
- 이름 또는 이메일 검색에서 분석가 사용자 또는 그룹을 찾습니다.
- 조회만 필요하다면 역할을 뷰어로 선택하고 초대를 누릅니다.

- 분석가 계정에서 컬렉션, 마트, 대시보드가 보이는지 확인합니다.
편집자는 내용을 수정해야 하는 협업자에게, 소유자는 권한을 포함해 컬렉션을 관리해야 하는 담당자에게만 부여하세요. 결과를 조회하고 대시보드에서 사용하는 분석가에게는 뷰어가 일반적인 시작점입니다.
커넥터에는 소유·편집과 별개로 사용 권한이 있습니다. 분석가가 마트만 본다면 커넥터 사용 권한은 필요하지 않습니다. 다른 엔지니어가 이 커넥터로 새 파이프라인을 만들어야 할 때만 부여하세요.
자가 점검
- 연습용 파이프라인을 사용하고 자동 일정을 껐습니다.
- 고의 실패 후 노드와 상단 실행 이력에 실패 상태가 표시됐습니다.
- 히스토리에서 상태 코드
404와 잘못된 경로를 확인했습니다. - 원본 코드를 복구하고 전체 파이프라인을 다시 실행해 성공을 확인했습니다.
- 마트를 소스로 하는 라인 차트가 대시보드에 저장됐습니다.
- 결과 데이터셋의 별칭, 설명, 태그를 실제 운영 정보로 정리했습니다.
- 분석가 사용자 또는 그룹에 필요한 최소 컬렉션 역할을 부여했습니다.
코스 완료 및 다음 학습
데이터 엔지니어 코스를 완료했습니다. 실습 컬렉션에는 커넥터 1개, 데이터셋 3개, 코드 2개, 파이프라인 1개, 대시보드 1개가 남아 있고 매일 스스로 갱신됩니다.
외부 API를 연결해 원본을 적재하고, 정리와 집계를 거쳐 마트를 만들고, 자동 실행과 실패 진단을 붙이고, 결과를 남에게 넘기는 흐름을 한 번 통과했습니다. 실제 업무에서 소재만 바뀔 뿐 순서는 같습니다.
다음 과정에서 같은 흐름을 더 깊이 연습해 보세요.
- 리테일 재고와 가격 경쟁력 분석하기 — 엔지니어와 분석가의 작업이 하나의 시나리오에서 이어지는 과정을 실습합니다.
- Python으로 시나리오 가져오기 —
dhub2-examples시나리오를 자신의 환경으로 가져오는 방법을 익힙니다. - 분석가 코스 — 방금 만든 차트에서 출발해 필터, SQL 모드, 공유까지 넓혀 봅니다.
모든 레슨의 완료 표시를 확인한 뒤 홈의 이어서 학습하기에서 다음 과정을 선택하세요.
레슨을 마치며
다음 질문에 답하며 이번 레슨의 목표를 달성했는지 확인합니다.
- 안내를 보지 않고 ‘실패 원인을 확인하고 대시보드로 전달하기’ 작업을 다시 수행할 수 있나요?
- 결과가 예상과 다를 때 확인할 지점을 하나 이상 설명할 수 있나요?