Skip to content

Timelion

Gee edited this page Jan 15, 2018 · 12 revisions

주의

  • 그래프를 여러개 생성하고 싶으면 ,로 구분해라 .es(), es()
  • @timestamp 외의 timefield를 사용할 시 명시하지 않으면 아무것도 안 나타난다. .es(timefield=newdate)
  • 기본함수 이외에는 (일반적으로) 기본함수와 chain해서 사용한다. .abs(), es.().abs()
  • .label()에 띄어쓰기가 있을 땐 ' '로 감싸줘야 한다. .es().lable('hello world')
  • chain을 잘 사용하는 것이 point! 대부분의 경우 chain, chain해서 사용한다 es().sum(10).scale_interval(1h).label('chain..')

목록

예제


기본함수

.es()

모든 index의 모든 document의 개수를 y축으로 갖고, @timestamp를 x축으로 갖는 그래프가 생성된다

argument 설명 예시 의미
index index 선택 .es(index=shopping) shopping라는 index 사용
q document 선택 (문법) .es(q=고객성별:여성)
.es(q='상품분류:(니트 OR 청바지) AND 고객성별:남성')
고객성별이이 여성인 document 사용
상품분류가 니트/청바지 중 하나이면서 고객성별이 남성인 document 사용
timefield timefield 선택 (timelion x축) .es(timefield=주문시간) 주문시간 field를 tiemfield(x축)으로 사용
metric aggregation 선택 (timelion y축) .es(metric=sum:상품가격) price field의 sum 값을 y축에 표시
offset 설정한 시간만큼 전의 값을 표시
(형식: 1h, 1d, 1w, 1M, 1y)
.es(offset=-1M) 한 달 전 값을 표시
split .es()를 조건에 맞게 분할 .es(split=상품분류:3) 기존 .es()를 상품분류을 기준으로 3개로 분할


조건함수

.if()

.es()의 각 point를 설정한 조건과 비교하여 참(거짓)일 경우 설정한 값을 반환한다

argument 설명 예시 의미
operator eq, ne, gt(e), lt(e) .es().if(gt, 5, 10, 0)
.es().if(lt, .es(q=고객성별:여성), 1, 0)
.es() 값이 5보다 크면 10으로, 작으면 0으로 설정
.es() 값이 .es(q=고객성별:여성)보다 작으면 1, 크면 0으로 설정
if 비교할 값 .es().if(gt, 5, 10, 0) .es() 값이 5보다 크면 10으로, 작으면 0으로 설정
then 조건이 참일 경우 표시할 값 .es().if(gt, 5, 10, 0) .es() 값이 5보다 크면 10으로, 작으면 0으로 설정
else 조건이 거짓일 경우 표시할 값 .es().if(gt, 5, 10, 0) .es() 값이 5보다 크면 10으로, 작으면 0으로 설정


수학함수

.es().multiply()

.es() 값에 상수/그래프(값)을 곱한다

argument 설명 예시 의미
multiplier 곱할 값 .es().multiply(10)
.es().multiply(.es())
.es() * 10
.es() * .es()

.es().divide()

.es() 값에 상수/그래프(값)으로 나눈다

argument 설명 예시 의미
divisor 나눌 값 .es().divide(10)
.es().divide(.es())
.es() / 10
.es() / .es()

.es().subtract()

.es() 값에 상수/그래프(값)으로 뺀다

argument 설명 예시 의미
term 뺄 값 .es().subtrat(10)
.es().subtract(.es())
.es() - 10
.es() - .es()

.es().sum()

.es() 값에 상수/그래프(값)를 더한다

argument 설명 예시 의미
term 더할 값 .es().sum(10)
.es().sum(.es())
.es() + 10
.es() + .es()

.es().abs()

.es() 값에 절대값을 취한다

.es().log()

.es() 값에 로그를 취한다

argument 설명 예시 의미
base .es().log(10) .es() 각 point에 밑이 10인 로그를 취한다

.es().max()

두 값/그래프(값) 중 큰 값을 반환한다

argument 설명 예시 의미
value 비교값 .es().max(10)
.es().max(.es(q=s:a))
.es()와 10 중 큰 값 표시
.es()와 .es(q=s:a) 중 큰 값 표시

.es().min()

두 값/그래프(값) 중 작은 값을 반환한다

argument 설명 예시 의미
value 비교값 .es().min(10)
.es().min(.es(q=s:a))
.es()와 10 중 작은 값 표시
.es()와 .es(q=s:a) 중 작은 값 표시

.static()

일정한 값을 갖는 상수함수를 생성한다

argument 설명 예시 의미
value 표시할 값 .static(10) y=10인 상수함수 생성

.es().cusum()

.es()의 누적합을 구한다

.es().derivative()

.es()와 .es()의 이전 값과의 차를 구한다

.es().movingaverage()

.es()의 이동평균값을 구한다

argument 설명 예시 의미
window 구간 .es().movingaverage(10) .es()의 10개 point 마다 평균 계산
position 위치 (left, right, center) .es().movingaverage(left, 10) 특정 point 기준 왼쪽 10개씩 평균 계산

