데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      제조업 데이터를 활용한 BI 대시보드 통합 및 자동화 후기

      Almond 25.07.07
      1,761 8 1
      DEVOTEE 요약
      본 블로그는 Apache Airflow와 PySpark를 활용해 Spotfire 대시보드를 자동화한 경험을 다루고 있습니다. 모든 팀의 이질적 데이터와 현장 수작업으로 얻은 기준 정보를 통합해, 제조업 데이터 대시보드를 실시간으로 시각화했으며, Airflow로 워크플로우를 스케줄링하고 PySpark로 대용량 데이터를 처리하여 효율성과 신뢰성을 크게 향상시켰습니다. 이 작업은 데이터 표준화, 자동화, 대용량 데이터 처리의 중요성을 보여주며, 제조업 데이터 통합 및 BI 자동화에 큰 시사점을 제공합니다.

      안녕하세요. SK Hynix 김웅기 TL 입니다.


      상반기 회사 데이터 엔지니어링 업무중에서 Apache Airflow와 PySpark를 활용해 Spotfire 대시보드를 자동화 구축한 경험을 공유드립니다.

      이 글은 워크플로우 자동화와 대용량 데이터 처리, 그리고 BI 대시보드 실시간화에 관심 있는 분들을 위한 후기입니다.

      특히, 제품 생산에 관여하는 모든 팀을 포함한 대시보드를 만들어야 하는 것이 포인트 였습니다.

      그래서 핵심은 각 팀별로 상이한 기준 정보가 저장된 Google 워크시트와, 수작업으로 조사해야만 확보되는 기준 정보를

      제조업 데이터 테이블과 결합해 모든 팀의 데이터를 하나의 대시보드로 통합하는 과정이었습니다.


      1. 프로젝트 개요

      대용량 로그 데이터를 정기적으로 수집·가공·분석해야 했고, 결과를 Spotfire 대시보드로 시각화해 실시간 의사결정에 활용하는 것이 목표였습니다.

      전체 파이프라인은 Airflow로 스케줄링, PySpark로 데이터 처리, Spotfire로 시각화 및 리포팅 구조로 설계했습니다.


      2. 파이프라인 설계 및 구현

      2-1. Airflow로 데이터 파이프라인 자동화

      • Airflow의 DAG(Directed Acyclic Graph) 구조를 활용해 데이터 수집, 전처리, 적재, 대시보드 갱신까지 전체 플로우를 자동화했습니다.

      • 각 태스크는 SparkSubmitOperator를 통해 PySpark 스크립트를 실행 하도록 구성했습니다

      다음은 Python 및 PySpark 코드를 제외한 DAG 구조의 예시 코드 입니다.

      image.png

      SparkSubmitOperator를 쓰면 Airflow에서 Spark 클러스터(로컬/원격)로 PySpark 작업을 손쉽게 던질 수 있습니다.

      최종적으로, Parquet파일로 저장하여 로컬 드라이버나 회사 클라우드 서버에 저장.


      2-2. PySpark로 대용량 데이터 처리

      PySpark는 분산 처리 기반이라 수십 GB 데이터를 빠르게 처리할 수 있습니다.

      ETL(추출-변환-적재) 작업을 PySpark로 구현해, 데이터 정합성 검증·집계·필터링 등 복잡한 연산을 효율적으로 수행했습니다.

      Spark 작업 결과는 Parquet 등 컬럼 기반 포맷으로 저장해 Spotfire에서 빠르게 읽을 수 있도록 했습니다.


      2-3. Spotfire와 데이터 연동 및 대시보드 자동 갱신

      Spotfire에서는 회사의 클라우드나 로컬드라이버와 커넥터를 통해 Spark 테이블 또는 결과 파일(예: Parquet, CSV 등)에 직접 연결할 수 있었습니다.

      대시보드 데이터 소스를 “Import data table” 또는 “External data table”로 설정해, 필요시마다 최신 데이터를 불러오도록 구성했습니다.

      ( 통상적으로 1일 1회 리프래시 후 불러오도록 설정 )

      그리고 Spotfire의 Schedule Updates 기능을 활용해, 지정된 주기마다 데이터 소스를 자동으로 재조회(리프레시)하도록 설정했습니다.


      3. 운영 및 개선 포인트

      기존에는 Airfow를 사용하지 않고 Spotfire의 데이터 테이블 불러오기 기능을 사용했으며, Python을 이용한 비교적 낮은 용량의 데이터를 전처리 해왔습니다. 그에 비하여

      Airflow와 Spark의 로그 및 태스크 상태를 한 눈에 모니터링할 수 있어 장애 대응이 빨라졌습니다.

      PySpark의 분산 처리 덕분에 데이터 처리 시간이 획기적으로 단축되었습니다.


      4. 사내 데이터 테이블에 존재하지 않는~ 전체 팀마다 차이가 나는 기준 정보 수집

      • 메뉴얼 조사 데이터는 정기적으로 갱신 필요성이 있으므로, 담당자와 협업 체계를 구축하는 것이 중요합니다.

      • 제조업 현장에서는 생산, 품질, 설비, 물류 등 각 팀이 각기 다른 기준 정보(코드, 명칭, 분류 등)를 Goodocs 워크시트에 관리하고 있었습니다.

      • 일부 기준 정보는 시스템에 저장되지 않아, 현장 담당자 인터뷰나 메뉴얼 조사 등 수작업으로만 확보할 수밖에 없었습니다.

      • 이질적인 기준 정보와 제조 데이터(생산 실적, 불량, 설비 가동 등)를 통합해, Spotfire 대시보드에서 한눈에 볼 수 있도록 만드는 것이 목표였습니다.


      5. 데이터 통합 및 전처리 과정

      5-1. Goodocs Worksheet 데이터 수집 및 정제

      • 각 팀별로 Goodocs에 저장된 기준 정보를 Google Sheets API 로 연동했습니다.

      • 워크시트마다 컬럼명, 데이터 포맷, 기준 코드 체계가 달라 일관성 확보가 중요했습니다.

      • PySpark에서 각 워크시트 파일을 읽어 공통 포맷(예: 표준 코드, 명칭, 분류 등)으로 정규화하는 스크립트를 작성했습니다.

      • 예시:

