我有一张桌子可以通过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中存在交叉表,但是速度非常慢。
感谢任何帮助。 谢谢 盎司。
答案 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;