通过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=<用户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 - 全球开发者的开源社区,开源代码托管平台