Skip to main content

기업 고객 데이터 추출, 가공, 통합 프로젝트

· 11 min read
구일모
Maintainer of Kooslab docs

고객 문제

사실 모든 회사는 얼마냐 심각한지 정도의 문제이지 대부분 내부 데이터 관리의 문제를 가지고 있습니다. 특히 고객 데이터가 잘 관리되고 있다면, 그것은 분명 내부의 누군가/내부 조직이 의지를 가지고 설계하고 관리하고 운영하는 것이 필요합니다. 마지막으론, 타 조직 구성원들이 이를 어렵지만 따라주어야 합니다. 이는 결코 쉬운 일이 아닙니다. 데이터가 관리 가능한 수준으로 쌓여있지 않다면, 당연하지만 데이터 활용도를 높이긴 어렵습니다. 필요할 때 필요한 데이터를 조회하거나 추출해야하는데, 이게 불가능하기 때문입니다. 그리고 이 문제를 방치하고 시간이 지날수록, 계속해서 데이터 문제를 해결하기 위한 난이도는 더욱 어려워지게 됩니다. 의뢰하신 기업 고객도 이와 비슷한 문제를 가지고 있었습니다.

N년간 다양한 회사 내부 저장 공간(여러 다른 SW 시스템, 장부 등)에, 다양한 데이터 형태로 고객 관련 데이터가 흩어져 있음. 이유는 다음과 같습니다.

  1. 회사가 운영되어오면서 시스템과 도구 변경이 이루어졌지만 그에 따라 적절한 데이터 이관이 이뤄지지 않음.
  2. 동시에 다양한 운영 시스템/도구를 사용하다보니 복수의 저장소에 동일한 데이터가 저장되기도 하지만, 이벤트 종류에 따라 한 쪽 저장소에만 고객 데이터가 저장되기도 함.

흩어져있는 데이터를 보면, 각 고객 데이터에 고유키가 없을 뿐더러, 심지어 중복된 데이터가 많았습니다. 중복된 데이터들끼리의 칼럼과 데이터 형식도 달랐구요. 각기 다른 데이터 저장소에서 동일한 고객 데이터임에도 불구하고 한 쪽에선 이메일이 누락되어있다면, 다른 쪽에선 대표자 분 모바일 번호가 누락되어있다든지 등의 사례도 존재했습니다.

이런 상황에선 각 데이터 소스(저장소)에서 고유키를 생성해서 병합(merge)한다고 해결될 문제는 아니었습니다.

고객 의뢰 사항

흩어져있는 고객 데이터를 하나의 데이터 저장소에 통합하여 관리하고 싶음.

솔루션

1. 데이터 추출

고객으로부터 직접 추출해주신 데이터들도 있었지만, 직접 시스템에서 추출해야 하는 경우도 있었습니다. 시스템으로부터 데이터 추출은 관리자 대시보드에서 대용량 데이터 추출 기능이 있다면 활용(요청)하는 것이 제일 좋습니다. 이런 대용량 데이터 추출 기능을 제공하지 않는다면 아쉬운대로 각 시스템에서 제공하는 API를 활용하여 코드를 작성하여 반복 작업을 자동화하여 데이터를 모으면 됩니다. 직접 관리자 화면에서 일일이 일부 데이터를 추출하여 병합하는 것은 권장하지 않습니다. 데이터 양에 따라서 너무나도 많은 시간이 걸리고, 또 실수가 있을 수 있기 때문입니다. 추출된 데이터는 생각보다 적지 않았습니다. (10만여건)

2. 데이터 탐색 및 정리

활용 도구

데이터 탐색 및 정리는, 구글 스프레드시트와 주피터 파이썬 노트북을 활용하였습니다.

가장 먼저, 각 데이터 소스에서 중복(duplicate) 데이터 정리를 하였습니다. 이후 빈 문자열을 제거한다든지, 균일하지 않은 모바일 번호 형식(01012341234, 010-1234-1234)을 통일해야 한다든지의 기본 작업을 진행하였습니다.

다음으론 데이터 소스 레코드에 고유키를 가지고 있거나 그렇지 않았기 때문에, 그나마 공유할 수 있는 고유키를 생성하기로 하였습니다. 다음과 같은 옵션이 있었는데요.

  1. 이름_모바일번호
  2. 모바일번호_이메일주소
  3. 이름_이메일주소

위 3가지 옵션 중 어느 것을 선택하더라도 고유키로서 역할은 할 수 있겠다고 생각하였습니다. 저는 1번, 이름_모바일번호를 선택하였습니다. 이유는 이메일 주소의 경우 희박하지만 여러 다른 주소 사용이 가능할 수 있기 때문입니다. 실제로 규모가 작은 사업체 대표님들의 경우 종종 gmail, naver등의 개인메일을 사용하시거나, 회사 메일과 혼용해서 기입하시는 경우도 있었기 때문입니다. 반대로 이름과 모바일 번호는 그나마 변경될 확률이 적고 이 2개의 정보를 결합하면 고유키 역할을 충분히 할 수 있겠단 판단을 하였습니다. e.g. 구일모_01012341234

3. 데이터 병합

각 데이터소스의 모든 칼럼 기록들이 최종 데이터 통합에 모두 사용되는 것은 아닙니다. 따라서 마지막 활동 기록 등과 같은 불필요한 데이터는 제외한 채, 각기 다른 데이터 소스를 하나의 dataframe으로 병합하였습니다. 이렇게 하면, 이름_모바일번호가 중복되는 경우가 발생합니다. 이는 동일한 대표자 분이 2개 이상의 법인을 소유하고 있는 경우가 그렇습니다. 대표자 분의 contact data 를 통합하는 것이 최종 목적이었기 때문에, 2개 이상의 회사를 소유하고 계신 경우, 배열(array, list)에 여러 회사 정보를 추가하여 이름_모바일번호를 고유(unique)하게 유지하였습니다.

마케팅 정보 수신 활용 동의 (yes or no)를 받은 고객도 있었지만, 동의 자체를 문의하지 않은 고객들도 있었습니다. 이 상태값을 명시적으로 구분하기 위해 추가 상태값을 생성하여 기입하였습니다. 각 데이터 값들의 생성날짜기록(created_time)은 이후 개인정보보호법에 따라 폐기가 필요한 그룹을 쉽게 필터할 수 있도록 데이터 형식을 맞추어 오름차순으로 정리하였습니다.

4. 산출물

최종적으로 통합된 고객 데이터는 csv format과 구글 스프레드시트에 업로드된 형태로 전달드렸습니다. 동시에 사용하고 계신 마케팅 메일 솔루션에서 활용하실 수 있도록 주소록에 각기 다른 상태값을 그룹화하여 업로드를 완료하였습니다. 마지막으로, 앞으로 이런 데이터 통합을 계속 하지 않으시도록, 현재 받고 있는 고객 개인정보 수집 데이터 포멧 통일과, 개인정보보호법 준수를 위해 고객으로부터 수집 보관 동의와 마케팅 정보 수신 동의를 별도로 받아야 한다고 가이드를 제공해드렸습니다.

note

쿠스랩 서비스는 문제를 해결해 드릴 뿐 아니라, 문제가 어떻게 해결되었는지, 향후 유지 운영 관리는 어떻게 해야하는지 상세한 매뉴얼 산출물을 함께 제공해 드립니다.

info

조직 내 시스템, 데이터 통합 및 연동, 데이터 이관 등의 문제를 가지고 계신가요?

어떤 문제든 수단과 방법을 가리지 않고 해결해 드립니다.

Kooslab 서비스 문의하기