Page tree
Skip to end of metadata
Go to start of metadata

OlapGrid에서 분석항목 / 데이터 항목을 신규로 작성하고, 데이터 값을 정의할 때 사용합니다.

  • 신규생성항목 : 계획비 = 판매실적 / 판매계획


수식 편집기

 

① 계산 필드 이름 ② 수식 편집 함수 표시 창 ③ 수식 작성 창 ④ 함수 도움말 창


1) 제공 정보

  • 계산식 정의를 위한 필드정보, 함수, 연산자들의 목록을 제공
  • Fomula 창에서 계산 수식을 정의
  • 선택한 항목(필드정보, 함수, 연산자)에 대한 도움말 제공

2) 수식 편집기 사용 메뉴

  • [ 팝업메뉴 ] - [ 계산 필드 추가 ]
  • [ 팝업메뉴 ] - [ 사용자 정의 항목] - [ 필더 수식 ]
  • [ 팝업메뉴 ] - [ 사용자 정의 항목 ] - [ 집계수식 ]
  • [ 팝업메뉴 ] - [ 디자인 ] - [ 필드 ] - [ 수식 ]
  • [ 팝업메뉴 ] - [ 디자인 ] - [ 필드 ] - [ 수식2 ]
  • [ 팝업메뉴 ] - [ 디자인 ] - [ 스타일 ] - [ 조건부 서식 ]


팝업 메뉴를 이용한 수식 편집 사용


 수식 작성 예시

1)  Rank 함수

      Rank([Company],"[당월실적]", false) 내림차순 정렬


2)  SubTotalPercentRow 구성비

      SUM([판매계획]) / SUM ( ForAll ( "[제품명]","[판매계획]") )  * 100


3) 특정금액대비 비중값 구하기(구성비)

       SUM([당월실적]) / SUM( GetMembers([특정디멘젼명],"항목명", [당월실적],""))

                SUM([금액]) / SUM( GetMembers( [계정],"매출액"  , [금액] ,""))                        /* 매출액 구성비*/


 4)  구성비/달성율/증감율/신장률 구하기

       전년대비 구성비차                  :  GetMembers([실적구분]  , "당년실적") - GetMembers([실적구분]  , "전년실적")

       계획대비 달성율                       :  GetMembers([실적구분],"당년계획") / GetMembers([실적구분],"당년실적")*100

       전년대비 신장율                      :  GetMembers([실적구분],"당년실적") / GetMembers([실적구분],"전년실적")*100 - 100

     

5) 달성율 신호등 표기(이미지 적용)

      SWITCH(

            SUM([진척도]) >100,   IMG("ccf744727425e432.PNG",  16, 16),

             IMG("b6b4d58a2ce73cbf7.PNG", 16, 16)

     )


6) 나누기 에러 처리

       IF( ToNumber( SUM([VAL2]), 0) == 0,    , 0   , Sum([VAL1]) / SUM([VAL2])  )

       IF(  OR(  IsNull(SUM([NO2])) , SUM([NO2])  == 0) , 0    , SUM([NO1]) / SUM([NO2])    )


7) 차원 사용자정의항목 생성

Switch(

     AND(getRowString("CUSTOMER") == "Anam", MID(getRowString("PRODUCT"), 0,1) == "T")  , "아남전자 T~"

   ,  getRowString("CUSTOMER") == "Anam"  , "아남전자 not T~"

   ,  getRowString("CUSTOMER") == "Samsung" , "삼성전자"

  , "기타 해외"

)


8) 신규 계산필드 이미지 표시 (매출>15000)

 IF(Sum([Act.])>=15000, IMG("arrow_up.png", 16, 16), IMG("arrow_down.png", 16, 16))

수식 편집기 함수 - Aggregate(집계 함수)

구분함수명설명반환타입사용법









Aggregate

Average

해당 필드의 평균을 반환 합니다.



 double

Average([MEASURE])

