디지털 데이터 분석을 하는데, 제대로 된 태깅이 되지 않은 상태여서 제대로 된 퍼널 분석을 하기 쉽지 않아서 거의 2주를 고민해왔다. 요즘 많이 느끼는데 실력은 모자라는데도 불구하고 내가 열심히 일을 만들어서 한다는 생각이 든다. 정말 최선을 다해서 노력하고 있는데, 아무래도 데이터 제한을 넘어서는 데이터 핸들링 역량이 필요하다는 생각이 든다. 예전에는 그래도 꽤 잘한다고 생각했는데 요즘처럼 힘들었던 적은 없었다. 그래도 오늘 저녁에 퇴근해서 이런저런 생각을 하면서 향후 데이터 분석하는 방향을 찾을 수 있을 것 같다.

이게 어느 정도 되어야 다음 데이터 분석도 시작할 수 있는데, 다음에는 좀더 제대로 할 수 있을 것 같다. 오늘 데이터 분석 정리한 것 찬찬히 보면 될 것 같다. 내일 최선을 다해서 힘내봐야지.

반응형

 고객은 대출 상품 시작부터 대출 신청 종료까지 완료해야 합니다. 각 단계별 중단 고객들을 찾는 것이 이 분석의 목적입니다.

문제는 1 ~ 25단계까지 개별 단계 중 일부는 단계별로 나오지 않고 여러번 반복된다는 점을 찾아냈습니다.

 

1. 특정 단계의 경우, 공통 모듈이므로 여러번 나오게 됩니다.

 

2. 해당 상품 코드가 제대로 잡히지 않으므로 공통 모듈이 나오는 PAGE_ID가 해당 상품 단계에서 지나친 것인지 아니면, 다른 상품 단계에서 사용된 것인지 알 수가 없습니다. 예를 들어서 KYC/스크랩핑 모듈의 경우 여러 차례 나오게 되므로 어떤 고객은 1단계에서, 

문제는 고객이 1단계를 지나서 바로 14단계까지 나온다는 문제점이 있습니다. 개별 고객의 가장 큰 단계를 가져다 중단 고객의 중단 단계로 정할 경우, 위와 같은 문제점이 발생한다는 것을 발견했습니다.

 

3. 이번에 분석을 하면서, 중간 단계에서 데이터를 보정하는 방법을 분석할 때 사용했습니다.

 

4. 데이터 보정의 경우, 제대로 분석 이뤄지지 않는다는 제약이 있다는 생각을 했습니다.

 

 그래서 제 생각은 이렇게 분석을 하는 것보다는 실제 고객의 PAGE_ID 데이터를 필터링하는 것을 제외하고자 합니다. 클린징된 PAGE_ID 사용하는 것을 과감히 포기하고자 합니다. 이유는 우리가 맞다고 생각했던 PAGE_ID가 실제로 고객이 지나치는 것이 아니라는 것을 발견했기 때문입니다. 이런 이유로 퍼널 분석이 아닌, 단계별 PAGE_VIEW를 볼때에는 PAGE_ID를 사용하기 때문입니다. 우리가 이번에 적용할 방법은 아래와 같습니다.

 

1. 고객번호 - 단계명 가운데 최초의 것만 가져옵니다.

 이렇게 하면 되겠죠? 

 CREATE TABLE PHASE1 AS

  SELECT *

  FROM (SELECT CUST_NO, STEP, ROW_NUMBER() OVER (PARTITION BY CUST_NO, STEP ORDER BY CUST_NO, STEP, LOG_DTM) AS SEQ

 FROM DTLOG A) A1

WHERE SEQ = 1;

 

2. 고객별로 단계에 해당 하는 경우의 수를 다 계산해 봅니다. 중단 단계별 세부 STEP을 모두 확인이 가능합니다.

 CREATE TABLE PHASE2 AS

 SELECT CUST_NO, LIST_AGG(STEP, ', ') WITHIN GROUP (ORDER BY STEP) AS STEP_AGG, MAX(STEP) AS FNL_STEP

 FROM PHASE1

 GROUP BY CUST_NO;

 

 SELECT FNL_STEP, STEP_AGG, COUNT(*) AS CN

 FROM PHASE2

 GROUP BY FNL_STEP, STEP_AGG

 ORDER BY 1, 2;

 

 이렇게 해서 각 최종 단계별 실제 모습을 확인할 수 있습니다.

 

