当前位置:   article > 正文

大数据ETL开发之图解Kettle工具

大数据etl开发之图解

详细笔记参考:https://blog.csdn.net/yuan2019035055/article/details/120409547

以下只是简单记录一下我学习过程中的心得

3.1.5 JSON输入

JSONPath 类似于 XPath 在 xml 文档中的定位,JsonPath 表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot - notation”(点记法)和“bracket -notation”(括号记法)

实操注意事项

这里只要注意一下路径的写法和理解,$是表示根路径,对于$..data和$..id我的理解是:$指的是submissions,因为真正的json数据其实是从submissions开始算的,然后..表示递归遍历,因为submissions下面有两个数组,所以需要递归遍历,所以$..data就是递归遍历submissions下的所有data,主要是对..的理解,同理,下面的$..file是的$是指的data,因为第二个json input的数据来源是第一个json input传入的,用..也是因为有多个数组需要递归遍历

  1. {
  2. "status": "ok",
  3. "response": {
  4. "submissions": [
  5. {
  6. "id": "59434767",
  7. "timestamp": "2011-11-21 09:21:53",
  8. "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
  9. "remote_addr": "192.168.1.1",
  10. "payment_status": "",
  11. "data": [
  12. {
  13. "field": "13776121",
  14. "value": "Baylor Dallas"
  15. },
  16. {
  17. "field": "13776401",
  18. "value": "CHF"
  19. },
  20. {
  21. "field": "13777966",
  22. "value": "John Doe"
  23. },
  24. {
  25. "field": "13780027",
  26. "value": "9999"
  27. },
  28. {
  29. "field": "13778165",
  30. "value": "None of the above"
  31. },
  32. {
  33. "field": "13778985",
  34. "value": "Yes"
  35. },
  36. {
  37. "field": "13778280",
  38. "value": "Yes"
  39. },
  40. {
  41. "field": "13778424",
  42. "value": "Yes"
  43. },
  44. {
  45. "field": "13778290",
  46. "value": "Yes"
  47. },
  48. {
  49. "field": "13778324",
  50. "value": "Yes"
  51. },
  52. {
  53. "field": "13778864",
  54. "value": "Yes"
  55. }
  56. ]
  57. },
  58. {
  59. "id": "59474875",
  60. "timestamp": "2011-11-21 17:01:22",
  61. "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
  62. "remote_addr": "192.168.1.1",
  63. "payment_status": "",
  64. "data": [
  65. {
  66. "field": "13776121",
  67. "value": "Healthsouth,"
  68. },
  69. {
  70. "field": "13776401",
  71. "value": "Pneumonia"
  72. },
  73. {
  74. "field": "13777966",
  75. "value": "Jane Doe"
  76. },
  77. {
  78. "field": "13780027",
  79. "value": "390"
  80. },
  81. {
  82. "field": "13778165",
  83. "value": "Experienced a fall?"
  84. },
  85. {
  86. "field": "13861153",
  87. "value": "Yes"
  88. },
  89. {
  90. "field": "13780018",
  91. "value": "Yes"
  92. },
  93. {
  94. "field": "13780006",
  95. "value": "No"
  96. },
  97. {
  98. "field": "13780023",
  99. "value": "Yes"
  100. },
  101. {
  102. "field": "13780024",
  103. "value": "Yes"
  104. }
  105. ]
  106. }
  107. ],
  108. "total": 2,
  109. "pages": 1
  110. }
  111. }

3.1.6 表输入

这里我遇到了一个报错

kettle报错 Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found, make sure the ‘MySQL‘ driver

原因就是没有导入jdbc的jar包或者导入后没有重启应用,我是没有重启

3.2.2 文本文件输出

这里只要记得设置输出文件的合适分隔符即可,默认是用的;

3.2.4 表输出

这里注意数据写到输出表的时候是通过追加的方式,也就是你如果执行两次,那么就会有两套重复的数据,是追加不是覆盖

3.3.9 拆分字段

这里要注意拆分后的新字段需要设置合适的类型,不然就报错

3.3.11 行扁平化

行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向操作

但是需要注意的是行扁平化控件使用有两个条件:

  • 使用之前需要对数据进行排序

  • 每个分组的数据条数要保证一致,否则数据会有错乱

3.3.12 列转行

列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据的过程

注意:列转行之前数据流必须按照分组字段进行排序,否则数据会错乱!

这里主要是要理解上面的图怎么填,关键字就是你要把哪一列的值横过来,关键字的值就是上面的那个关键字的列值

3.3.13 行转列

行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆向操作

理解上面的图的值怎么填

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/915208
推荐阅读
相关标签
  

闽ICP备14008679号