Average(100, 120, 100, 120)

Average( Sum([MEASURE]),  120, 100, 120)

Sum

해당 필드의 합계를 반환 합니다.

double

SUM([매출액])

SUM( SUM([매출액]) + MAX([차액]) )

Count

해당 필드에 대한 개수를 반환합니다.


double

Count([MEASURE])

Count, 120, 100, 120)

Count( Sum([MEASURE]),  120, 100, 120)

Max

해당 필드의 최대값을 반환 합니다.

문자형과 수치형 모두 지원하며, 문자의 경우 문자 정렬 규칙에 따라 오름차순 정렬 시 맨 마지막에 나오는 값을 반환합니다.


 object

Max([매출액])

Max([FIELD_NAME])

Max("Hello", "Abc", "Old", "ZIndex")

Max( Max([FIELD_NAME]),  120, 100, 120)

Min

해당 필드의 최소값을 반환 합니다.

문자형과 수치형 모두 지원하며, 문자의 경우 문자 정렬 규칙에 따라 오름차순 정렬 시 맨 처음에 나오는 값을 반환합니다.


object

Min([매출액])

Min([FIELD_NAME])

Min("Hello", "Abc", "Old", "ZIndex")

Min( Max([FIELD_NAME]),  120, 100, 120)

DistinctCount

데이터 셀에서 해당 필드의 값 리스트 중 중복값을 제거한 수량을 반환합니다.

double

DistinctCount([제품군])






Condition

IF

조건 검사를 수행하여 참이면 trueValue를 반환하고, 거짓이면 falseValue를 반환합니다.

Object

IF( 1 > 2 , "1은 2보다 크다" , "1은 2보다 작다")

SWITCH

모든 조건이 거짓 일 경우 마지막 default 값이 반환됩니다.

조건 n 개에 대해 순차적으로 검사하여 가장 처음으로 참인 조건의 값을 반환합니다.




Object

Switch( 

       ToString(getRecordValue([PRODUCT])) ==

                             "BW1000"  , Sum([H_VAL])

      , ToString(getRecordValue([PRODUCT])) ==

                             "BW2000"  , Sum([Y_VAL])

     ,   Sum([Q_VAL])

    )

수식 편집기 함수 - Olap(올랩 함수)

구분

함수명

설명

반환타입

사용법






















Olap

Area전달 받은 필드의 배치된 영역을 반환합니다.
(Row:1,Column:2,Filter:3,Data:4)
integer

Area([COMPANY])

AreaIndex

전달 받은 필드의 배치된 영역에서의 Index를 반환합니다.

(Index 값은 0부터 시작)

integerAreaIndex([COMPANY])

AreaIsRow

필드의 배치영역이 Row인지 여부를 반환합니다.

boolean

AreaIsRow([COMPANY])

IF( AreaIsRow([COMPANY]) , SUM([Units]) , 0)

AreaIsColumn

필드의 배치영역이 Column인지 여부를 반환합니다.

boolean

AreaIsColumn([COMPANY])

AreaIsDate

필드의 배치영역이 Date인지 여부를 반환합니다.

boolean

AreaIsDate([COMPANY])

AreaIsFilter

필드의 배치영역이 Filter인지 여부를 반환합니다.

boolean

AreaIsFilter([COMPANY])

AreaIsHidden

필드의 배치영역이 Hidden인지 여부를 반환합니다.

boolean

AreaIsHidden([COMPANY])

getRecordValue

데이터 셀에 포함된 레코드 중 첫 번째 값을 반환합니다.

object

getRecordValue([FIELD_NAME])

getRecordValue([COMPANY])

HeaderText

화면에 배치된 상태에서 헤더영역(Row/Column)의 필드 표시 텍스트를 반환합니다.

해당 필드가 헤더영역에 존재하지 않을 경우 빈 텍스트를 반환합니다.

string

HeaderText([FIELD_NAME]) HeaderText([COMPANY])