3. 위처럼 각 중단 단계별 실제 현황을 파악하고 나서, 최종 단계인 26단계까지 도달한 고객이 모든 단계를 빠지지 않고 간다면 사용 가능하다고 판단합니다. 1에서 26단계까지 중간에 중단한 고객의 경우에는, 이전 단계를 모두 거쳐야만 정상적인 절차로 판단합니다. 따라서 1, 2, 3, 4, 5, 12단계를 거치는 고객의 경우 5단계에서 중단한 것으로 간주하고, 12단계는 해당 상품신청 단계가 아닌 다른 상품신청 단계에서 방문한 페이지로 가주하고 제외합니다.(STEP_CHK = 0)

 

CREATE TABLE PHASE3 AS

SELECT A1.*

FROM (SELECT CUST_NO, STEP, CASE WHEN LEAD(STEP) OVER (PARTITION BY CUST_NO, STEP ORDER BY CUST_NO, STEP) = STEP THEN 1 ELSE 0 END AS STEP_CHK

 FROM PHASE1 ) A1

WHERE STEP_CHK = 1;

반응형

'Oracle' 카테고리의 다른 글

SQL BOOSTER 책을 보고 있다.  (0) 2023.05.20
Oracle JSON 파싱  (0) 2023.05.04
Oracle null value fill  (0) 2023.03.29

 예전처럼 공부해서 차분히 시작한다고 해서 할 수 있을지는 잘 모르겠다. 조금씩 시간 내서 봐야 하는데, 지금 수준으로는 업무 받은 것 처리해서 쳐내기도 쉽지 않구나. 조금씩 해야 할 일을 늘리고 효율적으로 할 수 있는 방법을 찾아야겠지. 

반응형

 이번주 월요일에 팀장님 검토 받고 해당 부서 분석 자료 공유해서 의사결정 되었고 한숨 돌렸다. 그날 저녁에 수요일까지 반영하지 않으면 10월 둘째주까지 전산 반영이 안된다고 하네. 바로 그날부터 야근해서 적용하려고 했는데, 전산에서는 계속해서 뭔가 문제가 있다고 해서 수요일 5시 55분까지 테스트 하고 간신히 반영했다. 목요일에 아침에 장애 생겨서 담당자와 아웅다웅 하다가 간신히 원인 파악해서 반영하고 디지털 데이터 분석한다고 야근했다. 오늘은 회사 나오자마자 다시 데이터 분석한다고 하루종일 자료 뒤지다가 겨우 뭔가가 나오려고 하니까, 다른 회의 가보라고 해서 끝나고 오니까 오후5시가 되어버렸다. 마무리 하고 다음주에 뭐할지 정리하고 나니까 이번에는 집에 갈 시간이 되어 버렸다. 

 

 지난주에는 데이터 분석을 무리해서 하다가 어깨가 나가고 고생했지만 이번주에는 한숨 돌리고 사람들과 논의하고 이런저런 정리하는데 스트레스를 많이 받았다. 어제도 전화 통화하고 스트레스 많이 받기는 했지만, 어찌 되었든 어느 정도 정리는 되었고 최종적으로 어느 정도 데이터는 정리가 되었고 이제 정리만 좀더 깔끔하게 하면 될 것 같구나.

