码迷,mamicode.com
首页 > 其他好文 > 详细

使用kettle把XML文档转换成数据表结构

时间:2014-09-02 15:55:33      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:kettle   etl kettle 权威   



使用kettleXML文档转换成数据表结构

 

      kettleGet data from xml 步骤和 XML Input Stream (StAX)步骤读取并解析xml文件。Get data from xml 步骤使用dom方式解析,比较消耗内存,当文件很大时,就不可取。XML Input Stream (StAX)步骤使用完全不同的方式解析大而复杂的文件,且能快速载入数据,所以建议使用该步骤。

      下面通过示例来展示如何使用该步骤,源xml文件内容如下:

<?xml version="1.0"?>

<timeseries>

    <measurementyear="2000">

        <!-- value ofitem named A in 2000 is 8.5 -->

        <itemname="A">8.5</item>

        <itemname="B">9.8</item>

    </measurement>

    <measurementyear="2001">

        <itemname="A">12.2</item>

        <itemname="B">9.4</item>

    </measurement>

    <measurementyear="2002">

        <itemname="A">11.1</item>

        <itemname="B">7.2</item>

    </measurement>

</timeseries>

 

解析成数据表的格式数据如下:

bubuko.com,布布扣

 

使用下面步骤去实现该功能

  1. xmlinput streamstax):流方式载入xml文档

  2. 过滤行:去除掉不相关的文档元素

  3. switch/case步骤:分离第一级(measurement)和第二级(item

  4. Rowdenormaliser:把第二级的多行转成一行(行专列)

  5. MergeJoin:合并子元素到第一级行(增加列)

示例可以从这里下载

bubuko.com,布布扣

 

Rowdenormaliser步骤

      最容易理解执行情况的方式,通过预览没步骤的执行结果(5.x版本可以直接查看数据流),下图显示该步骤的执行原理。

bubuko.com,布布扣

MergeJoin 步骤

      把两个来自不同数据源的流进行合并,其实和SQLjoin原理是一样的,只不过在kettle中是针对流数据,不是表数据。非常重要的是:流数据要根据键(join中使用的)排序,本列中第一步载入xml文件时,已经排序,所以不再选哟“sort rows”步骤。

bubuko.com,布布扣

使用kettle把XML文档转换成数据表结构

标签:kettle   etl kettle 权威   

原文地址:http://blog.csdn.net/neweastsun/article/details/39006487

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!