ForAll

배치에 대해 제어하는 함수로 현재 배치를 기준으로 Dimensions에 정의된 항목을 제거하여 상위 합에 대한 접근이 가능하게 합니다.

Record Array

Sum([Units])  /   ForAll("[Company];[Locale]", "[Units]", false)

ForEach

배치에 대해 제어하는 함수로 현재 배치를 기준으로 Dimensions에 정의된 항목을 추가하여 하위 목록의 그룹 데이터를 반환합니다.

Record Array

Average(ForEach("[Locale]", "[Avg. Units]"))

InList

대상 필드의 값이 비교 값 목록내에 존재하는지 여부를 반환합니다.

boolean

InList([필드명], "항목1", "항목2")

Sum(IF(InList(Locale],”korea”,”china”),[Units],0))

Match

대상 필드의 값이 문자열 패턴에 일치하는지 여부를 반환합니다.

대소문자 구분합니다.

boolean

*a : a로 끝나는 모든 문자열을 의미

a*는 a로 시작되는 모든 문자열을 의미

*a*는 a가 포함된 모든 문자열을 의미

GetMembers

현재 배치된 화면에서 특정 항목에 일치하는 데이터 셀을 검색하고 해당 셀의 값들을 반환합니다.

비중값 구하기

Record Array

GetMembers([SEARCH_FIELD_NAME], string keyword, [VALUE_FIELD_NAME])

GetMembers([Locale], “korea”,[Units], “”)


Rank

특정값을 기준으로 차원항목에 대한 순위를 계산합니다.

동일한 값은 동일한 순위를 부여합니다.

메저 필드명은 문자열로 전달합니다.

integer

Rank([DIMENSION], "[MEASURE]", isTop)

Rank([Locale], "[Units]", false)


Rankln

화면 배치에 따라 자동으로 마지막 단계에 해당하는 항목의 순위를 반환 합니다.

동일한 값은 동일한 순위를 부여합니다.

메저 필드명은 문자열로 전달합니다.

integer

RankIn([MEASURE], "[Row=1, Column=2]", isTop)

IMG

셀에 이미지를 표현합니다.

이미지의 경로는 이미지 업로더로 업로드된 이미지의 이름을 지정합니다.

objectIF(Sum([MEASURE]) > 2000, IMG("FILENAME", 16, 16),"FILENAME")

GetRowFields

현재 OLAP의 배치를 기준으로 Row Area에 있는 필드의 목록을 반환합니다.


GetRowFields("[dimension1];[dimension2]")

GetColumnFields

현재 OLAP의 배치를 기준으로 Column Area에 있는 필드의 목록을 반환합니다.

object

GetColumnFields("[dimension1];[dimension2]")

CellValueByOffset

현재 셀의 위치를 기준으로 특정 위치의 셀의 값을 반환합니다.

전년 대비 증감률의 값을 계산 합니다.

*파라미터

1. offsetRow(int)     : Row 방향 옵셋 값

2. offsetColumn(int) : Column 방향 옵셋 값

object

IF(Columnindex()>1, CellValueByOffset(0,-1)-CellValueByOffset(0,-3),”-”)

RowIndex

현재 셀의 Row 위치 순서 값을 반환합니다. (내부 인덱스를 반환합니다.)

 위치는 0부터 시작합니다.

integer

RowIndex()

ColumnIndex

현재 셀의 Column 위치 순서 값을 반환합니다.(내부 인덱스를 반환합니다.)

 위치는 0부터 시작합니다.

integer

ColumnIndex()

GetVariationValue

주어진 필드의 2차 함수를 적용한 값을 반환 합니다.

object

GetVariationValue("[FIELD]")

IsHeaderTotal

해당 셀이 전달 받은 필드의 합계(소계 또는 총합계)인지 여부를 반환합니다.

(True : 합계 셀, False : 일반 셀)

