OlapGrid is used when creating new analysis items or data items and defining their data values.
- New Item Creation : Planned Ratio = Actual / Sales Plan
Formula Editor
① Calculated Field ② Formula Editing Function Display Panel ③ Formula Input Panel ④ Function Help Panel
1) Provided Information
- A list of fields, functions, and operators for defining calculation formulas
- Define calculation formulas in the Formula panel
- Help is provided for the selected item (field, function, operator)
2) Formula Editor User Guide
- [ Popup Menu ] - [ Create calculated field ]
- [ Popup Menu ] - [ Custom Items ] - [ Filter Equations ]
- [ Popup Menu ] - [ Custom Items ] - [ Aggregation Formula ]
- [ Popup Menu ] - [ Design ] - [ Field ] - [ Formula ]
- [ Popup Menu ] - [ Design ] - [ Field ] - [ Header Visibility Formula ]
- [ Popup Menu ] - [ Design ] - [ Style ] - [ Conditional Formatting ]
Using Formula Editor via Popup Menu
Formula Editor Function - Aggregate Functions
Category | Name | Description | Return Type | Usage |
---|---|---|---|---|
Aggregate | Average | Returns the average of the specified field. | Double | Average([MEASURE]) Average(100, 120, 100, 120) Average( Sum([MEASURE]), 120, 100, 120) |
Sum | Returns the total (sum) of the specified field. | Double | SUM([Sales]) SUM( SUM([Sales]) + MAX([Difference]) ) | |
Count | Returns the count of the specified field. | Double | Count([MEASURE]) Count, 120, 100, 120) Count( Sum([MEASURE]), 120, 100, 120) | |
Max | Returns the maximum value. Supports numeric and string values. For strings, the last value in ascending order is returned. | Object | Max([Sales]) Max([FIELD_NAME]) Max("Hello", "Abc", "Old", "ZIndex") Max( Max([FIELD_NAME]), 120, 100, 120) | |
Min | Returns the minimum value. Supports numeric and string values. For strings, the first value in ascending order is returned. | Object | Min([Sales]) Min([FIELD_NAME]) Min("Hello", "Abc", "Old", "ZIndex") Min( Max([FIELD_NAME]), 120, 100, 120) | |
DistinctCount | Returns the count of unique (distinct) values from the field in the dataset. | Double | DistinctCount([Product Group]) | |
Condition | IF | Performs a conditional check. Returns trueValue if the condition is true, otherwise returns falseValue. | Object | IF( 1 > 2 , "1 is greater than 2" , "1 is less than 2") |
SWITCH | Sequentially evaluates conditions and returns the value of the first true condition. A default value is returned if all are false. | Object | Switch( ToString(getRecordValue([PRODUCT])) == "BW1000" , Sum([H_VAL]) , ToString(getRecordValue([PRODUCT])) == "BW2000" , Sum([Y_VAL]) , Sum([Q_VAL]) ) |
Formula Editor Function - Olap Function
Category | Name | Description | Return Type | Usage |
---|---|---|---|---|
Olap | Area | 전달 받은 필드의 배치된 영역을 반환합니다. (Row:1,Column:2,Filter:3,Data:4) | Integer | Area([COMPANY]) |
AreaIndex | 전달 받은 필드의 배치된 영역에서의 Index를 반환합니다. (Index 값은 0부터 시작) | Integer | AreaIndex([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 | 셀에 이미지를 표현합니다. 이미지의 경로는 이미지 업로더로 업로드된 이미지의 이름을 지정합니다. | object | IF(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 : 일반 셀) | Boolean | IsHeaderTotal([Field]) | |
InDimension | 팩트 테이블과 팩트 테이블 간의 1:N 관계에서 1의 특정 값을 중복 적용하는 것을 방지합니다. | integer | InDimension("[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 | ||
FALSE | Boolean 유형의 False를 반환합니다. | Boolean | ||
TRUE | Boolean 유형의 true 을 반환합니다. | |||
NULL | null 객체를 반환합니다. |
Measure 필드가 여러 개일 경우 해당 Measure 필드의 개수 만큼 반복 되게 됩니다. 이 때, 사용자의 요구 사항에 따라 일부 경로에 존재하는 Measure를 숨겨야 하는 경우가 발생하게 되면,
수식2를 이용하여 보고서 수정이 가능합니다.