kettle案例

一.加载用户数据至用户维度表

1.打开kettle工具,创建load_dim_customer转换
在这里插入图片描述
2.配置“表输入”控件
首先配置数据库连接,连接完成后在SQL语句编写框中编写如下SQL语句:

select
coalesce(max(customer_last_update),"1970-01-01 00:00:00")
as max_dim_customer_last_update
from dim_customer;

编写完成后可以单击“预览”按钮查看:
在这里插入图片描述
3.配置“表输入2”控件
首先配置数据库连接,连接完成后在SQL语句编写框中编写如下SQL语句,用于获取数据库sakila中数据表customer中的最新数据:

select
customer_id,
store_id,
first_name,
last_name,
email,
address_id,
active,
create_date,
last_update
from customer where last_update > ?

编写完成后在“从步骤插入数据”下拉列表中选择“表输入”,然后单击“确定”按钮完成配置:
在这里插入图片描述
这里需要注意的是,获取数据表customer的最新数据中包含字段address_id,因此需要创建一个子转换,用于实现获取用户的地址,具体实现步骤如下:
4.打开kettle工具,创建fetch_address转换
在这里插入图片描述
5.配置“映射输入规范”控件
双击该控件,进入Mapping input specification界面,添加映射的字段address_id,该字段为传递的参数(由于转换load_dim_customer中“表输入2”控件流获取的字段address_id用于查询用户的地址信息,而后续数据仓库的维度表数据也需要用户的地址信息,因此这里将字段address_id作为传递的参数),添加完毕后单击“确定”按钮,完成“映射输入规范”控件的配置,如下图所示:
在这里插入图片描述
6.配置“数据库查询”控件
双击进入该控件首先配置数据库连接,连接完成后单击表名右侧的“浏览”按钮,添加数据表address;在“查询所需的关键字”框中添加查询所需的关键字字段address_id,由于该字段是唯一的,因此可作为数据表address中数据和“映射输入规范”控件流中数据的比较条件;在“查询表返回的值”框中添加查询表返回的值,如下图所示:
在这里插入图片描述
7.配置“数据库查询2”控件
双击进入该控件首先配置数据库连接,单击表名后的“浏览”按钮,添加数据表city;在“查询所需的关键字”框中添加查询所需的关键字字段city_id,作为数据表city中数据与“数据库查询2”控件流中数据比较的条件;在“查询表返回的值”框中添加查询表返回的值,如下图所示:
在这里插入图片描述
8.配置“数据库查询3”控件
在这里插入图片描述
9.配置“过滤记录”控件
在“条件”处设置过滤的条件,对有第二个地址的用户进行过滤操作;单击左边的“field”框,弹出“字段”对话框,选择要过滤的字段address2;再单击“=”框,弹出“函数:”对话框,选择过滤条件(这里选择的是IS NOT NULL),即过滤指定字段中不为空的数据;在“发送true数据给步骤:”后的下拉列表中选择“JavaScript代码”,将有第二个地址的用户放在JavaScript控件中,用于后续的操作;在“发送false数据给步骤:”后的下拉列表中选择“字段选择”,将没有第二个地址的用户进行字段选择处理;如下图所示:
在这里插入图片描述
10.配置“JavaScript代码”控件
勾选“兼容模式?”,并在JavaScript代码框中编写如下代码:

var address=address.getString()+" "+address2.getString();

如下图所示:
在这里插入图片描述
11.配置“字段选择”控件
双击该控件,进入“选择/改名值”界面,在“移除”选项卡的“移除的字段:”处添加要移除的字段,如下图所示:
在这里插入图片描述
12.配置“映射”控件
双击该控件进入后,单击“转换”处的Browser按钮,选择添加转换fetch_address,用于获取用户的地址信息,如下图所示:
在这里插入图片描述
13.配置“字段选择”控件
在该控件中选择“元数据”选项卡的“需要改变元数据的字段”处添加字段active,由于数据表customer中字段active的类型为tinyint,因此需要将字段active的类型改为String,与维度表dim_customer中字段customer_active的类型对应,如下图所示:
在这里插入图片描述
14.配置“值映射”控件
进入该控件后,在“使用的字段名:”后的下拉列表中选择字段active;在“字段值”框中添加源值和目标值,由于数据表customer中字段active的值为1和0,对应的是Y和N,这里将Y替换成Yes,将N替换成No,如下图所示:
在这里插入图片描述
15.配置“维度查询/更新”控件
首先配置数据库连接,配置完成后单击目标表右侧的“浏览”按钮,选择输出的目标表,即维度表dim_customer;在“关键字”选项卡处添加关键字段customer_id,用于指定维度表字段和流字段的比较条件;在“字段”选项卡处添加查询/更新字段;在“代理关键字段”后的下拉列表中选择customer_key为代理关键字段,并指定“创建代理键”为使用自增字段;在“Version字段”后的下拉列表中选择customer_version_number;在“Stream日期字段”后的下拉列表中选择last_update;在“开始日期字段”后的下拉列表中选择customer_valid_from;在“截止日期字段”后的下拉列表中选择customer_valid_through,如下图所示:
在这里插入图片描述
16.运行转换load_dim_customer
在这里插入图片描述
17.查看维度表dim_customer中的数据
在这里插入图片描述
如上图所示,dim_customer表中成功写入数据