python
# PySpark로 워크시트 데이터 정규화

      • df = spark.read.csv('goodocs_teamA.csv', header=True)

      • df = df.withColumnRenamed('팀A코드', '표준코드').withColumnRenamed('팀A명칭', '표준명칭')


      5-2. 메뉴얼 조사 기준 정보 병합

      • 시스템에 없는 기준 정보는 담당자와 협업해 수작업으로 조사·정리했습니다.

      • 조사 결과를 별도 CSV로 정리해, PySpark에서 추가적으로 불러와 기준 정보 테이블에 병합했습니다.

      • 모든 기준 정보는 표준화된 키(예: 표준코드)로 통합 관리하도록 설계했습니다.


      5-3. 제조 데이터와 기준 정보 결합

      • 제조 데이터 테이블(생산, 품질, 설비 등)과 정제된 기준 정보 테이블을 PySpark에서 조인(Join)하여 통합 데이터셋을 생성했습니다.

      • 이 과정에서 누락값 처리, 코드 매핑 오류 검증, 중복 제거 등 데이터 품질 관리에 신경을 썼습니다.

      • 통합 데이터셋은 Parquet 등 컬럼 기반 포맷으로 저장해, Spotfire에서 빠르게 조회할 수 있도록 했습니다.


      6. 실전 노하우 및 개선점

      6-1 팀간 차이나는 기준 정보 수집

      • 팀별 기준 정보가 상이할수록 표준화 작업에 많은 시간과 노력이 필요합니다. 컬럼명, 코드 체계, 데이터 타입을 미리 정의해두면 효율적입니다.

      • 사전 검증 로직을 두어 자동으로 감지·알림 처리했습니다.


      6-2 Airflow와 PySpark 관련

      Airflow와 Spark 연동 시, Spark 커넥션 설정(예: spark_conn)과 관련 패키지(airflow-provider-apache-spark 등) 설치를 반드시 확인해야 합니다.

      PySpark 스크립트는 로컬에서 충분히 테스트한 뒤 ( 행간 점검이 가능한 주피터 노트북을 추천드립니다!) Airflow에 올리면 디버깅이 수월합니다.

      Spotfire의 Schedule Updates와 Automation Services를 조합하면, 리포트 자동 발송(예: PDF 메일링)까지 자동화할 수 있습니다.

      데이터 파일 포맷은 Parquet 등 컬럼 기반을 추천하며, Spotfire와의 연동 호환성도 고려해야 합니다.


      7. 마무리

      Goodocs 워크시트와 메뉴얼 기준 정보, 제조 데이터의 통합은 쉽지 않았지만,

      Airflow와 PySpark의 자동화·대용량 처리 능력 덕분에 효율적으로 대시보드를 구축할 수 있었습니다.

      Spotfire 대시보드에서 모든 팀의 데이터를 한눈에 비교·분석할 수 있어, 현장 의사결정 속도와 데이터 신뢰성이 크게 향상되었습니다.

      제조업 데이터 통합 및 BI 자동화에 도전하는 분들께 실무 경험을 바탕으로 강력히 추천합니다.


      3분기에는 최근 도전 중인 조직 내 웹 포털 구축 후기를 작성할 예정입니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Almond 님의 최신 블로그

      더보기
      동영상 기고하기