BooleanIsHeaderTotal([Field])
InDimension팩트 테이블과 팩트 테이블 간의 1:N 관계에서 1의 특정 값을 중복 적용하는 것을 방지합니다.integerInDimension("[FIELD_NAME1];[FIELD_NAME2]", [Measure])







Convertor

ToString

해당 값을 문자열로 변환 합니다,

포멧은 수치형 포멧 및 일자형 포멧을 사용하실 수 있습니다.

포멧은 생략하실 수 있습니다.

string

ToString(value, [string format])

ToString(123456789, "#,##0")  -> 123,456,789

ToString( 0.12 , "P2") -> "12.00 %“

ToString( 123456.789 , "#,###.###")

-> "123,456.000"

ToNumber

해당 값을 숫자형으로 변환 합니다.

double

ToNumber(value)

ToNumber("123")   -> 123

ToNumber( "123.12" , 0) -> 123.12

ToNumber( "Matrix" , 0) -> 0

ToDate

해당 값을 날짜형으로 변환 합니다.

DateTime

ToDateToString(value, [string format])

ToDate(new Date(), "yyyy-MM-dd")

-> 2020-12-31










Logical

AND

여러 조건 값들에 대한 AND 연산 합니다.

boolean

AND(boolean, boolean, …)

IF ( AND( true, 1==1 , "Korea" == "Korea") , 1 , 0)     -> 1

OR

여러 조건 값들에 대한 OR 연산 합니다.

boolean

OR(boolean, boolean, …)

IF ( OR( 1==2 , "Korea" == "Korea") , 1 , 0) =>1

InNull

검사 대상 값이 null 값인지 여부를 반환합니다

boolean

IsNull(value)

IsNull( 100 ) => false

IsNull( "Korea" ) => false

IsBool

검사대상 값이 Boolean 타입여부를 반환

합니다.

boolean

IsBool(value)

IsBool(1)

IsBool(true)

IsNumber

검사대상 값이 숫자면 True 반환 합니다.

boolean

IsNumber(value)

IsNumber( "100" )  => true

IsNumber( 100 )  => true

IsNumber( "Korea" )  => false

IsString

검사대상 값이 문자열이면 True 반환 합니다.

boolean

IsString(value)

IsString("Korea") => true

IsString(null) => false

IsDateTime

검사대상 값이 날짜 면 True 반환 합니다.

boolean

IsDateTime(value)

IsDateTime(DATE(2013, 12,12))  => true

IsDateTime( "2013-12-12" )  => false










Character

Left

원본 문자열에서 좌측으로 부터 n개 만큼의 길이를 가지는 새로운 문자열을 반환합니다.

string

Left( "Hello Matrix", 1)   -> "H“

DistinctCount( Left( [Num_Field] , 3) )

Right

원본 문자열에서 우측으로 부터 n개 만큼의 길이를 가지는 새로운 문자열을 반환합니다.

string

Right( "Hello Matrix", 6)   -> "Matrix“

Max( Right( [Num_Field] , 1) )

Len

전달받은 문자열의 길이를 반환합니다.

integer

Len( "Hello Matrix")   -> 12

Sum( Len( [Company] ) )

Lower

전달받은 문자열을 소문자로 변환한 문자열을 반환합니다.

string

Lowser( "Hello Matrix")  -> "hello matrix"

Find

원본 문자열의 특정 위치로 부터 대상 문자열을 검색하여 해당 인덱스를 반환합니다.

검색 대상이 없을 경우 -1를 반환합니다.

string

Find("Hello Matrix", "Matrix", 0) -> 6

Find("Hello Matrix", "Kyoung", 0)   ->  -1

Mid

/

Substring

원본 문자열의 특정 위치로 부터 nCount만큰의 문자열을 반환합니다.

Mid와 Substring는 동일한 함수입니다.

string

Mid("Hello Matrix", 0, 5)  ->:  "Hello"

Mid("Hello Matrix", 6, 6)  :  "Matrix"

