본문으로 건너뛰기
데이터 엔지니어 코스

첫 파이프라인 — 노드 세 개와 한 번의 실행

워크플로우 편집기에서 source → 변환 → sink 노드 세 개를 잇고 실행해, 직전 레슨에서 떨어뜨린 원본 데이터셋을 분석가에게 노출할 수 있는 마트 데이터셋으로 한 사이클 만들어 봅니다.

8분

엔지니어가 포털에서 처음 끝까지 가야 할 가장 작은 단위는 source → 변환 → sink, 그리고 한 번의 실행입니다. 이번 레슨은 직전 레슨에서 떨어뜨린 원본 데이터셋을 분석가에게 노출할 마트 데이터셋으로 옮기는 한 사이클을 끝까지 갑니다.

사전 준비

직전 레슨에서 등록한 커넥터의 결과 데이터셋(예: src_postgres_orders) 하나를 source로 씁니다. 커넥터 레슨을 건너뛰었다면 CSV 업로드로 만든 데이터셋이나 분석가 코스 03 레슨의 데이터셋도 됩니다. 깨끗한 출력이 아니어도 됩니다 — 이번 레슨은 흐름을 익히는 게 목적.

워크플로우 편집기 열기

  1. 좌측 사이드바에서 파이프라인을 누르고 컬렉션 안에서 파이프라인 만들기를 고릅니다.
  2. 이름을 정합니다 (예: mart_orders_daily). 결과 데이터셋의 의미를 그대로 적어 두면 6 레슨 뒤 디버깅 때 본인을 살립니다.
  3. 워크플로우 편집기가 빈 캔버스로 열립니다.

캔버스 좌측에 노드 라이브러리가, 중앙이 워크 영역, 우측이 노드별 구성 패널입니다.

세 노드 올리기

  1. 노드 라이브러리 → Source → 데이터셋 읽기 노드를 캔버스로 드래그. 우측 구성 패널에서 컬렉션데이터셋을 직전 레슨에서 만든 원본 데이터셋으로 고릅니다.
  2. 노드 라이브러리 → Transform → 컬럼 선택/이름 바꾸기 노드를 드래그. 분석가에게 노출할 컬럼만 남기고, 운영 시스템 컬럼명(ord_dt_str 같은)이 있다면 alias로 읽기 좋은 이름(order_date)으로 바꿉니다.
  3. 노드 라이브러리 → Sink → 데이터셋 쓰기 노드를 드래그. Sink 노드 구성 패널에서 대상 데이터셋 이름을 새로 입력합니다 (예: mart_orders_daily). 같은 컬렉션 또는 분석가용 컬렉션 안에 자동 생성됩니다.

이 시점엔 세 노드가 캔버스에 떠 있지만 연결은 안 된 상태입니다.

세 노드 잇기

Source 노드의 우측 포트에서 Transform 노드의 좌측 포트로, 다시 Transform 노드의 우측 포트에서 Sink 노드의 좌측 포트로 끌면 화살표 두 개가 만들어집니다. 포트가 호환되지 않으면 연결이 거부됩니다. 데이터 타입 단서가 포트 색으로 표시되니 확인하세요.

연결이 끝나면 캔버스 우상단의 검증이 녹색이어야 합니다. 빨간색이면 세 노드 중 하나의 구성 패널을 다시 펴서 빠진 항목(주로 데이터셋 미선택 또는 컬럼 매핑 누락)을 채웁니다.

한 번 실행하기

캔버스 우상단의 Run 을 누르면 파이프라인이 한 번 돌고, 하단에 실행 로그가 라이브로 흘러갑니다. 끝나면 세 가지를 확인.

  • 새 데이터셋(mart_orders_daily)이 대상 컬렉션 트리에 떴는가
  • 행 수가 입력 데이터셋과 같은가 (Transform이 컬럼 선택만 했다면 동일해야 함)
  • 컬럼 이름이 의도대로 바뀌어 있는가

다시 실행하면 무엇이 바뀌나

Sink 노드 구성 패널에는 쓰기 모드 옵션이 있습니다.

  • overwrite — 매번 대상 데이터셋을 통째로 덮어씁니다. 마트 테이블의 흔한 기본값.
  • append — 기존 행 뒤에 새 행을 붙입니다. 이벤트성 데이터에 자연스럽습니다.
  • upsert — 키 컬럼 기준으로 중복은 갱신, 없으면 추가. 운영 master 테이블 미러링에 적합.

이번 레슨은 기본 overwrite 그대로 두고 두 번 더 실행해 보세요. 두 번째 실행에서 결과 행 수가 같으면 overwrite가 의도대로 도는 것. 모드별 운영 함의는 05 레슨(스케줄링·실행 모드)에서.

자가 점검

  • 새 마트 데이터셋이 컬렉션 트리에 뜨는가
  • 분석가 코스 시점으로 잠깐 옮겨 봐, 이 마트 데이터셋이 분석가의 컬렉션에서도 똑같이 보이는가 — 엔지니어의 출력 = 분석가의 입력이 한 포털 안에서 닫히는 걸 직접 확인
  • 같은 파이프라인을 두 번 실행해도 결과 데이터셋 행 수가 일정한가 (overwrite 기본)
  • 노드 세 개에 일관된 이름을 붙였는가 (다음 레슨부터 디버깅 때 자신을 살림)

다음 레슨

표준 노드(컬럼 선택·필터·집계·조인)가 못 끝내는 변환을 만났을 때 코드 노드로 짧은 Python·SQL을 어떻게 끼우는지.