brunch

You can make anything
by writing

C.S.Lewis

by 비즈스프링 Mar 16. 2023

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

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


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

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

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



AIR(매체통합리포트)는

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

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 정보를 담고 있습니다.

tb_report 데이터 목록 예시 (출처: BizSpring)

2. tb_report_part

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

tb_report_part 데이터 목록 예시 (출처: BizSpring)

3. tb_dimension

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

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

tb_dimension 데이터 목록 예시 (출처: BizSpring)

4. tb_metrics

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

aggregations 쿼리에 사용됩니다.

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

tb_metrics 데이터 목록 예시 (출처: BizSpring)

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

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


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

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


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

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


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

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 쿼리를 생성하고 데이터를 조회해오도록 되어 있습니다. 

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

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
비즈스프링

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

매거진의 이전글 GP 매체 별 API 데이터는 어떻게 제공될까?
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari