OlapGrid에서 분석항목 / 데이터 항목을 신규로 작성하고, 데이터 값을 정의할 때 사용합니다.
- 신규생성항목 : 계획비 = 판매실적 / 판매계획
수식 편집기
① 계산 필드 이름 ② 수식 편집 함수 표시 창 ③ 수식 작성 창 ④ 함수 도움말 창
1) 제공 정보
- 계산식 정의를 위한 필드정보, 함수, 연산자들의 목록을 제공
- Fomula 창에서 계산 수식을 정의
- 선택한 항목(필드정보, 함수, 연산자)에 대한 도움말 제공
2) 수식 편집기 사용 메뉴
- [ 팝업메뉴 ] - [ 계산 필드 추가 ]
- [ 팝업메뉴 ] - [ 사용자 정의 항목] - [ 필더 수식 ]
- [ 팝업메뉴 ] - [ 사용자 정의 항목 ] - [ 집계수식 ]
- [ 팝업메뉴 ] - [ 디자인 ] - [ 필드 ] - [ 수식 ]
- [ 팝업메뉴 ] - [ 디자인 ] - [ 필드 ] - [ 수식2 ]
- [ 팝업메뉴 ] - [ 디자인 ] - [ 스타일 ] - [ 조건부 서식 ]
팝업 메뉴를 이용한 수식 편집 사용
수식 편집기 함수 - 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부터 시작) | 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를 이용하여 보고서 수정이 가능합니다.