Replace

/ Substitute

원본 문자열의 oldText를 newText로 치환한 문자열을 반환합니다.

Replace와 Substitute는 동일한 함수입니다.

string

Replace("Hello Matrix", "Hello", "Hi")  -> "Hi Matrix"

Trim

원본 문자열의 시작과 종료 부분에 공백을 모두 제거한 문자열을 반환합니다.

string

Trim( " Hello World !   ") -> "Hello World

Upper

전달받은 문자열을 대문자로 변환한 문자열을 반환합니다.

string

Upper( "Hello Matrix")   -> "HELLO MATRIX"








Numeric

ABS

해당 값의 절대값 반환 합니다

double

ABS(Sum([전년대비]))

ACOS

해당 값의 역코사인값 반환 합니다.

double

ACOS(Sum([전년대비]))

ASIN

해당 값의 역사인값 반환 합니다.

double

ASIN(Sum([전년대비]))

ATAN

해당 값의 역탄젠트값 반환 합니다.

double

ATAN(Sum([전년대비]))

CEIL

해당 값의 올림값을 반환 합니다.

double

CEIL([계획비])

COS

해당 값의 코사인값을 반환 합니다.

 double

ACOS(Sum([전년대비]))

EXP

자연로그의 밑 e의 해당값의 제곱 값을 반환 합니다.

double

EXP(Sum([생산비율]))

FLOOR

해당 값의 내림값을 반환 합니다.

double

FLOOR(Sum([계획비]))

LOG

해당값의 대수(Logarithm-밑-지정값)를 반환 합니다.

double

LOG([매출액], 2)

LOG10

해당값의 대수(Logarithm-밑10)를 반환 합니다.

double

LOG10([매출액])

RAND

0에서 지정값 사이의 난수를 반환합니다.

(지정값이 없을 경우, 1로 자동설정)

double

RAND() :0~1 사이의 난수

RAND(10) :0~10 사이의 난수

ROUND

해당값의 지정된 자리수로 표현된 반올림된 값을 반환 합니다.

Double

ROUND(105.6,1) à106

SIN

해당 값의 사인값을 반환 합니다.

Double

SIN(Sum([전년대비]))

TAN

해당 값의 탄젠트값을 반환 합니다.

Double

TAN(Sum([전년대비]))

















Date Time

NOW

현재 시스템의 날자와 시간을 반환합니다.

DateTime

NOW() -> 20201231170409448

TODAY

현재 시스템의 날자를 반환합니다.

시간은 00:00:00으로 설정 됩니다.

DateTime

TODAY()  -> 20201231

YEAR

대상 날자의 년도를 반환합니다.

Integer

YEAR(TODAY()) -> 2020

MONTH

해당 일자의 월을 반환 합니다.

값은 1~12의 값을 가지게 됩니다.

Integer

MONTH(ToDate("2012-05-05") )  -> 5

DAY

해당 일자의 일을 반환 합니다.

Integer

DAY(ToDate("2020-05-30") ) ->30

WEEKDAY

해당 일자의 요일에 해당하는 상수값을 반환합니다.

         Sunday = 0,        Monday = 1,

        Tuesday = 2,        Wednesday = 3,

        Thursday = 4,        Friday = 5,

        Saturday = 6

Integer

WEEKDAY(NOW())

WEEKDAY(ToDate("2020-08-01"))  -> 6

HOUR

대상 시간의 시간 값을 반환합니다.

값은 0~23의 값을 가지게 됩니다.

Integer

HOUR(NOW())

HOUR(ToDate(getRecordValue([납기일])))

MINUTE

대상 시간의 분 값을 반환합니다.

값은 0~59의 값을 가지게 됩니다.

Integer

MINUTE(NOW())

MINUTE(ToDate(getRecordValue([납기일])))

SECOND

대상 시간의 초 값을 반환합니다.

값은 0~59의 값을 가지게 됩니다.

