`

pentahao

    博客分类:
  • J2EE
 
阅读更多
1 在主报表上 放了很多子报表 子报表采用的是inline风格 子报表里面放了图形和标题之类的 因此要计算下图形加标题的宽和长。把子报表的宽和长也设置那么大。
这样就能在主报表页面上看得到布局了,水平方向和垂直方向都能对齐。
2 图形的柱状图的max-bar-width 1=100% 大于1会自动根据图形宽度自动调整大小. 反之小于1就手动控制其宽度.
3 图形的柱状图的 3D=TRUE 也能显示 SHOW LABLES的值  当它受限制于BAR的宽度 和高度.



最近一直使用Pentaho 的 spoon  进行数据挖掘的ETL数据处理 在使用其中的 "If field value is null "的插件的时候,发现当我的csv 的某个字段值 为空或者null 的时候该判断失效,总不起作用后来google 到 pentahao 的网站看到有人问同样的问题,内容大概如下:
=========================================================================
PDI 3.2 has this new step "If field value is null".

I am trying to use it in a transformation:

Access Input -> Add constants -> If field value is null -> Table output Mapping -> Table output (which is a MySQL table)

For those fields in the MySQL table that accept NULL I'd like to change to UNDEFINED so this step seems ideal.

So in the step I select "Select fields" and specify a handful of fields under the Fields section and specify the "Replace by value" value. I have specified and not specified a "Conversion mask (Date)". Is the Conversion mask necessary? In all cases I still have NULL written into fields in the MySQL table. All the MySQL fields that accept NULL are varchars.

There is not much on this step in the wiki:

http://wiki.pentaho.com/display/EAI/...+value+is+null

A previous post about this step:

http://forums.pentaho.org/showthread.php?t=70745

doesn't conclude with any advice pertaining to this particular step.

Am I doing something wrong?

Thanks in advance.

Cheers
=================================================================================

后来看到一个回复的帖子说这个是个bug 将在3.2 以上版本或者4.0进行更新,而目前能在官网下载的只有3.2.0的版本
那我们该怎么办? 幸好spoon 是开源软件 ,可以下载源代码 并找到 “If field value is null ” 插件所对应的类文件
org.pentaho.di.trans.steps.ifnull.IfNull.java  在  replaceNull 方法设置断点进行跟踪得知 第213行
public void replaceNull(Object[] row, int i) throws Exception
{
 

 
  if(row[i]==null)
  {
   // DO CONVERSION OF THE DEFAULT VALUE ...
   // Entered by user
   ValueMetaInterface targetValueMeta = data.outputRowMeta.getValueMeta(i);
   ValueMetaInterface sourceValueMeta = data.convertRowMeta.getValueMeta(i);
   if(!Const.isEmpty(data.realconversionMask)) sourceValueMeta.setConversionMask(data.realconversionMask);
   row[i] = targetValueMeta.convertData(sourceValueMeta, data.realReplaceByValue);
   }
  
}
当 csv 文件里的某个值虽然为空或者空字符串的时候  Object[] row 的数组里的对象并不为 null  而对象里的值实际上为null
所以我们要利用 ValueMetaInterface.isNull() 来判断,接下来我们修改程序结构 红色部分是修改的
public void replaceNull(Object[] row, int i) throws Exception
{
 
  ValueMetaInterface targetValueMeta = data.outputRowMeta.getValueMeta(i);
  ValueMetaInterface sourceValueMeta = data.convertRowMeta.getValueMeta(i);
 
  if(row[i]==null||sourceValueMeta.isNull(row[i]))
  {
   // DO CONVERSION OF THE DEFAULT VALUE ...
   // Entered by user
   if(!Const.isEmpty(data.realconversionMask)) sourceValueMeta.setConversionMask(data.realconversionMask);
   row[i] = targetValueMeta.convertData(sourceValueMeta, data.realReplaceByValue);
   }
  
}
编译后再次运行 一切正常。
补充,另外请修改 org.pentaho.di.core.row.ValueMeta.java 的
public boolean isNull(Object data) throws KettleValueException 的 2825行
将 原来的 if (((String)value).length()==0) return true;
替换成
          String str=String.valueOf(value); if (str.length()==0) return true;
因为某种情况下String 类型强制转换会造成异常错误,推荐使用 String.valueOf();




分享到:
评论

相关推荐

    PETSHOP4.0 详细分析

    《PETSHOP4.0 详细分析》是一份深入解析PETSHOP4.0系统的重要资源,对于想要了解或学习ASP.NET技术、尤其是PetShop这个经典示例应用的人来说,它具有极高的价值。PetShop是一个基于ASP.NET框架的网上宠物商店应用...

    qt5-qdbusviewer-5.9.7-1.el7.x64-86.rpm.tar.gz

    1、文件内容:qt5-qdbusviewer-5.9.7-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qt5-qdbusviewer-5.9.7-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    WDiscOOD:通过白化线性判别分析进行分布外检测.zip

    WDiscOOD:通过白化线性判别分析进行分布外检测,含有完整的代码和论文

    realmd-0.16.1-12.el7-9.1.x64-86.rpm.tar.gz

    1、文件内容:realmd-0.16.1-12.el7_9.1.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/realmd-0.16.1-12.el7_9.1.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    TMC5160与TMC5130高性能步进电机驱动代码详解:稳定运行,原理图赠送,注释详尽,支持级联移植便捷,TMC5160、TMC5130高性能步进电机驱动代码 代码都已长时间验证,稳定可靠运行 图

    TMC5160与TMC5130高性能步进电机驱动代码详解:稳定运行,原理图赠送,注释详尽,支持级联移植便捷,TMC5160、TMC5130高性能步进电机驱动代码 代码都已长时间验证,稳定可靠运行 图里资料就是到手资料 简介: 德国TMC步进电机驱动代码 送你OrCAD或者AD版本原理图 自己整个重新写的代码,注释详细 支持多个TMC5160级联 调用很简单,移植也很方便 部分代码可以看图 ,TMC5160; TMC5130; 步进电机驱动代码; 稳定可靠; 原理图; 注释详细; 多级联支持; 移植方便。,"TMC5160/TMC5130高性能步进电机驱动代码,稳定可靠,易移植的代码解决方案"

    Java毕业设计-ssm-vue-高校学生实习管理系统(源码+sql脚本+32页零基础部署图文详解+31页论文+12页答辩+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:配套答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    汇编工具 nasm 版本 2.16 Windows平台

    汇编工具 nasm 版本 2.16 Windows平台

    六自由度机械臂轨迹规划:三次、五次、七次多项式样条插值及圆弧轨迹源码注释,可按需修改数据点及机械臂数据,适合学习参考 ,六自由度机械臂三套代码-三次 五次 七次多项式样条插值曲线、五次B样条曲线插值

    六自由度机械臂轨迹规划:三次、五次、七次多项式样条插值及圆弧轨迹源码注释,可按需修改数据点及机械臂数据,适合学习参考。,六自由度机械臂三套代码-三次 五次 七次多项式样条插值曲线、五次B样条曲线插值-2 轨迹规划,圆弧轨迹,机器人工具箱,带源码注释。 起始点、中间点、终止点可自行修改。 (一共三套代码。 机械臂数据可自行安需修改,适合学习) ,关键词:六自由度机械臂;三套代码;三次、五次、七次多项式样条插值曲线;五次B样条曲线插值;轨迹规划;圆弧轨迹;机器人工具箱;源码注释;起始点、中间点、终止点可修改;机械臂数据可修改;适合学习。,《六自由度机械臂轨迹规划三套代码学习:五次与七次多项式插值曲线、五次B样条圆弧轨迹生成工具集(含注释源码)》

    基于模型参考自适应系统的改进滑模观测器:反电势优化减小抖振,提升转速与位置估计精度,基于模型参考自适应系统的改进滑模观测器 1.采用基于模型参考自适应系统的反电势优化方法,对SMO中低通滤波后的反电势

    基于模型参考自适应系统的改进滑模观测器:反电势优化减小抖振,提升转速与位置估计精度,基于模型参考自适应系统的改进滑模观测器 1.采用基于模型参考自适应系统的反电势优化方法,对SMO中低通滤波后的反电势进一步优化,从而减小抖振,提高转速和位置估计精度; 2.提供算法对应的参考文献和仿真模型。 ,关键词:模型参考自适应系统; 反电势优化; 滑模观测器; 抖振减小; 转速和位置估计精度; 算法; 参考文献; 仿真模型; 改进。,基于模型参考自适应的改进滑模观测器:反电势优化与仿真研究

    qt5-qtdeclarative-devel-5.9.7-1.el7.x64-86.rpm.tar.gz

    1、文件内容:qt5-qtdeclarative-devel-5.9.7-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qt5-qtdeclarative-devel-5.9.7-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    系统URL整合系列视频二(界面原型)-配套文档

    # 此资源为Azure原型原始设计文档(底片)--视频中的原型设计底稿。 #(全国)大型分布式系统Web资源URL整合需求界面原型讲解。当今社会各行各业对软件系统的web资源访问权限控制越来越严格,控制粒度也越来越细。安全级别提高的同时也增加了使用成本,譬如让权限申请越来越繁琐。本文讲解的界面原型:用于实现在申请少量web资源权限的条件下访问更多的web资源的需求

    Screenshot_20250201_221248_com.tencent.tmgp.pubgmhd.jpg

    Screenshot_20250201_221248_com.tencent.tmgp.pubgmhd.jpg

    KVM 虚拟化win10PE 带virtio 驱动

    KVM 虚拟化win10PE 带virtio 驱动

    Pyraformer 用于长程时间序列建模与预测的低复杂度金字塔式注意力机制.zip

    Pyraformer 用于长程时间序列建模与预测的低复杂度金字塔式注意力机制,含有完整的代码和论文

    Java毕业设计-ssm-vue-养老院老人健康监护平台(源码+sql脚本+32页零基础部署图文详解+29页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    Java毕业设计-ssm-vue-海鲜自助餐厅系统(源码+sql脚本+32页零基础部署图文详解+35页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    qimageblitz-devel-0.0.6-7.el7.x64-86.rpm.tar.gz

    1、文件内容:qimageblitz-devel-0.0.6-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qimageblitz-devel-0.0.6-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    Matlab+Yalmip编程实现三微网优化调度:降低成本,约束微网内主体与电网交互,共出图17张,三微网优化matlab+yalmip 采用matlab+yalmip编程,实现三个微网的优化调度,分

    Matlab+Yalmip编程实现三微网优化调度:降低成本,约束微网内主体与电网交互,共出图17张,三微网优化matlab+yalmip 采用matlab+yalmip编程,实现三个微网的优化调度,分别包括微网内燃气轮机、燃料电池、储能等主体约束,还包括微网间互供以及和电网间购电约束,程序以成本最低作为目标,有对应的参考资料,出图共17张 ,核心关键词: 1. MATLAB; 2. YALMIP; 3. 微网优化调度; 4. 燃气轮机; 5. 燃料电池; 6. 储能; 7. 微网间互供; 8. 电网间购售电约束; 9. 成本最低; 10. 出图; 11. 参考资。,"Matlab+Yalmip编程实现三微网优化调度:成本最低的约束管理与可视化"

    基于高斯混合模型聚类的风电场短期功率预测方案:优化分组与RBF神经网络验证,基于高斯混合模型聚类的风电场短期功率预测方法 说明:该方法结合数据分布特征,利用 GMM 聚类将大型风电场划分为若干机组群

    基于高斯混合模型聚类的风电场短期功率预测方案:优化分组与RBF神经网络验证,基于高斯混合模型聚类的风电场短期功率预测方法 说明:该方法结合数据分布特征,利用 GMM 聚类将大型风电场划分为若干机组群,借助贝叶斯信息准则指标评价,获得风电场内最优机组分组方案。 最后,基于径向基函数(radial basis function,RBF)神经网络的功率预测方法,验证所提聚类方法的有效性以及相较于其他聚类方法的优越性。 编程语言:MATLAB ,核心关键词:高斯混合模型聚类; 风电场短期功率预测; GMM 聚类; 机组群划分; 贝叶斯信息准则指标评价; 径向基函数神经网络; 功率预测方法验证; 聚类方法优越性; MATLAB。,基于高斯混合模型聚类的风电场RBF神经网络功率预测方法研究

    Java毕业设计-ssm-vue-小型企业办公自动化系统(源码+sql脚本+32页零基础部署图文详解+42页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

Global site tag (gtag.js) - Google Analytics