• 从实例学Kettle(一):获取股票行情数据


    你买股票吗?你学Kettle吗?

    前面两个问题,任何一个回答“是”,本文都值得一读。如果两者都感兴趣,那么本文就值得细细品味。最好再花时间来分析一下获得的数据,从而多赚点银子。

    一、背景概述

    如果买股票,肯定会对股价感兴趣,那可都是真金白银啊!如果看中了一家上市公司,过去每一个开盘日的股价如何?有何规律可循?什么价格值得买入?什么价格要卖出?这一系列问题,肯定是每个股民都曾经苦苦思索过的。您可能学过K线图,研究过各类计算公式,甚至学过概率统计。但一切分析的前提,是要有数据。

    如果学习Kettle,最好有些实战型的案例供参考,这样才能学得快。我们可以根据问题背景,试着自己思考解决方案。如果遇到拦路虎,可以看看案例是如何跨过的;如果全部能够自己搞定,也可以与案例进行对照,找到自己的优势和劣势,从而提高内力。

    二、问题思路

    现将问题具体化。

    输入:股票代码和名称列表,格式为CSV文件,如下图所示。

    图1:股票代码数据

    输出:获取每一个开盘日的开价、收价、最高价、最低价,格式为CSV,如下图所示。

    图2:股票价格数据

    解决问题的思路:

    1、明确数据来源。能够提供股价数据的网站较多,本文聚焦于技术研究,尽量不涉及具体三方公司,也尊重数据权属。总之一句话,首先要找到数据来源的URL。这对于购买股票的人来说,应该不难。

    2、梳理萃取方法。有了地址,就可以通过HTTP协议拿到数据。但网站数据,往往掺杂非常多的干扰信息,我们需要思考真正需要的数据在哪里?是什么形式?有什么规律?然后利用字符串、正则表达式、JSON Path、XPath等处理文本的技术,提取目标数据。

    3、输出文件数据。将萃取到的数据,按照指定格式和类型,输出到符合命名规范的文件中。

    4、批量处理。前三步解决了某一支股票的数据获取问题,但我们感兴趣的股票显然不止一支,而是来自于文件(如图1)的一个系列。这个文件,我们可以按需删减,系统能够自动将文件中的每一支股票数据下载。所以还需要一个批量处理的技术,即将清单文件中的股票信息提取,并逐一执行数据萃取过程。

    三、实例要点

    1、总管作业(kd-sample001-j1.kjb)

    只需每天执行一次总管作业,即可以实现股票列表的数据抽取。作业详情如图3所示。其中,转换T1(kd-sample001-t1.ktr)将股票清单提取,为批量执行T2提供数据;转换T2(kd-sample001-t2.ktr)则负责每支股票的数据提取,参数来自T1的执行结果,所以需要勾选Options标签页“执行每一个输入行”以及命名参数标签页“复制上一步结果到命名参数”。

    图3:总管作业

    2、股票清单转换(kd-sample001-t1.ktr)

    提取股票清单数据,并复制到结果中,供后续作业中的其他节点使用。主要配置如图4所示。
     

    图4:股票清单转换

    3、股价数据转换(kd-sample002-t1.ktr)

    提取股价数据主要需要三个环节。一是环境准备,包括获取变量、根据当前日期构造目标文件名称以及判断文件是否存在等;二是提取cookie,目标网站不允许直接访问数据提取地址,需要首先访问一次主页,得到cookie,并带入后续访问步骤中;三是访问数据地址,得到数据,并解析导出。

    图5:股价数据转换

    以下将主要步骤详情列举。

    环境准备部分的主要步骤配置详情如图6所示。其中E1获取环境变量,gpdm代表股票代码,fn代表当前路径下最终存储输出文件的位置;C1利用公式,计算和格式化当前日期,加入文件名称后面,用于区分不同日期获取到的数据;O1用于判断文件是否已经存在,避免重复下载。

    图6:环境准备部分配置详情

    cookie获取部分主要步骤配置详情如图7所示。其中E2首次访问主页,并设置响应头字段为httpheader;E3从响应头httpheader的JSON中,解析得到cookie部分;C6/C7/C8采用字符串替换的方式,将得到的cookie进行格式化。

    图7:cookie获取部分配置详情

    数据解析部分主要步骤配置详情如图8所示。其中E5采用HTTP协议获取结构化数据,注意将已经格式化的cookie带入;E6采用JSON来解析数据,主要字段包括日期、开价、最高、收价,都可以通过JSON Path获取;L2采用CSV格式,输出解析数据到文件。

    图8:数据解析部分配置详情

    四、总结展望

    本文通过从股票数据网站获取开盘价、收盘价、最高价、最低价数据的过程,学习Kettle中作业与转换的基本使用方法。如果需要下载案例中的转换与作业,可以使用微信扫码免费下载。二维码如下:

  • 相关阅读:
    在线漫画app开发,更好地保证用户的个性化体验
    SSM+中小型企业绩效管理系统 毕业设计-附源码081536
    Maven编译打包本地jar包rt.jar
    区域入侵AI算法如何应用在工地场景,保卫工地施工安全?
    前端笔记(6) Vue3 dialog弹窗 父子组件之间传值及方法调用
    链块串的实现(无功能函数实现)
    【DRAM存储器四】DRAM存储器的架构演进-part1
    分享一下蛋糕店在微信小程序上可以实现什么功能
    怎么去别人的github工程下载
    11、matlab将日期和字符串写入EXCEL,并将EXCEL数据读取另存为数字、元胞和结构体形式
  • 原文地址:https://blog.csdn.net/biyusr/article/details/126049367