(二)kettle--输入与输出

一、文件的输入

(1)CSV文件输入

CSV:CSV文件是一种带有固定格式文本文件

(2)文本文件输入

文本文件:提取日志信息的数据是开发常见的操作,日志信息基本都是文本类型

可以在内容中限定分隔符

(3)Excel文件输入

可以通过获取头部字段,来查看对应的内容

(4)多文件合并

(5)Get data from XML

XML 指可扩展标记语言(EXtensible Markup Language), XML 被设计用来传输和存储数据。

XPath即为XML****路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML****的树状结构,提供在数据结构树找寻节点的能力。

语法:选取节点XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

比如以下

获取:testDescription、rowID、v1、v2

XPath路径

testDescription:../../@testDescription

rowID:../@rowID

v1:v1

v2:v2

XML 复制代码
<AllRows testDescription="1 - simple functionality test">
<Rows rowID="1">
first row chunk of data
<Row>
<v1>1.1.1</v1>
<v2>1.1.2</v2>
</Row>
<Row>
<v1>1.2.1</v1>
<v2>1.2.2</v2>
</Row>
</Rows>
<Rows rowID="2">
second row chunk of data
<Row>
<v1>2.1.1</v1>
<v2>2.1.2</v2>
</Row>
<Row>
<v1>2.2.1</v1>
<v2>2.2.2</v2>
</Row>
</Rows>
<Rows rowID="3">
third row chunk of data
<Row>
<v1>3.1.1</v1>
<v2>3.1.2</v2>
</Row>
<Row>
<v1>3.2.1</v1>
<v2>3.2.2</v2>
</Row>
</Rows>
</AllRows>

(6)JSON Input

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

JSON核心概念:数组、对象、属性

数组:[ ]

对象:{ }

属性:key:value

JSON Path

JSONPath类似于****XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。

其表达式可以接受"dot--notation"(点记法)和"bracket--notation"(括号记法)格式

点记法:$.store.book[0].title

括号记法:$['store']['book'][0]['title']

比如:从json文件提取id、field和value数据

javascript 复制代码
{
    "status": "ok",
    "response": {
        "submissions": [
            {
                "id": "59434767",
                "timestamp": "2011-11-21 09:21:53",
                "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
                "remote_addr": "192.168.1.1",
                "payment_status": "",
                "data": [
                    {
                        "field": "13776121",
                        "value": "Baylor Dallas"
                    },
                    {
                        "field": "13776401",
                        "value": "CHF"
                    },
                    {
                        "field": "13777966",
                        "value": "John Doe"
                    },
                    {
                        "field": "13780027",
                        "value": "9999"
                    },
                    {
                        "field": "13778165",
                        "value": "None of the above"
                    },
                    {
                        "field": "13778985",
                        "value": "Yes"
                    },
                    {
                        "field": "13778280",
                        "value": "Yes"
                    },
                    {
                        "field": "13778424",
                        "value": "Yes"
                    },
                    {
                        "field": "13778290",
                        "value": "Yes"
                    },
                    {
                        "field": "13778324",
                        "value": "Yes"
                    },
                    {
                        "field": "13778864",
                        "value": "Yes"
                    }
                ]
            },
            {
                "id": "59474875",
                "timestamp": "2011-11-21 17:01:22",
                "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
                "remote_addr": "192.168.1.1",
                "payment_status": "",
                "data": [
                    {
                        "field": "13776121",
                        "value": "Healthsouth,"
                    },
                    {
                        "field": "13776401",
                        "value": "Pneumonia"
                    },
                    {
                        "field": "13777966",
                        "value": "Jane Doe"
                    },
                    {
                        "field": "13780027",
                        "value": "390"
                    },
                    {
                        "field": "13778165",
                        "value": "Experienced a fall?"
                    },
                    {
                        "field": "13861153",
                        "value": "Yes"
                    },
                    {
                        "field": "13780018",
                        "value": "Yes"
                    },
                    {
                        "field": "13780006",
                        "value": "No"
                    },
                    {
                        "field": "13780023",
                        "value": "Yes"
                    },
                    {
                        "field": "13780024",
                        "value": "Yes"
                    }
                ]
            }
        ],
        "total": 2,
        "pages": 1
    }
}

先抽取:id、data

id:$.response.submissions..id

data:$.response.submissions..data

在从data中抽取field和value

field:$..field

value:$..value

(7)生成记录

静态数据

数据仓库中绝大多数的数据都是业务系统生成的动态数据,但是其中一部分维度数据不是动态的,比如:日期维度

静态维度数据就可以提前生成

(8)表输入

我们先了一个概念:数据库驱动

数据库驱动是不同数据库开发商(比如oracle mysql等)为了某一种开发语言环境(比如java)能够实现统一的数据库调用而开发的一个程序,他的作用相当于一个翻译人员

一般驱动的位置放在\pdi-ce-8.2.0.0-342\data-integration\lib目录

以下是以mysql数据库为例,拉入表输入,新建数据库连接,获取SQL查询语句

二、文件的输出

(1)excel输出

微软的excel一般分为两类:xls 和 exls

xls : 2007年之前

exls : 2007年之后

(2)文本文件输出

数据操作常见的格式是:TXT和CSV

(3)SQL文件输出

SQL文件输出可以导出数据库结构数据

会根据表内容,输出对应的SQL语句

(4)表输出

表输出就是把数据写入到指定的表

(5)更新

更新就是把数据库已经存在的记录与数据流里面的记录进行比对,如果不同就进行更新

注意:如果记录不存在,则会出现错误

(6)插入更新

插入****更新就是把数据库已经存在的记录与数据流里面的记录进行比对,如果不同就进行更新

如果记录不存在,则会插入数据

(7)删除

删除就是删除数据库表中指定条件的数据。

相关推荐
2401_833033621 小时前
如何修复固定定位头部容器中悬浮下拉菜单的错位问题
jvm·数据库·python
SelectDB1 小时前
Doris & SelectDB for AI 实战:从基础 RAG 到知识图谱增强的完整实现
数据库·人工智能·数据分析
z4424753261 小时前
CSS Grid布局如何实现网格项目的自动增长_设置grid-auto-flow- row
jvm·数据库·python
河野笑生2 小时前
MySQL 范式和反范式详解
数据库
m0_740352422 小时前
如何在 SvelteKit 中为动态加载的图片实现响应式悬停覆盖层
jvm·数据库·python
今天又在写代码2 小时前
并发问题解决
java·开发语言·数据库
马优晨2 小时前
oracle 的 Schema
数据库·oracle·oracle的schema·数据库的 schema·oracle的schema数据
FlyWIHTSKY2 小时前
Vue 3 中 RouteRecord 详解(Vue Router 4)
前端·javascript·vue.js
老王以为2 小时前
前端视角下的 Java
java·javascript·程序员