public build()

in src/dataViewBuilder/matrixBuilder.ts [572:606]


    public build(): powerbi.DataView {
        // Build a column hierarchy based on metadata
        let columnHierarchyMetadata: HierarchyMetadata = { levels: [] };

        if (this.columnGroupingOptions) {
            columnHierarchyMetadata = this.buildHierarchyMetadata(this.columnGroupingOptions);
            // columnHierarchyMetadata = this.buildHierarchyMetadata(this.columnGroupingOptions);
        }

        // Build measures level
        // Append the measure level to column hierarchy
        let measureMetadata: LevelMetadata;
        if (this.valuesOptions) {
            measureMetadata = this.buildLevelMetadata(this.valuesOptions, true);
            columnHierarchyMetadata.levels.push(measureMetadata);
        }

        // Build a row hierarchy based on metadata
        let rowHierarchyMetadata = this.buildHierarchyMetadata(this.rowGroupingOptions);

        // Build nodes from data
        let matrix = this.readData(rowHierarchyMetadata, columnHierarchyMetadata, measureMetadata, this.table);

        return {
            metadata: {
                columns: [
                    ...flatMap(rowHierarchyMetadata.levels, (level) => level.sources),
                    ...flatMap(columnHierarchyMetadata.levels, (level) => level.sources),
                    // ...measureMetadata.sources,
                ],
                objects: this.objects,
            },
            matrix: matrix,
        };
    }