通过kettle获取API数据
1. 概况:
使用 kettle 获取高德 API 提供 天气信息;
2. 准备:
成为开发者并创建 Key 文档:创建应用和 Key-Web服务 API | 高德地图API
高德天气查询开发文档:基础 API 文档-开发指南-Web服务 API | 高德地图API
2.1. 接口介绍:
2.1.1. 天气查询API服务地址
URL
请求方式
https://restapi.amap.com/v3/weather/weatherInfo?parameters
GET
parameters 代表的参数包括必填参数和可选参数。所有参数均使用和号字符(&)进行分隔。下面的列表枚举了这些参数及其使用规则。
2.1.2. 请求参数
参数名
含义
规则说明
是否必须
缺省值
key
请求服务权限标识
用户在高德地图官网 申请 web 服务 API 类型 KEY
必填
无
city
城市编码
输入城市的 adcode,adcode 信息可参考 城市编码表
必填
无
extensions
气象类型
可选值:base/all
base:返回实况天气
all:返回预报天气
可选
无
output
返回格式
可选值:JSON,XML
可选
JSON
2.1.3. 返回结果参数说明
实况天气每小时更新多次,预报天气每天更新3次,分别在8、11、18点左右更新。由于天气数据的特殊性以及数据更新的持续性,无法确定精确的更新时间,请以接口返回数据的 reporttime 字段为准。天气结果对照表>>
名称
含义
规则说明
status
返回状态
值为0或1
1:成功;0:失败
count
返回结果总数目
info
返回的状态信息
infocode
返回状态说明,10000代表正确
lives
实况天气数据信息
province
省份名
city
城市名
adcode
区域编码
weather
天气现象(汉字描述)
temperature
实时气温,单位:摄氏度
winddirection
风向描述
windpower
风力级别,单位:级
humidity
空气湿度
reporttime
数据发布的时间
forecast
预报天气信息数据
city
城市名称
adcode
城市编码
province
省份名称
reporttime
预报发布时间
casts
预报数据 list 结构,元素 cast,按顺序为当天、第二天、第三天的预报数据
date
日期
week
星期几
dayweather
白天天气现象
nightweather
晚上天气现象
daytemp
白天温度
nighttemp
晚上温度
daywind
白天风向
nightwind
晚上风向
daypower
白天风力
nightpower
晚上风力
2.1.4. 服务示例
https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=
参数
值
备注
必选
city
需要查询天气的城市编码
否
2.2. 城市编码表 下载
adcode 信息可参考城市编码表,下载地址: https://lbs.amap.com/api/webservice/download
3. kettle 实现:
3.1. 总 job
思路:分两步走,一、获取到城市信息;二、把城市信息中的adcode 作为参数传到一转换中;
3.2. 获取城市信息步骤;
步骤解释:
① 城市信息:
组件 ,由 excel 表输入(数据下载地址: https://lbs.amap.com/api/webservice/download)。
② 过滤:
组件,把“中国”过滤掉,因为“中国”范围太大,返还不了值;
③ 修改名:
组件,整理下字段名,非必要步骤;
④ 保留记录:
组件,把值存储起来;(作用:用于存储查询出的数据信息,如excel的导入结果,sql查询的结果等。一般在同一个 作业 中的不同 转换 中使用)。
备注:以上步骤属于基本操作略。
3.3. 获取天气信息步骤:
步骤解释:
① 设置此转换参数(见下图)
② 获取变量:
组件,作用是用来获取上一步骤中的值;
③ 拼 URL:
组件。
④ 通过请求获取 api 数据;组件有:
本次中使用的
组件;
三者区别:
HTTP client 组件对应的API的请求方式为’GET’.
HTTP post 组件对应的API的请求方式为’POST’.
REST client 组件则可以灵活的选择’GET’,\'POST’或者其他请求方式.
关于 REST client 组件可以参考:kettle介绍-Step之REST Client_kettle rest client-CSDN博客 文章
⑤ 解析状态字段,采用
组件。
附:JsonPath 说明
⑥ 判断(非必须步骤)
⑦ 解析天气信息字段。
⑧ 字段改名:作用是为了与数据库中的名一样,后续方便些(非必须步骤)。
⑨ 生成 uuid 及生成创建时间
⑩ 数据入库,用
组件。
最后一步也是最重要一点:在 job 中设置参数循环;
整个流程完结;
4. 总结:
此实例中涉及到:1.请求获取数据;2.JSON 解释;3.在 job 中的循环;
最后附件上项目地址:GitCode - 全球开发者的开源社区,开源代码托管平台