二.加载商店数据至商店维度表

1.打开kettle工具,创建load_dim_store转换
在这里插入图片描述
2.配置“表输入”控件
首先配置数据库连接,连接完成后在SQL语句编写框中编写如下SQL语句:

select
coalesce(max(store_last_update),"1970-01-01 00:00:00")
as max_dim_store_last_update
from dim_store;

编写完成后可以单击“预览”按钮查看:
在这里插入图片描述
3.配置“表输入2”控件
首先配置数据库连接,连接完成后在SQL语句编写框中编写如下SQL语句,用于获取数据库sakila中数据表store中的最新数据:

select
store_id,
manager_staff_id,
address_id,
last_update
from store where last_update > ?

编写完成后在“从步骤插入数据”下拉列表中选择“表输入”,然后单击“确定”按钮完成配置:
在这里插入图片描述
4.配置“映射”控件
双击该控件进入后,单击“转换”处的Browser按钮,选择添加转换fetch_address,用于获取用户的地址信息,如下图所示:
在这里插入图片描述
5.配置“数据库查询”控件
双击进入该控件首先配置数据库连接,单击表名后的“浏览”按钮,添加数据表staff;在“查询所需的关键字”框中添加查询所需的关键字字段staff_id,作为数据表city中数据与“数据库查询2”控件流中数据比较的条件;在“查询表返回的值”框中添加查询表返回的值,即员工姓氏和名字;如下图所示:
在这里插入图片描述
6.配置“维度查询/更新”控件
首先配置数据库连接,配置完成后单击目标表右侧的“浏览”按钮,选择输出的目标表,即维度表dim_store;在“关键字”选项卡处添加关键字段store_id,用于指定维度表字段和流字段的比较条件;在“字段”选项卡处添加查询/更新字段,用于指定维度表字段store_id和流字段store_id数据一致需要更新的字段;在“代理关键字段”后的下拉列表中选择store_key为代理关键字段,并指定“创建代理键”为使用自增字段;在“Version字段”后的下拉列表中选择store_version_number;在“Stream日期字段”后的下拉列表中选择last_update;在“开始日期字段”后的下拉列表中选择store_valid_from;在“截止日期字段”后的下拉列表中选择store_valid_through,如下图所示:
在这里插入图片描述
7.运行转换load_dim_store
在这里插入图片描述
8.查看维度表dim_store中的数据
在这里插入图片描述
如上图所示,dim_store表中成功写入数据

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用Hive和Kettle的示例案例: 假设有一个电子商务网站,需要进行用户行为分析。该网站有一个日志文件,其中包含了用户在网站上的各种操作,例如点击商品、添加到购物车、下单等。 1. 创建Hive 首先,需要在Hive中创建一个来存储日志文件数据。假设日志文件以文本格式存储,每行记录包含以下字段:时间戳、用户ID、操作类型、商品ID。 使用以下命令在Hive中创建: ``` CREATE TABLE user_behavior( timestamp BIGINT, user_id STRING, action_type STRING, item_id STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` 2. 使用Kettle将数据导入Hive 接下来,使用Kettle将日志文件数据导入Hive中。Kettle是一个ETL工具,可以从不同的数据源中提取数据,并将数据转换为所需的格式,最终将数据加载到目标数据库中。 在Kettle中,可以使用Hadoop文件输入步骤读取日志文件数据,使用转换步骤将数据转换为Hive中的格式,最后使用Hive输出步骤将数据加载到Hive中。 3. 进行用户行为分析 完成数据导入后,可以使用Hive进行用户行为分析。例如,可以使用以下语句计算每个商品的点击量: ``` SELECT item_id, COUNT(*) as click_count FROM user_behavior WHERE action_type = 'click' GROUP BY item_id ORDER BY click_count DESC; ``` 可以使用类似的方式进行其他分析,例如计算添加到购物车的商品数量、计算下单的用户数量等等。 总之,使用Hive和Kettle可以方便地进行大规模数据处理和分析,适用于各种场景,例如电子商务网站的用户行为分析、金融机构的风险管理、医疗机构的患者数据分析等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值