Skip to main content
Version: v0.3.0

노원구 COVID-19 분석 — 25분 walkthrough

서울 노원구의 안심병원 위치, 동별 인구, 환자 이동 동선 데이터를 D.Hub에 올려 컬렉션 → 데이터셋 → 파이프라인 → 대시보드를 한 번에 완성하는 예제입니다. 9개의 CSV(총 12.5 KB)와 D.Hub 계정만 있으면 따라할 수 있습니다.

사전 준비
  • D.Hub 계정 (관리자에게 발급받은 사용자명·비밀번호 또는 SSO)
  • 웹 브라우저(데스크톱 권장)
  • CSV 9개를 받아 압축 해제할 폴더 (다음 단계에서 다운로드)

시나리오와 데이터

이 예제는 2020년 서울 노원구의 COVID-19 hotspot 분석 시나리오를 재구성한 것입니다. 9개의 파일은 크게 4가지 역할로 묶입니다.

분류파일행수역할
차원·필터sido_filter.csv · sigungu_filter.csv3 · 6시도·시군구 후보 목록
마스터clinics.csv20안심병원·선별진료소 (위·경도 포함)
인구residents_population.csv · floating_population.csv9 · 9동별 주민 인구, 유동 인구
인구 (조인본)region_dong.csv · region_dong_info.csv33 · 8인구 조인 결과 + 필터 변형
팩트patient.csv · hotspot_result.csv13 · 23환자 위치·감염일, 접촉 hotspot

walkthrough에서는 clinics(Step 6 지도), patient(Step 7 라인 차트), residents_population + floating_population(Step 4 조인) 세 그룹을 적극적으로 사용합니다. 나머지 6개 CSV는 데이터셋으로만 import 해두고, 본격 분석은 마지막 다음 단계에서 안내합니다.

데이터 다운로드

받기크기비고
한 번에 받기 (covid19.zip)~10 KBStep 1에서 사용
clinics.csv3.6 KB안심병원·선별진료소 (lat/long)
patient.csv0.9 KB환자 위치·감염일
hotspot_result.csv4.9 KB환자 접촉 hotspot (POINT geom)
residents_population.csv0.4 KB동별 주민 인구
floating_population.csv0.4 KB동별 유동 인구
region_dong.csv1.6 KB인구 조인본
region_dong_info.csv0.4 KB인구 조인본 필터 변형
sido_filter.csv0.05 KB시도 필터 후보
sigungu_filter.csv0.2 KB시군구 필터 후보

Step 1. 자산 받기 · D.Hub 로그인 (2분)

  1. 위 표의 한 번에 받기 (covid19.zip) 링크를 클릭해 zip을 내려받습니다.
  2. zip을 임의의 폴더에 압축 해제합니다. 9개의 CSV 파일이 평탄하게(covid19/ 하위 폴더 없이) 풀려야 합니다.
  3. 브라우저에서 D.Hub 포털 URL에 접속합니다.
  4. 사용자명·비밀번호를 입력하고 Login을 클릭합니다. SSO 환경이면 Login with SSO 버튼으로 진행합니다.
여기까지 완료하면
  • 로컬 폴더에 9개 CSV 파일이 평탄하게 풀려 있어야 합니다.
  • 브라우저는 D.Hub 홈 화면(/home)에 도착해 있어야 합니다.

Step 2. 컬렉션 노원구 COVID-19 분석 생성 (1분)

  1. 홈 화면의 Get Started 영역에서 Create Collection을 클릭합니다.
  2. 컬렉션 이름에 노원구 COVID-19 분석을 입력합니다.
  3. 설명 칸에 2020년 노원구 안심병원·환자·인구 데이터 를 입력합니다(선택).
  4. Create를 클릭합니다.
여기까지 완료하면
  • 좌측 사이드바 Collections 아래에 노원구 COVID-19 분석 컬렉션이 보입니다.
  • 페이지가 자동으로 컬렉션 상세로 이동했습니다 (URL에 컬렉션 ID 포함).

