[]
        
(Showing Draft Content)

수식

테이블 시트 는 데이터 소스 스키마에서 계층형 데이터와 함께 사용할 수 있는 내장 수식을 지원합니다.

필드에 대한 수식을 지정하려면 데이터 소스 스키마의 hierarchy 옵션 내에서 summaryFields 옵션을 사용할 수 있습니다.

summaryFields 속성은 GC.Data.IHierarchySummaryFieldCollection 인터페이스로부터 상속됩니다.

다음 섹션에서는 계층 기반 데이터 수식의 다양한 유형을 설명합니다.

CHILDREN

CHILDREN 수식은 부모 레코드에서 levelOffset 단계 떨어진 자식의 fieldName으로 지정된 값을 가져올 때 사용됩니다. 자식과 부모 간의 단계 수는 levelOffset 값으로 나타냅니다.

만약 levelOffset이 현재 레코드와 가장 낮은 자식 간의 거리보다 크면 데이터를 가져올 수 없습니다.

수식 정의는 다음과 같습니다:

CHILDREN(levelOffset, fieldName)

ONLYCHILDREN

ONLYCHILDREN 수식은 부모가 아닌 자식의 fieldName으로 지정된 값을 가져올 때 사용됩니다.

수식 정의는 다음과 같습니다:

ONLYCHILDREN(fieldName)

PARENT

PARENT 수식은 현재 레코드에서 levelOffset 단계 떨어진 부모의 fieldName으로 지정된 값을 가져올 때 사용됩니다.

부모와 현재 레코드 간의 단계 수는 levelOffset 값으로 나타냅니다.

만약 levelOffset이 현재 레코드와 최상위 부모 간의 거리보다 크면 데이터를 가져올 수 없습니다.

수식 정의는 다음과 같습니다:

PARENT(levelOffset, fieldName)

LEVEL

LEVEL 수식은 현재 레코드의 계층 레벨을 가져오는 데 사용됩니다.

수식 정의는 다음과 같습니다:

LEVEL()

LEVELROWNUMBER

LEVELROWNUMBER 수식은 현재 레코드가 부모 범위 내에서 몇 번째 행인지 가져오는 데 사용됩니다.

수식 정의는 다음과 같습니다:

LEVELROWNUMBER()


다음은 다양한 계층형 데이터 수식을 설정하는 코드 샘플입니다:

window.onload = function () {
    var spread = new GC.Spread.Sheets.Workbook(_getElementById('ss'), { sheetCount: 0 });
    initSpread(spread);
};

function initSpread(spread) {
    spread.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader;
    spread.clearSheets();
    var dataManager = spread.dataManager();
    initHierarchyFormulas(spread, dataManager);
}
function initHierarchyFormulas(spread, dataManager) {
    var table = dataManager.addTable("Table", {
remote: {
    read: {
url: getBaseApiUrl() + "/Hierarchy_Formula"
    }
},
schema: {
    hierarchy: {
type: 'Parent',
column: 'parent',
summaryFields: {
    'budget': '=SUM(CHILDREN(1,"budget"))'
}
    },
    columns: {
id: {
    isPrimaryKey: true,
},
    },
}
    });

    var sheet = spread.addSheetTab(0, "HierarchyFormula", GC.Spread.Sheets.SheetType.tableSheet);
    sheet.setDefaultRowHeight(40, GC.Spread.Sheets.SheetArea.colHeader);
    sheet.options.allowAddNew = false;

    table.fetch().then(function () {
var myView = table.addView("myView", [
    { value: '=CONCAT([@department]," (L",LEVEL(),"-",LEVELROWNUMBER(),")")', caption: 'Department', width: 265, outlineColumn: true },
    { value: "budget", width: 100, caption: 'Budget' },
    { value: '=IF(LEVEL()=0,"",[@budget]/PARENT(1,"budget"))', width: 120, caption: 'Percentage', style: { formatter: '0.00%' } },
    { value: "location", width: 100, caption: 'Location' },
    { value: "phone", width: 150, caption: 'Phone' },
    { value: "country", width: 100, caption: 'Country' },
]);
spread.suspendPaint();
sheet.setDataView(myView);
spread.resumePaint();
    });

위 코드를 실행하면 다음과 같은 출력 결과가 표시됩니다:

Ask ChatGPT

formulas-sjs.png