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,
};
}