Integer

SECOND(ToDate(getRecordValue([CREATE_DATE])))

DATEADD

해당 일자에 특정 단위의 일자(시간)을 더한 일자를 반환합니다.

*날자 단위 상수

  dtYear : 년

  dtQuarter : 분기

  dtMonth : 월

  dtDay : 일수

  dtHour : 시간

  dtMinute : 분

  dtSecond : 초


DateTime

현재 일자에 1년을 추가한 일자를 반환한다.

DATEADD(dtYear,1, NOW())  -> 2021

DATEADD(dtYear, 1, DATE(2020, 04, 01))

-> 2021-04-01 오전 12:00:00

DATEADD(dtMonth, -1, DATE(2020, 04, 01))

-> 2020-03-01 오전 12:00:00


DATEDIFF

일자 간 차이 값을 반환 합니다.

*날자 단위 상수 사용


Integer

DATEDIFF(dtYear, DATE(2000, 04, 01), DATE(2015, 04, 01)) -> 15

DATEDIFF(dtMonth, DATE(2000, 04, 01), DATE(2015, 04, 01)) -> 180

DATEDIFF(dtDay, NOW(), ToDate(“2013-05-05”))

DATEPART

일자의 각 파트에 해당 하는 값을 반환합니다.

*날자 단위 상수 사용

Integer

DATEPART(dtYear, DATE(2000, 04, 01) )  -> 2000

DATEPART(dtMonth, DATE(2000, 04, 01) )  -> 4

DATE

넘겨진 파라미터 값을 가지로 새로운 일자를 반환합니다.

 4~6 (시,분,초)는 옵션입니다.

DateTime

DATE(2020,2,21)  -> : 2020-02-21일을 반환

DATE(2020, 04, 01, 12, 30, 12)

 -> 2020-04-01 12:30:12 반환










Operators

+

더하기



-

빼기



*

곱하기



/

나누기



%

비율값 계산 (%로 출력)



^

승산



()

괄호



<

작다



>

크다



<=

작거나 같다



>=

크거나 같다



!=

같지 않다.



!

아니다.



==

같은가



AND

And



OR

Or



/**/

두줄 이상의 텍스트 주석 처리



//

한줄 텍스트 주석 처리


// 한 줄 주석문








Constant

IsRowGrandTotal

데이터 셀의 Row 헤더가 총계인지 여부

bool

Switch(IsRowGrandTotal, Average( [Y_VAL])

        , IsColGrandTotal, Average( [Y_VAL])

        , IsRowTotal,  Average( [Y_VAL])

        , IsColTotal , Average( [Y_VAL])

         ,Sum( [Y_VAL]) )

IsColGrandTotal

데이터 셀의 Column 헤더가 총계인지 여부

bool


IsRowTotal

데이터 셀의 Row 헤더가 소계인지 여부

bool


IsColTotal

데이터 셀의 Column 헤더가 소계인지 여부

bool


IsTotal

데이터 셀의 헤더가 소계인지 여부

bool


IsGrandTotal

데이터 셀의 헤더가 총계인지 여부

bool


IsTotalOrGrandTotal

데이터 셀의 헤더가 총계 또는 소계 인지 여부

bool


CELL_VALUE

데이터 셀의 값

object


FILED_KEY

데이터 셀의 데이터 필드의 키값

string


FILED_LABEL

데이터 셀의 데이터 필드의 표시명

string


FALSEBoolean 유형의 False를 반환합니다.


Boolean


TRUEBoolean 유형의 true 을 반환합니다.
NULLnull 객체를 반환합니다.


Measure 필드가 여러 개일 경우 해당 Measure 필드의 개수 만큼 반복 되게 됩니다. 이 때, 사용자의 요구 사항에 따라 일부 경로에 존재하는 Measure를 숨겨야 하는 경우가 발생하게 되면,

수식2를 이용하여 보고서 수정이 가능합니다.


  • No labels