将行名添加到 cde 表组件

Posted

技术标签:

【中文标题】将行名添加到 cde 表组件【英文标题】:Add row name to cde table component 【发布时间】:2016-06-27 15:15:55 【问题描述】:

我的 Pentaho CDE 仪表板中有一个表格组件,数据源是 sql。我想做一张这样的桌子

enter image description here

我需要添加一列作为该表的行名,并在列标题的顶部添加一行。 我在这里找到了一个方法: Table Component SubColumns 添加标题,但是如何在其他列之前添加一列?

【问题讨论】:

【参考方案1】:

我认为执行额外列部分的一种聪明方法是在从查询中检索到查询结果对象后修改它,以便您根据需要添加列和行。您可以在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 不起作用) ,但我建议的代码应该可以解决问题。

【讨论】:

以上是关于将行名添加到 cde 表组件的主要内容,如果未能解决你的问题,请参考以下文章

使用 write.csv 时防止将行名写入文件

将行数据从Angular Material表显示到另一个组件中

将行添加到多个工作表时清除错误

读取文件时指定行名

在 pentaho 的 CDE 仪表板的表组件中创建新列,表示 2 列的总和

在 Vue 中使用 v-for 将行添加到一个表而不是另一个表