Step 3. 9개 CSV Quick Upload (3분)

  1. 컬렉션 상세 페이지에서 Quick Upload 버튼을 클릭합니다.
  2. 업로드 다이얼로그에 Step 1에서 압축 해제한 9개 CSV 파일을 모두 드래그 앤 드롭 하거나, 파일 선택 다이얼로그에서 멀티 선택합니다.
  3. 9개 항목이 모두 목록에 보이는지 확인 후 Upload를 클릭합니다.
  4. 업로드가 끝나면 데이터셋 목록에 9개의 새 항목이 자동 생성됩니다.
여기까지 완료하면
  • 컬렉션의 Items 탭에 다음 9개의 데이터셋이 보입니다: clinics, floating_population, hotspot_result, patient, region_dong, region_dong_info, residents_population, sido_filter, sigungu_filter.
  • 각 데이터셋의 행수가 위 §시나리오와 데이터 표의 값과 일치해야 합니다 (clinics 20행, patient 13행 등).
  • 행수 불일치가 있으면 CSV 인코딩(UTF-8) 또는 헤더 라인을 다시 확인하세요.

Step 4. 인구 조인 파이프라인 만들기 (7분)

residents_population(동별 주민 수)과 floating_population(동별 유동 인구 수)을 동(sido·sigungu·dong) 키로 조인해 동별 종합 인구 통계를 만듭니다.

  1. 컬렉션 상세에서 Add ItemPipelineNew Pipeline을 선택합니다.
  2. 파이프라인 이름에 인구 통계 조인을 입력하고 Create를 클릭하면 워크플로우 편집기가 열립니다.
  3. 좌측 패널에서 데이터 소스 노드를 캔버스로 두 번 드래그해 다음과 같이 구성합니다.
    • 첫 번째 소스 노드 → 데이터셋 residents_population 선택
    • 두 번째 소스 노드 → 데이터셋 floating_population 선택
  4. Transform 카테고리에서 Join 노드를 캔버스에 추가하고, 두 소스 노드의 출력 핸들을 Join 노드의 입력 핸들에 각각 연결합니다.
  5. Join 노드를 선택하고 우측 구성 패널에서 다음을 설정합니다.
    • Join key (양쪽 공통): sido, sigungu, dong
    • Join type: inner
  6. Output 카테고리에서 Save as Dataset 노드를 추가해 Join 노드 출력을 연결하고, 새 데이터셋 이름을 region_population_joined 로 지정합니다.
  7. 우상단 Save를 클릭해 파이프라인을 저장합니다.
여기까지 완료하면
  • 워크플로우 편집기 캔버스에 4개 노드(소스 2 + Join + Save as Dataset)가 연결된 그래프가 보입니다.
  • 파이프라인 목록으로 돌아가면 인구 통계 조인 항목이 보입니다.
  • 아직 실행하지는 않았습니다 — 다음 step에서 실행합니다.

Step 5. 파이프라인 실행 · Batch 결과 확인 (2분)

  1. 파이프라인 상세 페이지 상단의 Run 버튼을 클릭합니다.
  2. 우측에 새 Batch가 생성되며 상태가 runningcompleted로 전환됩니다.
  3. Batch 카드를 클릭하면 실행 트레이스(각 노드의 처리 행수, 소요 시간)를 확인할 수 있습니다.
  4. 좌측 컬렉션의 데이터셋 목록을 새로고침하면 region_population_joined 가 새로 생성되어 있습니다.
여기까지 완료하면
  • Batch 상태가 completed(녹색)이어야 합니다.
  • 새 데이터셋 region_population_joined의 행수는 9 (양쪽 공통 동 수)이며 컬럼은 sido, sigungu, dong, residents_population, float_population 5개입니다.
  • 실패(빨강) 상태라면 트레이스에서 어느 노드가 어떤 오류로 실패했는지 확인합니다 (디버깅 가이드).

Step 6. 대시보드 + 안심병원 지도 위젯 (4분)