.es().scale_interval()

.es()의 interval을 조정한다

argument 설명 예시 의미
interval 조정하려는 시간 단위
(1s, 1m, 1h, 1M, 1w, 1y)
.es().scale_interval(1h) .es()의 값을 1h 기준으로 조정해서 표시
예) default가 daily라면 24로 나눈 값이 표시

.es().range()

.es()의 값을 특정 범위 내의 값으로 조정한다

argument 설명 예시 의미
min 최소값 .es().range(1, 10) .es()의 값을 1~10 사이 값으로 조정
max 최대값 .es().range(1, 10) .es()의 값을 1~10 사이 값으로 조정

.es().trend()

.es()의 추세선을 그려준다.

argument 설명 예시 의미
mode 어떤 방식으로 추세선 그릴 지 서택 linear(선형), log .es().trend(mode=linear) .es()의 선형 추세선을 그린다
start 추세선 작성을 위해 사용할 데이터의 시작점 정의 .es().trend(start=5)
.es().trend(start=-5)
처음 15번째 데이터부터 반영
뒤에서 15번째 데이터부터 반영
end 추세선 작성을 위해 사용할 데이터의 끝점 정의 .es().trend(end=5)
.es().trend(end=-5)
처음 5번째 데이터까지 반영
뒤에서 5번째 데이터까지 반영


스타일 함수

.es().bars()

.es()를 막대 그래프로 나타낸다

argument 설명 예시 의미
width 굵기 .es().bars(5) .es()를 막대 그래프로 나타내고 굵기는 5로 설정

.es().lines()

.es()를 라인 그래프로 나타낸다

argument 설명 예시 의미
width 굵기 .es().lines(width=5) .es()를 라인 그래프로 나타내고 굵기는 5로 설정
fill 농도 .es().lines(fill=5) .es()의 라인 아래 면적을 농도 5만큼 채우기 (0: 투명, 10: 불투명 )

.es().points()

.es()를 점 그래프로 나타낸다

argument 설명 예시 의미
radius 반경 .es().points(radius=5) .es()의 점 반경을 5로 설정
weight 굵기 .es().points(weight=5) .es()의 점 원주 굵기를 5로 설정
fill 농도 .es().points(fill=5) .es()의 점의 농도를 5로 설정
fillColor 내부 색깔 .es().points(fillColor=red) .es()의 점 색깔을 red로 설정
symbol 모양 (cross, circle, triangle, square, diamond) .es().points(symbol=cross) .es()의 점 모양을 cross로 설정

.es().label()

legend에 각 .es()를 나타낼 이름을 정한다

.es().color()

.es()를 나타낼 색깔을 정한다

.es().yaxis()

.es()의 y축 정보를 설정한다

argument 설명 예시 의미
yaxis n 번째 y축 .es().yaxis(yaxis=2) 2번째 y축에 표시
min 최소값 .es().yaxis(min=1) y축의 최소값을 1로 설정
max 최소값 .es().yaxis(max=10) y축의 최대값을 10으로 설정
label 축 이름 .es().yaxis(label=hello) y축의 이름을 hello로 설정
color 축 색깔 .es().yaxis(label=hello, color=red) y축의 이름을 hello로 하고 빨간색으로 표시
position 위치 (left, right) .es().yaxis(position) y축을 왼쪽에 표시

.es().title()

.es() 제목을 설정한다

argument 설명 예시 의미
title 제목 .es().title(title='hello world') title에 hello world 출력


예제

전년 대비 매출이 50,000 이상 상승 구간 하이라이트

.es(metric=sum:상품가격).label('올해 매출 (=상품가격의 합)'),  
.es(metric=sum:상품가격, offset=-1y).label('작년 매출').color(#00b8ff), 
.es(metric=sum:상품가격).subtract(.es(metric=sum:상품가격, offset=-1y)).if(gte, 50000, .es(metric=sum:상품가격), null).lines(fill=5, width=2).color(#fd8282).label('전년 대비 50,000 이상 상승 구간').yaxis(label=매출)

매출 7일 이동평균선 대비 14일 이동평균선이 1보다 큰 구간 하이라이트

.es(metric=sum:상품가격).movingaverage(7).divide(.es(metric=sum:상품가격).movingaverage(14)).label('매출 7일 이동평균선 대비 14일 이동평균선').color('#00ccff'),  
.es(metric=sum:상품가격).movingaverage(7).divide(.es(metric=sum:상품가격).movingaverage(14)).if(gte, 1.0, .es(metric=sum:상품가격).movingaverage(7).divide(.es(metric=sum:상품가격).movingaverage(14)), null).lines(fill=3).label('1.0보다 큰 경우').color('#fb8cb5')

평균 매출 추세선, 평균 매출, 매출 5일 이동평균선 한 번에 그리기

.es(metric=avg:상품가격).trend().label('평균 매출 추세선').color(#7EC327), 
.es(metric=avg:상품가격).label('평균 매출').points().color(#cf5297), 
.es(metric=avg:상품가격).movingaverage(5).label('매출 5일 이동평균').color(#5297cf)

source

Clone this wiki locally