brunch

Elasticsearch를 사용하기 위한 데이터 구성

by 비즈스프링

이번 포스팅에서는 AIR(매체통합리포트)에서 Elasticsearch를 사용하기 위해 필요한 데이터 구성에 대해 소개하려고 합니다. 비즈스프링 서비스에서 Elasticsearch를 활용하는 사례에 대한 내용은 이전 게시물에서 확인하실 수 있으니, 이전 게시물을 확인해보지 못하셨다면 아래 게시물들을 먼저 확인해보시기 바랍니다.


Elasticsearch -온라인 서비스를 위한 빅데이터 플랫폼

Elasticsearch를 사용한 AIR(매체통합리포트) 리포팅

BigQuery 데이터 정제부터 엘라스틱서치에 데이터가 저장되는 과정



AIR(매체통합리포트)는

Elasticsearch로 조회한 데이터로 차트와 데이터 그리드 영역을 그리도록 구성되어 있습니다.

리포트-화면-1024x512.png AIR(매체통합리포트) 광고 매체 분석 종합 리포트 화면 예시 (출처: BizSpring)


Elasticsearch에 데이터를 요청하기 위해서는 기본적으로 데이터가 담겨 있는 index, 여러 조건들을 지정하는 bool 쿼리, 집계를 위한 aggregations을 사용합니다.


정리하면 아래의 쿼리와 같습니다.


GET /index-*/_search

{

"size": 0,

"query": {

"bool": {

"must": [

{

.....

},

.....

],

"adjust_pure_negative": true,

"boost": 1

}

},

"aggregations": {

"data": {

"composite": {

"size": 10000,

"sources": [

.....

]

},

"aggregations": {

.....,

.....

}

}

}

}


해당 쿼리를 풀어서 보면


“어디서(index), 어떠한 조건들로(bool),

어떠한 데이터들을 그룹으로 묶어(composite),

어떠한 집계 데이터(aggregations)들을 조회해주세요.”


가 됩니다.


데이터 조회를 위해 API를 호출할 때마다 해당 정보들을 같이 전달해주기에는 사용성과 유지보수가 용이하지 않기 때문에, 각각의 정보들을 DB에 설정해 놓은 후 필요한 데이터들을 상황에 맞게 사용하도록 구성되어져 있습니다.


이에 아래와 같은 테이블들의 설정이 필요합니다.


1. tb_report

index 정보를 담고 있습니다.

표1.png tb_report 데이터 목록 예시 (출처: BizSpring)

2. tb_report_part

index에 연결되는 차원, 지표의 정보들을 담고 있습니다.

표2.png tb_report_part 데이터 목록 예시 (출처: BizSpring)

3. tb_dimension

차원의 정보를 담고 있습니다.

bool 쿼리, composite(여러 개의 필드로 그룹화 할 경우 사용)에 사용됩니다.

표3.png tb_dimension 데이터 목록 예시 (출처: BizSpring)

4. tb_metrics

지표의 정보를 담고 있습니다.

aggregations 쿼리에 사용됩니다.

지표를 설정할 때는 met_option에 있는 값과 같이 해당 지표가 어떠한 집계 함수를 사용할지 정의되어 있습니다.

표4.png tb_metrics 데이터 목록 예시 (출처: BizSpring)

tp_report_part, tb_dimension, tb_metrics를 보면 data_tp, data_type을 확인할 수 있습니다.

이러한 값들은 쿼리를 생성할 때 사용됩니다.


Index에 매핑 되어있는 properties들의 데이터 타입들로 정의되어 있으며,

Index Templates를 통해 확인 가능합니다.


Index에 매핑된 정보는 아래와 같으며, Kibana등을 통해 확인할 수 있습니다.

Kibana Elasticsearch Index Templates 예시.png Kibana Elasticsearch Index Templates 예시 (출처: BizSpring)


이러한 데이터 타입들은 코드 값으로 설정하여 관리하고 있습니다.

표5.png tb_code_dtl 데이터 목록 예시 (출처: BizSpring)


이러한 데이터 구성을 통해 아래와 같이 API를 호출 하게 되면,


POST https://growthplatform.ai/gp/api/data/1000000

{

client_seq: 106771

pfno: 300097

psDate: 2021-07-27

peDate: 2023-03-10

dimension: pfno,ad_provider,ad_platform,ad_program,campaign

}


DB에 설정되어 있는 값들을 참고하여 Elasticsearch 쿼리를 생성하고 데이터를 조회해오도록 되어 있습니다.

실제 실행되는 모습은 아래와 같습니다.

엘라스틱-조회-및-결과값.png Kibana Elasticsearch 데이터 조회 화면 예시 (왼쪽은 조회 쿼리, 오른쪽은 결과 데이터) (출처: BizSpring)


이상으로, BizSpring Growth Platform™️ AIR(매체통합리포트)에서 Elasticsearch를 사용하기 위해 필요한 데이터 구성을 함께 알아보았습니다. 비즈스프링의 마케팅 자동화 솔루션인 Growth Platform™️에 대해 궁금한 점이 있다면 언제든지 연락주세요.


감사합니다.



ad@bizspring.co.kr / 02-6919-5516




마케팅에서의 데이터 활용 기술과 인사이트
No.1 Data Partner for Data-Driven Growth
비즈스프링

공식 블로그 | 페이스북 | 네이버 블로그 | 유튜브 | 트위터 | 슬라이드쉐어

keyword