pentaho报告如何将字段名称显示为标题

时间:2014-05-29 00:21:16

标签: get field reporting pentaho names

我有一张桌子可以通过Pentaho显示,其中包含1个月的数据。列的标题将是日期。所以会有31列。我需要为每列的每个标题设置正确的日期,它必须由Pentaho自动完成,因为我不知道用户选择了哪个月。

xmlid   title         2014-03-01   2014-03-02   2014-03-03   2014-03-04 
Gross   Doughnut      3222.91      5749.22      4926.06      4713.06
GST     Doughnut      0.00         0.00         0.00         0.00      
Net     Doughnut      3222.91      5749.22      4926.06      4713.06

通过在“首选项”中启用“在报表设计器的字段选择器中显示索引列”...,我已成功显示数据而不使用字段名称...您可以按列位置引用报表元素。

但是我找不到显示标题的方法。

1- $(::column::1)

2- String[] colNames = (String[])dataRow.getColumnNames();
return colNames[1];

我已尝试过上述方法,但没有把我带到任何地方。

$(:: column :: 1)==>这将显示打印的数据NOT sql查询标题。

getColumnNames()==>我可以通过dataRow访问参数但是这个方法没有任何帮助,尽管在互联网上告诉我在dataRow下存在getColumnNames()方法。

PS:pivot在sql server中应用。我知道Pentaho中存在交叉表,但是速度非常慢。

感谢任何帮助。 谢谢 盎司。

2 个答案:

答案 0 :(得分:0)

找到了解决方案,但仍然没有为我做这项工作。数据集查询树中未列出已轮转的动态字段。

尝试: 创建一个BSF函数并在下面的表达式部分

中添加代码
import org.pentaho.reporting.engine.classic.core.DataRow;
String colNames = dataRow.getColumnName(15);
return colNames;

将功能拖放到报表上的某个位置。

第15列打印xmlid,其他动态列正在显示 - > ::柱:: XX

此致 盎司。

答案 1 :(得分:0)

我找到了我的一个要求的解决方案,它对我来说很好。 通过使用以下代码创建Bean Shell脚本函数:

这将为当前数据集提供列标题。

resultSet = runtime.getData();
columnName= resultSet.getColumnName(i);
return columnName; 

并将其放在标签或文本框中。

获取报告的参数名称和环境变量

String colNames = dataRow.getColumnName(i);
return colNames;