clinics 데이터셋의 위·경도 컬럼을 지도 위젯에 매핑합니다.

  1. 좌측 사이드바에서 Dashboard를 클릭한 뒤 Create Dashboard 버튼을 누릅니다.
  2. 대시보드 이름에 노원구 COVID-19 현황을 입력하고 Create를 클릭하면 빌더가 열립니다.
  3. 좌측 Widget LibraryVisualizationsMap을 캔버스로 드래그합니다.
  4. 위젯이 선택된 상태에서 우측 구성 패널의 Data 탭을 엽니다.
    • Simple Mode를 선택합니다.
    • Dataset: clinics
    • Latitude column: latitude
    • Longitude column: longitude
    • Tooltip columns: clinic_name, clinic_type, sample_available
  5. Apply를 클릭하면 지도가 노원구 좌표 주변으로 자동 줌인됩니다.
여기까지 완료하면
  • 대시보드 캔버스 위에 노원구 영역을 보여주는 지도와 20개의 마커(병원·선별진료소)가 보입니다.
  • 마커를 클릭하면 clinic_name, clinic_type, sample_available 세 값이 툴팁으로 떠야 합니다.

Step 7. 환자 일자별 누적 추이 라인 차트 (3분)

patient 데이터셋의 infection_date를 X축, 누적 감염자 수를 Y축으로 두는 라인 차트를 추가합니다.

  1. 빌더에서 Widget LibraryVisualizationsLine Chart를 캔버스로 드래그해 지도 옆에 배치합니다.
  2. 위젯의 Data 탭을 엽니다.
    • Query Mode를 선택합니다 (Simple Mode로도 가능하나, 누적 합산이 필요해 SQL이 더 명료합니다).

    • 쿼리 영역에 다음을 입력합니다.

      SELECT
      infection_date,
      COUNT(*) AS daily_count,
      SUM(COUNT(*)) OVER (ORDER BY infection_date) AS cumulative_count
      FROM patient
      GROUP BY infection_date
      ORDER BY infection_date
    • X축: infection_date, Y축: cumulative_count.

  3. Apply → 차트가 렌더링되면 우상단 Save로 대시보드를 저장합니다.
여기까지 완료하면
  • 대시보드에 지도와 라인 차트 두 개의 위젯이 나란히 보입니다.
  • 라인 차트는 2020년 8월–10월 구간의 누적 감염자 추이를 단조 증가 곡선으로 표시합니다.
  • 대시보드 목록(/dashboard)에 노원구 COVID-19 현황 항목이 보여야 합니다.

Step 8. 마무리 · 다음 단계 (3분)

축하합니다 — D.Hub의 Collection → Dataset → Pipeline → Dashboard canonical flow를 모두 한 번씩 직접 거쳤습니다. 25분 안에 끝낸 작업을 정리하면 다음과 같습니다.

  • ✅ 컬렉션 1개 (노원구 COVID-19 분석)
  • ✅ 데이터셋 9개 (Quick Upload) + 1개 (파이프라인 산출물 region_population_joined)
  • ✅ 파이프라인 1개 (인구 통계 조인) · Batch 1회 실행
  • ✅ 대시보드 1개 + 위젯 2개 (지도 · 라인 차트)

다음 단계

더 깊이 가려면가이드
환자 동선 hotspot 시각화 (hotspot_result 의 POINT geom)지도 데이터 설정
patientclinicsregion_dong 을 온톨로지로 모델링covid19 온톨로지 튜토리얼
같은 흐름을 API/cURL로 자동화개발자 가이드 - API 튜토리얼
컬렉션을 다른 사용자/그룹에 공유공유 및 권한
파이프라인을 정기 실행하도록 스케줄스케줄링

문제 해결

증상점검
Quick Upload 시 데이터셋 행수가 표와 다름CSV 인코딩이 UTF-8인지, 헤더 라인이 첫 줄에 있는지 확인
Step 4의 Join 결과 행수가 0두 소스의 sido/sigungu/dong 문자열이 정확히 일치하는지 확인 (공백·전각·반각 주의)
Step 5의 Batch 상태가 failedBatch 트레이스에서 실패 노드의 오류 메시지를 확인 (디버깅 가이드)
Step 6의 지도가 빈 화면clinics 데이터셋의 latitude/longitude 컬럼 타입이 숫자인지 확인 (문자열이면 데이터셋 스키마를 수정)
Step 7의 라인 차트가 비어 있음Query Mode에서 데이터셋 이름이 정확한지 (예제 데이터셋명 patient) 확인