본문 바로가기

Data Analysis/Data Analysis

Project 5. 재고 분석을 통한 물류기획 관리 (2)

이 글은 24.02.27에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

 

Project 5. 재고 분석을 통한 물류기획 관리

 

이번 시간에는 inventory table 데이터를 Power BI로 시각화 해 보고 대시보드를 작성할 것이다.

 

Power BI

데이터를 가져오자.
상단 데이터 가져오기 - MySQL - 서버 이름 적어주고, 스키마 이름 입력하고 - 적당히 쿼리 짜서 데이터 로드하기.
지난 프로젝트인 HR데이터 분석 때 했던 방식과 동일하다.

그리고 이제부터...

대시보드 작성에 쓰일 주요 지표 정의하기

  1. SKU count : 물품 종류
  2. Inventory count : 재고 보유량
  3. Count per SKU : 물품 종류 별 평균 갯수.
  4. Inventory cost : 총 재고 가치
  5. Inventory cost per count : 재고물품 하나의 평균 가치
  6. MOC(Month Of Coverage) : 보유 재고로 몇 달간 판매할 수 있는가. 재고 보유량/월 평균 판매량

 

정의한 지표 계산하기

DAX 구문으로 계산할 것이다.
상단 새 측정값 - DAX 구문 입력.

1. SKU count

SKU count = DISTINCTCOUNT(inventory[SKU_number])

2. Inventory count

Inventory count = SUM(inventory[ItemCount])

 

3. Count per SKU

Count per SKU = DIVIDE([2. Inventory count], [1. SKU count])

 

4. Inventory cost

여기서는 DAX 함수 중 SUMX라는 함수를 이용해 계산 할 것이다.

inventory cost = SUMX(inventory, inventory[ItemCount]*inventory[PriceReg])

 

5. Inventory cost per count

inventory cost per count = DIVIDE([inventory cost], [Inventory count])

 

6. MOC

Month of coverage = DIVIDE([Inventory count], DIVIDE(SUM(inventory[SoldCount]), 6))

 

시각화

1) 우선 카드로 SKU count, Inventory cost, Count per SKU, Inventory cost per SKU 표시

2) 도넛차트도 추가해주자. 자잘한 사항들은 알아서 조정해보도록 하자.

3) 꺾은선 및 세로막대형 차트. 역시 세부사항들은 사용자 마음이니 알아서 조정해보자.

4) (누적)영역형 차트. Inventory table에 Aging 열을 추가해준 후, 해당 열로 시각화 할 것이다.

화면 좌측 테이블 뷰 - 새 열

Aging year = 2024-[ReleaseYear]
를 입력해주면 Aging year 열이 생길 것.

그 후 누적 영역형 차트에 아래 사진과 같이 필드를 올리고, 해당 차트에만 ReleaseYear 1950 이상이라는 필터를 걸어주면 ??

해당 차트를 복사해서 하나는 일반 영역형 차트로 바꿔주고, 두 차트 모두 범례에 Inventory type을 넣어주자.

SWITCH와 SELECTEDVALUE

그런데, 위의 영역형 차트에서 SKU count 말고 다른 5개의 지표들도 보고 싶다고 하면, 어떻게 해야 할까? 그래프를 5개 더 만들어야 할까?
그보단 필터를 걸어주는 것이 더 효율적이다.

슬라이서 등의 필터를 걸어줘도 좋지만, DAX 구문으로도 같은 효과를 내게 할 수 있다.
그것이 SWITCH 구문이다.
SQL의 CASE WHEN 구문과 비슷한 역할을 한다고 이해하면 된다.

이 때, expression 자리에 요긴하게 사용할 수 있는 DAX구문이 있는데, 그것이 SELECTEDVALUE 구문이다.

이제 사용해서 원하는 시각화 차트를 그려보자.

우선, 새로운 테이블(상단의 홈 탭 - 데이터 가져오기. 이름은 D_indicator로.)를 만들고 아래와 같이 indicator, index라는 열을 만들어준 후 switch와 selectedvalue 구문을 써서 새 측정값을 만들어준다.

이제 슬라이서 하나 생성. 필드에는 indicator를 올리자.

그리고 영역 차트의 Y축 값엔 SKU count 대신 위에서 만든 측정값인 Switch indicator를 올려주자. 그 후 슬라이서에서 영역 차트에서 보고 싶은 항목을 선택하면?


잘 작동한다!

 

SKU grade 테이블 추가 및 inventory 테이블과 join

지난 시간에 만든 SKU grade 테이블도 활용해서 시각화에 추가해보자.
mysql에 연결해서 sku grade 테이블을 가져온다.

이제 inventory 테이블과 sku grade 테이블을 조인할건데, 조인할 마땅한 key가 없으므로 두 테이블에 각각 key 역할을 할 동일한 column을 하나 만들어 줄 것이다.
열 추가 탭의 사용자 지정 열 메뉴를 활용한다.

 

이렇게 SKU_grade 테이블에 join key라는 열을 만들어 주었고, inventory 테이블에도 같은 열을 만들어 준다.

그러고 나서 좌측의 모델보기 탭에 가면, 연결된 것을 볼 수 있다.