Kettle 使用Json输入

 import java.math.BigDecimal;
 private static final String JD="jd";
 private static final String WD="wd";

 public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{
        if(first) {
            first = false;
        }
        Object[] r = getRow();
        if (r == null) {
            setOutputDone();
            return false;
        }

        //维度
        String wdstr = get(Fields.In, WD).getString(r);
        //经度
        String jdstr = get(Fields.In, JD).getString(r);
        if(!isArray(wdstr)||!isArray(jdstr)){
           return true;
        }
        get(Fields.Out, WD).setValue(r, getCovNewVlaue(wdstr));
        get(Fields.Out, JD).setValue(r, getCovNewVlaue(jdstr));

        putRow(data.outputRowMeta, r);
        return true;
  }

 private double getCovNewVlaue(String dustr) {
        String replace =  dustr.replace("N", "").replace("E", "");
        String[] duArray = replace.split(" ");
        double duValue = Double.parseDouble(duArray[0]);
        double minuteValue = Double.parseDouble(duArray[1]);
        double secondValue = Double.parseDouble(duArray[2]);

        BigDecimal minute = BigDecimal.valueOf(minuteValue).divide(BigDecimal.valueOf(60), 10,
                BigDecimal.ROUND_HALF_DOWN);
        BigDecimal second = BigDecimal.valueOf(secondValue).divide(BigDecimal.valueOf(3600), 10,
                BigDecimal.ROUND_HALF_DOWN);
        BigDecimal newVlaue = BigDecimal.valueOf(duValue).add(minute).add(second);
        return newVlaue.doubleValue();
    }

 private boolean isArray(String dustr){
        return dustr.split(" ").length==1?false:true;
 }

原文地址:https://www.cnblogs.com/justuntil/p/8349628.html

时间: 2024-08-30 13:21:15

Kettle 使用Json输入的相关文章

Kettle解析JSON错误

最近公司要从聚石塔上抽取数据,其中有JSON格式数据,所以学习一下Kettle解析JSON,碰到小小问题,记录一下: (1) 2015/07/15 15:22:48 - trade_detail.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Unexpected Error : org.pentaho.di.core.exception.KettleException: 2015/0

kettle execl 表输入

kettle execl 表输入. 拖入execl表输入空间,配置如下! 注意点:如果execl配置没问题的话点击显示文件名称,文件应该能正式显示出来,选中的文件那个表格必须有数据 在此输入图片描述

ETL工具kettle的csv输入和excel输入

实际工作中我们可能回经常将excel或者csv的数据导入到数据库中,这里讲下怎么通过kettle进行导入;首先说下这两种格式的区别:CSV是文本文件,用记事本就能打开,XLS是二进制的文件只有用EXCEL才能打同时CSV (*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值.工作表中所有的数据行和字符都将保存.数据列以逗号分隔,每一行数据都以回车符结束.如果单元格中包含逗号,则该单元格中的内容以双引号引起.如果单元格显示的是公式而不是数值,该公式将转换为文本方式.所有格式.图形

GO语言的json输入(反序列化)之interfac{}存储

// code_032_json_unmarshal_to_interface project main.go package main import ( "encoding/json" "fmt" ) func main() { b := []byte(`{ "company":"tianmei", "subjects":[ "Go", "C++", "P

kettle 利用 HTTP Client 获取猫眼电影API近期上映相关信息,并解析json输出为Excel文件

前言 Kettle 除了常规的数据处理之外,还可以模拟发送HTTP client/post ,REST client. 实验背景 这周二老师布置了一项实验: 建立一个转换,实现一个猫眼API热映电影的json,生成为xls文件. 猫眼的热门电影接口为:?http://m.maoyan.com/#movie,从里面找到API接口:http://m.maoyan.com/ajax/movieOnInfoList.需要获取里面的:电影名.评分.主演.信息. 处理流程 我使用的是kettle的HTTP

Kettle变量和自定义java代码的实例应用

1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得简单,下面以数据库为例说明这类配置的使用. (1)      首先要找到配置文件,不同的操作系统路径也不一样,本人用win7进行开发,配置文件的路径为"C:\Users\chenpeng\.kettle\kettle.properties",如下: (2)      配置文件中的具体配置如

使用httperrequest,模拟发送及接收Json请求

使用httpreques\Json-Handle\tcpdump\wireshark工具进行,抓取手机访问网络的包,分析request及response请求,通过httprequester来实现模拟发包及接收. 对于手机开发,分析手机访问网络数据,十分必要! 1.使用tcpdump包抓取网络数据包,手机要root,抓取过程请看: 1. 手机要有root权限 2. 下载tcpdump http://www.strazzere.com/android/tcpdump 3. adb push c:\w

SQLMAP注入json格式数据

当注入点在json格式数据中时,SQLMAP可能会犯傻,导致找不到注入点, 使用-p指定参数又不好指定json格式中的字段, 这个时候就需要人工修改一下注入的json数据,使SQLMAP能够找到注入参数: 导致SQLMAP犯傻的json输入类似如下: {"name":["string"]} 将其修改为以下两种形式都可以使SQLMAP找到该注入点(而不是直接跳过): // 方式1,加* {"name":["string*"]} 

kettle中实现动态SQL查询

kettle中实现动态SQL查询 在ETL项目中,通常有根据运行时输入参数去执行一些SQL语句,如查询数据.本文通过kettle中的表输入("table input")步骤来说明动态查询.参数查询.示例代码使用内存数据库(H2),下载就可以直接运行,通过示例学习更轻松. SQL查询语句中占位符绑定字段值 第一个接近动态语句的是大家熟悉的从SQL代码中执行,开始写一个SQL查询,包含一些占位符,然后绑定值到占位符,使之成为一个有效的查询并执行.根据需要可以绑定多个值并循环执行.本示例的名