0
我在Pentaho CDE儀表板中有一個表組件,而數據源是sql。我想打一個表像這樣將行名添加到cde表組件
我需要添加一列列名此表和列標題的上面一排。 我在這裏找到了一個方法: Table Component SubColumns 要添加標題,但我怎麼能在其他列之前添加一列?
我在Pentaho CDE儀表板中有一個表組件,而數據源是sql。我想打一個表像這樣將行名添加到cde表組件
我需要添加一列列名此表和列標題的上面一排。 我在這裏找到了一個方法: Table Component SubColumns 要添加標題,但我怎麼能在其他列之前添加一列?
我認爲一個聰明的方式來做額外的列部分將是從查詢中檢索後修改查詢結果對象,以便您根據需要添加列和行。您可以在PostFetch
回調函數,該函數將查詢結果對象作爲第一個參數做到這一點:
function yourTableComponentPostFetch(queryResult) {
// Let's say you have an array of row names
var rowNames = ['Title1', 'Title2', ... ];
// Add a "title" column for every row
queryResult.resultset.forEach(function (row, idx) {
// Push it at the beginning of the row array
row.unshift(rowNames[idx]);
});
// Change metadata description of columns to reflect this new structure
queryResult.metadata.unshift({
colName: 'Title',
colIndex: -1, // this makes sense when reindexing columns below ;)
colType: 'String'
});
// One last re-indexing of metadata column descriptions
queryResult.metadata.forEach(function (column, idx) {
// The title added column will be 0, and the rest will rearrange
column.colIndex++;
});
}
唯一棘手的部分是有關修改,因爲你得到有效改變的數據集的結構的元數據的一部分,確保queryResult對象在原地更新,而不是僅僅更改其引用(queryResult = myNewQueryResult
不起作用),但我提出的代碼應該做到這一點。