페이지 트리
□ OLAP Write-Back(배분 기능) 설명서
1. 컨트롤 기본 옵션의 설정하기
OlapGrid에서 Write-Back기능을 사용하시려면 아래의 옵션들을 통해서 기능을 활성화 하고 상세 동작을 제어하실 수 있습니다.
객체하위 객체속성명설명
OlapGridOptions(bool) EnableWriteBackWrite-Back 기능을 활성화 할지 여부를 설정 합니다.
(bool) EnableCreateRecord입력 대상 셀에 레코드가 없는 경우 편집을 허용하고 해당 셀에 헤더(Row, Column)의 텍스트를 기준으로 자동으로 레코드를 생성할지 여부를 설정합니다. (이 설정이 false 일 경우 데이터가 없는 셀은 수정하실 수 없으며, true일 경우 서버에서 배분 시 자동으로 생성된 레코드는 현재 행/열에 배치된 항목의 값만 설정됩니다.)
(bool) ManualUpdate사용자가 데이터를 변경할 경우 서버에서 처리하는 자동 배분 기능을 수동으로 동작할지 여부를 설정합니다. (데이터가 많을 경우 이 옵션을 활성화하고 여러 개의 셀의 값을 편집한 뒤 "CalculateWriteBack" 함수를 호출하여 수정된 셀 모두를 한번에 서버에서 계산하도록 하여 편집 속도를 개선할 수 있습니다.)
<샘플 소스>
2. 필드별 상세 배분 옵션 설정하기
데이터셀을 수정 시 수정된 값을 데이터셀의 상세 레코드에 배분작업을 하기위한 규칙은 아래의 옵션으로 조정 가능합니다.
객체하위 객체속성명설명
OlapGridOlapField(int) EditMethod수정된 데이터를 레코드별로 배분하는 방식을 설정합니다. (3. 배분 방식별 설명을 참조) 1 : 가중치 배분 2 : 균등배분 3 : 가중치 배분(force) 4 : 균등배분 배분(force) 90 : 입력값으로 모든 하위 항목을 업데이트 합니다.
(int) EditPrecision데이터 배분 시 데이터의 최대 소수점 자릿 수를 설정합니다.
(string) EditMethodRef배분 방식이 가중치일 경우 가중치에 해당하는 값을 가지는 필드의 이름을 설정합니다.
<샘플 소스>
3. 배분 방식별 처리 규칙
3.1. 가중치 배분
가중치 배분에서 가중치 기준 필드를 정의하지 않은 경우는 수정 대상 필드가 가지고 있는 값을 기준으로 가중치를 계산 합니다.
<수정 전 데이터><계산 수식>
시도구군매출 목표<수정 값>{가중치}{배분 값}{계산 결과}
서울 합계 1,500 2,000 ={구군별 값}/{서울 합계}={증감} * {가중치}={원본} + {배분 값}
서울강남구 500 0.33 167 667
서초구 400 <증감>0.27 133 533
관악구 300 500 0.20 100 400
도봉구 200 0.13 67 267
노원구 100 0.07 33 133
2,000
3.2. 균등 배분
균등 배분은 증감한 값을 레코드 수량으로 나누어서 배분하며, 이때 배분 이후에 값이 음수가 되지 않도록 자동 조정 합니다.
<수정 전 데이터><계산 수식>
시도구군매출 목표<수정 값>{배분 값}{계산 결과}
서울 합계 1,500 2,000 ={증감} / {레코드 수량}={원본} + {배분 값}
서울강남구 500 100 600
서초구 400 <증감> 100 500
관악구 300 500 100 400
도봉구 200 100 300
노원구 100 100 200
2,000
3.3. 가중치 배분 (force)
가중치 배분을 수행하되 수정하기 전의 값은 무시되고 변경된 전체 값을 기준으로 재 배분 합니다.
<수정 전 데이터><계산 수식>
시도구군매출 목표<수정 값>{가중치}{배분 값}{계산 결과}
서울 합계 1,500 2,000 ={구군별 값}/{서울 합계}={수정값} * {가중치}={배분 값}
서울강남구 500 0.33 667 667
서초구 400 0.27 533 533
관악구 300 0.20 400 400
도봉구 200 0.13 267 267
노원구 100 0.07 133 133
2,000
3.4. 균등 배분 (force)
수정된 최종 값으로 전체 레코드에 동일한 값으로 배분하며, 수정되기 전의 값은 무시되고 최종 값으로 변경됩니다.
<수정 전 데이터><계산 수식>
시도구군매출 목표<수정 값>{배분 값}{계산 결과}
서울 합계 1,500 2,000 ={수정값} / {레코드 수량}={배분 값}
서울강남구 500 400 400
서초구 400 400 400
관악구 300 400 400
도봉구 200 400 400
노원구 100 400 400
2,000
3.5. 입력값으로 동기화
입력한 값으로 모든 하위 항목의 값을 동기화 합니다.
<수정 전 데이터><계산 수식>
시도구군매출 목표<수정 값>{배분 값}{계산 결과}
서울 합계 1,500 2,000 ={수정값}={합계 값}
서울강남구 500 2,000 2,000
서초구 400 2,000 2,000
관악구 300 2,000 2,000
도봉구 200 2,000 2,000
노원구 100 2,000 2,000
10,000
4. Write-Back 연산 및 저장
Write-Back의 연산및 상태 관리는 서버에 캐시 파일로 관리하며, 해당 캐시는 현재 사용자의 OlapGrid별로 고유한 코드로 관리됩니다.
캐시는 사용자가 새로 조회를 하면 다시 생성됩니다. 새로고침 전에 피벗팅, 필터링 등의 OlapGrid 고유 작업시에는 캐시가 유지 됩니다.
데이터베이스에 최종 수정을 위해서는 해당 business를 ServerScript로 작성해야 합니다.
4. Server Script 작성 가이드
수정된 데이터를 대상 데이터 베이스에 업데이트 하기 위해서는 ServerScript를 작성하시면 되며,
이때 주의 사항은 수정된 데이터의 레코드 개수가 많을 수 있으므로 전체를 메모리에 올리지 않고 행별로 SQL을 수행 합니다.
end of document