반응형

 저번주에 엄청 고생해서 마무리했던 분석 자료 팀장님 검토 끝나고 오늘 번갯불에 콩구워먹듯이 바로 소관부서에 이메일 보내고 오후에 회의해서 확정하고 추가 문의사항 접수했다. 월말까지 반영해야 하는데, 목요일부터 10월 5일까지 Freezing Time이 시작되어서 내일까지 테스트를 마무리 해야해서 폭풍 야근을 했다. 이번달까지 마무리 하기로 주간회의에 보고했기 때문에 어찌 되었거나 마무리를 져야 했는데, 아 이렇게 적정한 시기에 반영할 수 밖에 없다니 말이다. 원래는 이번주까지 마무리 짓고 천천히 반영할 수 있도록 준비하려고 했지만 세상일이 다 내마음처럼 되는 것이 아니니까 말이다.

 

 그래서 오늘 야근해서 코드 다 정리했는데, 우리가 사용하는 방식이 엑셀에 코드를 넣어야 하는데 코드가 워낙에 길다보니 입력 자체가 안되는 상황이어서 결국 코드를 편집해서 넣느라 시간이 더 걸렸다. 뭐 다른 방식이 없어서 오늘까지 무리해서라도 빨리 반영하고 내일 테스트 마무리 짓고 수요일에 반영하면 다음달 월초까지 마음 편하게 일을 할 수 있다는 생각을 해본다. 다른 분석 업무도 많이 기다리고 있어서 좀 빨리 끝내고 다른 분석 업무를 시작할 수도 있을 것 같다. 이 팀에 처음 왔을 때에는 모델링이나 레퍼런스 만드는 업무 외에는 하지 않았는데 팀장님 바뀌고 새로운 부서에서 의뢰를 많이 받고 새로운 분석 업무도 가져올 수 있었다. 예전 팀장님의 경우 도메인 지식도 부족했고 본인이 알고 싶어하지 않아서 이런 업무는 하지 않았는데, 이제는 자유롭게 분석 업무를 할 수 있다.

 

 이제 디지털 데이터 분석만 할 수 있게 된다면 씨티에서 했던 분석 업무 범위를 완벽하게 가져올 수 있다. 예전에는 가장 돈이 많이 되는 대출분야에 분석 역량을 집중했는데 기존의 수신 일변도의 분석에서 차츰 대출쪽으로 업무 범위를 넓힐 수 있어서 즐겁다. 회사 생활에서 자리를 잡기 위해서 정말 열심히 일하고 새로운 업무에 도전했는데, 이제 어느 정도 자리를 잡기 시작한 것으로 보인다. 앞으로도 해야 할일이 많기는 한데, 지금은 좀 쉬엄쉬엄 하면서 일을 해야 할 것 같다. 요즘에는 정말 쉬지 않고 코딩하고 자료 만들고 그렇게 일했는데, 조금더 쉬어야 하는데 마음처럼 되지를 않네.

 

 그래도 내가 좋아하는 것이 실제 업무와 연결되고 뭔가 개선되는 것이 보이니까 재미있다. 

 

 오늘까지는 야근하고 내일부터는 좀 쉬엄쉬엄 해야지. 내일부터는 검도 도장도 나가고 열심히 운동도 해야지.

반응형

 어느 정도였냐면 하도 코딩을 많이 해서 왼쪽 어깨 근육에 무리가 갈 정도였다. 사실 저번주부터 무리를 하기는 했는데, 원래 계획대로라면 저번주에 어느 정도 마무리가 되고 이번주 초반에 모델 개발 마무리가 되어야 했다. 두둥 문제는 주초에 데이터에서 문제가 발견되었다는 점이었다. 두개의 이기종 DB에서 각각 모델을 개발하고 운영용 코딩을 해야 했는데 막상 2개의 데이터가 달랐던 것이다. 하나는 파이썬 + 임팔라였고 다른 하나는 오라클이었다. 사실 파이썬쪽이 훨씬 더 코딩하기도 편하고 에러 찾기도 좋은데, 오라클쪽 코딩 환경이 별로여서 죽어라고 오라클쪽만 코드를 바꿔보고 에러도 찾아보고 별 지랄을 다했는데, 목요일 저녁에서야 겨우 원인을 발견했다.

 

 원인은 임팔라쪽 데이터에서 PK레벨에서 중복이 있었다는 점이다. 전회사에서 비슷한 경험을 해보기는 했는데, 그때에 전산 개발자와 대판 싸웠던 경험이 있기 때문에 에이 설마 아무리 그래도 그런 기본도 안되어있는게 말이되 생각을 했다. 다행히 전산 담당자가 순순히 인정했기 때문에 빠르게 원인 파악하고 대응 방안 적용해서 어제 야근해서 오늘 분석 자료 팀장님께 보고까지 할 수 있었다. 내가 생각하지도 못했던 원인 때문에 이렇게 며칠을 날려 먹을줄은 몰랐다. 예전 같았으면 화도 내고 할텐데, 이직하고 나서는 이런 분야에서는 해탈할 정도의 수준이 되기는 했다.

 

 이번주에는 원래 퍼널 분석을 하기로 했는데 정작 모델 만드는 것이랑 겹쳐서 이것 하다가 저것 하다가 정신없이 일을 해야만 했다. 예전에는 이렇게 미친듯이 일을 했는데, 이직하고 나서는 이렇게 일해본적이 있기는 하다. 그러고 보니까 1년 단위로 해서 작년 이맘때에도 정말 미친듯이 일하고도 팀장님에게 인정을 못받았는데, 그래도 올해에는 팀장님에게 말씀 드리면 어떻게 해서든 이해하고 조언을 주시니 다행이라고 해볼까?

반응형

'내 이야기' 카테고리의 다른 글

이번주도 무리해서 일했다.  (0) 2023.09.22
일이 끝난줄 알았는데, 그게 아니었다.  (0) 2023.09.18
나를 위한 지름  (0) 2023.09.10
좀 지친것 같다.  (0) 2023.09.08
간만에 좀 쉬는중  (2) 2023.09.03

+ Recent posts