콘텐츠로 건너뛰기

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

AIR(매체통합리포트)에서 제공하는 수많은 리포트들은 어떤 과정을 통해 화면에 그려지고 있는지 궁금하지 않으신가요? AIR(매체통합리포트)에서 신속한 리포팅이 가능한 이유는 바로 Elasticsearch를 사용하여 데이터를 빠르게 검색 및 집계하기 때문인데요, Elasticsearch에 대한 일반적인 이야기가 궁금하신 분들은 이전 포스팅을 참고해주세요.

이번 포스팅에서는 AIR(매체통합리포트)에서 Elasticsearch를 사용하여 리포팅을 진행하는 과정에 대해 공유하고자 합니다. 그럼 간단한 예제를 통해서 그 과정을 살펴보겠습니다.

리포팅 과정

독자 여러분들의 이해를 돕기 위하여 AIR(매체통합리포트) > 대시보드 > 광고주/매체사별 대시보드 화면을 예시로 살펴보겠습니다. 광고주/매체사별 대시보드 화면의 리포팅 진행 과정을 간략히 표현하면 다음과 같습니다.

  1. 사용자가 서비스에서 대시보드 페이지를 클릭합니다.
  2. 서비스는 필터 데이터를 매핑하여 AIR(매체통합리포트) 서버로 API 요청을 보냅니다.
  3. AIR(매체통합리포트) 서버는 전달 받은 필터 데이터로 쿼리를 생성하여 Elasticsearch에서 데이터를 검색합니다.
  4. AIR(매체통합리포트) 서버는 서비스로 Elasticseach에서 반환 받은 데이터를 포함하여 API 응답을 보냅니다.
  5. 서비스는 응답 받은 데이터를 사용하여 차트 및 테이블을 출력합니다.

리포팅에 사용할 데이터 정의하기

먼저, 리포팅에 사용할 데이터를 Elasticsearch에 정의합니다. 해당 데이터는 차원(dimension) 데이터와 지표(metrics) 데이터를 모두 포함합니다. 광고주/매체사별 대시보드 화면에서 사용하는 필터 데이터는 광고주/사이트/광고 매체사/광고 플랫폼/광고 상품/일자인 것을 확인할 수 있습니다.

AIR(매체통합리포트)의 '광고주/매체사별 대시보드' 리포트 (출처: BizSpring)
'광고주/매체사별 대시보드' 리포트의 필터 영역 (출처: BizSpring)
No. 필드명 설명
1 stat_date 일자
... ... ...
6 client_seq AIR(매체통합리포트)에 등록한 광고주의 번호
7 pfno AIR(매체통합리포트)에 등록한 사이트의 번호
... ... ...
12 ad_provider 광고 매체
13 ad_platform 광고 플랫폼
14 ad_program 광고 상품
... ... ...

서버로 API 요청 보내기

서비스는 필터 데이터를 매핑하여 AIR(매체통합리포트) 서버로 API 요청을 보냅니다. 이때 응답 데이터를 바로 화면에 보여주기 위해 비동기로 요청합니다.

개발자 도구의 API 요청 화면 예시 (출처: BizSpring)

Elasticsearch에서 데이터 검색하기

AIR(매체통합리포트) 서버는 전달 받은 필터 데이터로 쿼리를 생성하여 Elasticsearch에서 데이터를 검색합니다. 이때 Elastic Java REST Client를 사용합니다.

Elasticsearch에서 데이터 검색 화면 예시

Request

				
					GET /bmp_media_v1-*/_search
{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "client_seq": {
              "value": "106659",
              "boost": 1
            }
          }
        },
        {
          "range": {
            "stat_date": {
              "from": "2022-05-31",
              "to": "2022-07-31",
              "include_lower": true,
              "include_upper": true,
              "time_zone": "Asia/Seoul",
              "boost": 1
            }
          }
        },
        {
          "terms": {
            "pfno": [
              "300021",
              "300025"
            ],
            "boost": 1
          }
        },
        {
          "terms": {
            "ad_platform": [
              "ADN PC",
              "DABLE",
              "FACEBOOK",
              "구글 애즈",
              "네이버 검색",
              "네이버 성과형 디스플레이",
              "카카오 키워드"
            ],
            "boost": 1
          }
        },
        {
          "terms": {
            "ad_program": [
              "ADN PC",
              "데이블",
              "페이스북",
              "검색광고",
              "파트너 검색광고",
              "파워링크",
              "GFA",
              "키워드광고"
            ],
            "boost": 1
          }
        },
        {
          "terms": {
            "ad_provider": [
              "ADN PC",
              "DABLE",
              "FACEBOOK",
              "구글",
              "네이버",
              "카카오"
            ],
            "boost": 1
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "aggregations": {
    ...
  }
}
				
			

Response

				
					{
  "took" : 10,
  "timed_out" : false,
  "_shards" : {
    "total" : 72,
    "successful" : 72,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 10000,
      "relation" : "gte"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "data" : {
      "after_key" : {
        "stat_date" : "2022-07-31"
      },
      "buckets" : [
        ...
      ]
    }
  }
}
				
			

서버로부터 API 응답 받기

AIR(매체통합리포트) 서버는 Elasticseach에서 반환 받은 데이터를 포함하여 서비스로 API 응답을 보냅니다.

개발자 도구의 API 응답 화면 예시 (출처: BizSpring)

서비스는 응답 받은 데이터를 사용하여 차트 및 테이블을 출력합니다.

AIR(매체통합리포트)의 '광고주/매체사별 대시보드' 리포트 (출처: BizSpring)

AIR(매체통합리포트)에서 Elasticsearch를 사용하여 리포팅을 진행하는 과정에 대해 알아보았습니다. 비즈스프링의 마케팅 자동화 솔루션인 AIR(매체통합리포트)에 대해 궁금한 점이 있다면 언제든지 문의해주세요.

※ 문의하기 : 02-6919-5516 / ad@bizspring.co.kr

“Elasticsearch를 사용한 AIR(매체통합리포트) 리포팅”의 1개의 댓글

  1. 핑백: Elasticsearch ILM 적용을 통한 최적화 운영 – BizSpring BLOG

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다