黄源《数据清洗》第五章—第八章

5-1 高级转换

1. 创建记录集连接转换工程。使用Ctrl+N快捷键,创建【5-1-高级转换】转换工程。

2. 创建Excel输入和排序记录组件,导入月考语文成绩

2.1 创建【Excel输入】组件,将组件名称命名为“语文成绩”

2.2 导入“月考语文成绩.xls”文件,添加字段

2.3 预览数据

2.4 接着创建【排序记录】组件,并将组件名称命名为“语文成绩排序”,再由【语文成绩】组件指向【语文成绩排序】组件,建立节点连接

2.5 设置排序参数,对“学号”字段进行排序

3. 创建Excel输入和排序记录组件,导入月考英语成绩

3.1 创建【Excel输入】组件,将组件名称命名为“英语成绩”

3.2 导入“月考英语成绩.xls”文件,添加字段

3.3 预览数据

3.4 接着创建【排序记录】组件,并将组件名称命名为“英语成绩排序”,再由【英语成绩】组件指向【英语成绩排序】组件,建立节点连接

3.5 设置排序参数,对“学号”字段进行排序

4. 创建【记录集连接】组件和连接。

4.1 在【记录集连接】转换工程中,单击【核心对象】选项卡,展开【连接】对象,选中【记录集连接】组件,并拖曳到右边工作区中,并由【语文成绩排序】组件指向【记录集连接】组件,由【英语成绩排序】组件指向【记录集连接】组件,分别建立两个节点连接,如图所示。

4.2 双击图【记录集连接】组件,弹出【合并排序】对话框,如图所示。

4.3 单击【第一个步骤的连接字段】表下方的【获得连接字段】按钮,导入“语文成绩排序”中的字段,保留“学号”字段,删除其他字段。单击【第二个步骤的连接字段】表下方的【获得连接字段】按钮,导入“英语成绩排序”中的字段,保留“学号”字段,删除其他字段,设置结果如图所示,此时完成【记录集连接】组件的参数设置。

5. 单击【记录集连接】组件,再单击工作区上方的 图标。预览记录集连接后的数据,如图所示。

6. 添加【计算器】控件

6.1 添加新字段为总成绩,计算A+B,其中A为语文,B为英语,如图所示

6.运行转换,查看计算器中数据,效果如图所示

5-1 多路数据合并连接

1.创建多路数据合并连接转换工程。使用Ctrl+N快捷键,创建【5-1-多路数据合并连接】转换工程,如图所示。

2. 创建Excel输入和排序记录组件,导入月考语文成绩并进行排序。

2.1 创建【Excel输入】组件,将组件名称命名为“语文成绩”,并导入“月考语文成绩.xls”文件

2.2 添加字段如图所示

2.3 预览数据

2.4 接着创建【排序记录】组件,并将组件名称命名为“语文成绩排序”,再由【语文成绩】组件指向【语文成绩排序】组件,建立节点连接

2.5 设置排序参数,对“学号”字段进行排序

3. 创建Excel输入和排序记录组件,导入月考数学成绩并进行排序。

3.1 创建【Excel输入】组件,将组件名称命名为“数学成绩”并导入“月考数学成绩.xls”文件

3.2 添加字段如图所示

3.3 预览数据

3.4 接着创建【排序记录】组件,并将组件名称命名为“数学成绩排序”,再由【数学成绩】组件指向【数学成绩排序】组件,建立节点连接

3.5 设置排序参数,对“学号”字段进行排序

4. 创建Excel输入和排序记录组件,导入月考英语成绩并进行排序。

4.1 创建【Excel输入】组件,将组件名称命名为“英语成绩”,导入“月考英语成绩.xls”文件

4.2 添加字段如图所示

4.3 预览数据

4.4 接着创建【排序记录】组件,并将组件名称命名为“英语成绩排序”,再由【英语成绩】组件指向【英语成绩排序】组件,建立节点连接

4.5 设置排序参数,对“学号”字段进行排序

5. 创建【Multiway merge join】组件和连接。

5.1 在图【多路数据合并连接Multiway merge join】转换工程中,单击【核心对象】选项卡,展开【连接】对象,选中【Multiway merge join】组件,并拖曳到右边工作区中,并由【语文成绩排序】【数学成绩排序】【英语成绩排序】组件分别指向【Multiway merge join】组件,分别建立3个节点连接,如图所示。

5.2 双击【Multiway merge join】组件,弹出【Multiway merge join】对话框,进行参数设置,如图所示。

5.3 【Input Step1】参数设置为“语文成绩排序”,同一行的【Join Keys】参数设置为“学号”。也可以单击同一行【Select Keys】按钮,弹出【Join keys】对话框,在【Keys】表中的第1行,单击【Key Field】下的第一个输入框,在下拉框中选择“学号”,单击【确定(O)】按钮,添加“学号”字段名称至【Join Keys】参数中,如图所示。

5.4与步骤5.3类似的操作,【Input Step2】参数设置为“数学成绩排序”,同一行的【Join Keys】参数设置为“学号”。与步骤5.3类似的操作,【Input Step3】参数设置为“英语成绩排序”,同一行的【Join Keys】参数设置为“学号”。确定连接类型。【Join Type】参数设置为“INNEER”,此时完成参数设置,如图所示。

5.5 单击【确定】按钮,这时【Multiway merge join】组件的名称已经被改名为“多路数据合并连接”,组件的参数设置也已设置完成,如图所示。

6. 添加计算器控件

6.1 添加新字段为总成绩,计算A+B+C,其中A为语文,B为英语,C为英语,如图所示

7. 添加字段选择控件

7.1 单击[获取选择的字段],添加想要呈现的控件如图所示

 8. 运行该转换,查看字段选择中的数据如图所示

建立单变量统计转换工程

1.创建单变量统计转换工程。使用Ctrl+N快捷键,创建【5-1-单变量统计】转换工程。

2. 创建Excel输入和排序记录组件,导入月考语文成绩并进行排序。

2.1 创建【Excel输入】组件,将组件名称命名为“语文成绩”,并导入“2018年上学期期末考试成绩.xls”文件

2.2 添加字段如图所示

2.3 预览数据

3.创建【单变量统计】组件和连接。

3.1 在【单变量统计】转换工程中,单击【核心对象】选项卡,单击展开【统计】对象,选中【单变量统计】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【单变量统计】组件,建立节点连接,如图所示。

3.2 双击【单变量统计】组件,弹出【Univariate statistics】对话框,如图所示。

3.3 在【Univariate statistics】对话框中,设置参数,对学生语文、数学考试成绩进行统计。在【Input fields andderived stats】表中,设置统计的各个字段参数,如图所示,此时完成【单变量统计】组件的参数设置。

4.运行当前转换

4.1 在【单变量统计】工程中,单击【单变量统计】组件,再单击工作区上方的图标。预览进行单变量统计后的数据,如图所示。

5-1 公式 

1.1 创建公式转换工程。使用Ctrl+N快捷键,创建【公式】转换工程。

2. 创建Excel输入和排序记录组件,导入2018年上学期期末考试成绩。

2.1 创建【Excel输入】组件,导入“2018年上学期期末考试成绩.xls”文件

2.2 添加字段如图所示

2.3 预览数据

3.创建【公式】组件和连接。

3.1 在【公式】转换工程中,单击【核心对象】选项卡,单击展开【脚本】对象,选中【公式】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【公式】组件,建立节点连接,如图所示。

3.2 双击【公式】组件,弹出【公式】对话框,如图所示。

3.3 设置【字段】表参数,如图所示,此时完成【公式】组件的参数设置。

4. 运行该转换

4.1 单击【公式】组件,再单击Preview data。浏览使用公式计算后的数据,如图所示

5-2 利用Janino计算Java表达式

1. 创建利用Janino计算Java表达式转换工程。使用Ctrl+N快捷键,创建【5-2-利用Janino计算Java表达式】转换工程。

2. 创建Excel输入和排序记录组件,导入2020年4月月考成绩。

2.1 创建【Excel输入】组件,导入“2020年4月月考成绩.xls”文件

2.2 添加字段如图所示

2.3 预览数据

3. 创建【利用Janino计算Java表达式】组件和连接。

3.1 在【利用Janino计算Java表达式】转换工程中,单击【核心对象】选项卡,单击展开【脚本】对象,选中【利用Janino计算Java表达式】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【利用Janino计算Java表达式】组件,建立节点连接,如图所示。

3.2 双击【利用Janino计算Java表达式】组件,弹出【User defined Java expression】对话框,如图所示。

3.3 在【User defined Java expression】对话框中,设置组件名称。保留【步骤名称】默认值“利用Janino计算Java表达式”。设置字段参数。在【Fields】表中设置参数,如图所示,此时完成【利用Janino计算Java表达式】组件的参数设置。

4. 运行该转换

4.1 单击【利用Janino计算Java表达式】组件,再点击Preview data,查看数据

5-1 JavaScript代码

1. 创建JavaScript代码转换工程。使用Ctrl+N快捷键,创建【5-2-JavaScript代码】转换工程。

2. 创建Excel输入和排序记录组件,导入2020年4月月考成绩。

2.1 创建【Excel输入】组件,导入“2020年4月月考成绩.xls”文件

2.2 添加字段如图所示

2.3 预览数据

3. 在【JavaScript代码】转换工程

3.1 单击【核心对象】选项卡,单击展开【脚本】对象,选中【JavaScript代码】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【JavaScript代码】组件,建立节点连接,如图示。

3.2 双击【JavaScript代码】组件,弹出【JavaScript代码】对话框,如图所示。

3.3 在图【JavaScript代码】对话框中,设置组件名称。保留【步骤名称】默认值“JavaScript代码”。编辑JavaScript脚本。在【JavaScript】编辑区中,编辑JavaScript脚本如下。
var  总分=0;
for (var i=0;i<getInputRowMeta().size();i++){
       var valueMeta= getInputRowMeta().getValueMeta(i);

      if (valueMeta.getTypeDesc().equals("Number")) {
          总分 =总分 + str2num(row[i]);
      }
}

3.4 在【字段】表中,设置【总分】字段参数,如图所示,此时完成【JavaScript代码】组件的参数设置。

4. 运行当前转换

4.1 在【5-2-JavaScript代码】转换工程中,单击【JavaScript代码】组件,再单击Preview data查看数据如图所示

5-2-设置变量

1.创建设置变量转换工程。使用Ctrl+N快捷键,创建【5-2-设置变量】转换工程。

2. 创建获取系统信息组件,定义变量。

2.1 创建【获取系统信息】组件,设置参数,【字段】设置为“fileDate”,【类型】设置为“今天00:00:00”。

3. 创建JavaScript代码组件,定义变量格式。创建【JavaScript代码】组件,如图所示

3.1 双击【JavaScript代码】组件,编写JavaScript脚本,定义dtNew变量格式为yyyyMMdd,取值为当前日期的前两天,并将dtNew变量名称改名为fileDate。编写代码和设置完成时,【JavaScript代码】参数设置如图所示。

4. 创建【设置变量】组件。

4.1 在【设置变量】转换工程中,单击【核心对象】选项卡,单击展开【作业】对象,选中【设置变量】组件,并拖曳到右边工作区中。由【JavaScript代码】组件指向【设置变量】组件,建立节点连接,如图所示。

4.2 双击【设置变量】组件,弹出【设置环境变量】对话框,如图所示。

4.3 设置组件名称。保留【步骤名称】默认值“设置变量”。设置【Apply formatting】参数。保留【Apply formatting】默认值“√”。设置【字段值】表参数。设置【字段值】表参数,如图所示,此时完成【设置变量】组件的参数设置。

5. 运行当前转换

5.1 在【设置变量】转换工程中,单击【设置变量】组件,再单击工作区上方的图标。预览设置变量后的数据,如图所示。

5-2-获取变量

1. 创建获取变量转换工程。使用Ctrl+N快捷键,创建【5-2-获取变量】转换工程。

1.1 在【获取变量】转换工程中,单击【核心对象】选项卡,单击展开【作业】对象,选中【获取变量】组件,并拖曳到右边工作区中,如图所示。

2. 双击【获取变量】组件,弹出【获得变量】对话框,如图所示。

2.1 设置组件名称。保留【步骤名称】默认值“获取变量”。设置【字段】表参数。设置【字段】表参数,如图所示,此时完成【获取变量】组件的参数设置。

3. 运行当前转换

3.1 在【获取变量】转换工程中,单击【获取变量】组件,再单击工作区上方的图标。预览获取变量后的数据,如图所示。

6-1-表输出

1. 创建转换工程和建立数据库连接。使用Ctrl+N快捷键,创建【6-1-表输出】转换工程

2. 创建【Excel输入】组件,导入数据文件并浏览数据。

2.1 在【表输出】转换工程中,创建【Excel输入】组件,导入“2020年1月月考1班数学成绩.xls”文件。

2.2 单击字段,获取来自头部字段

2.3 预览数据

3. 创建【表输出】组件并建立连接。在【表输出】转换工程中,单击【核心对象】选项卡,展开【输出】对象,选中【表输出】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【表输出】组件,建立节点连接,如图所示。

3.1 双击【表输出】组件,弹出【表输出】对话框,如图所示 

3.2  设置数据库连接。单击【数据库连接】下拉框,选择“6-1-表输出”。设置目标表参数。【目标表】设置为“2020年1月月考数学成绩”

3.3 执行SQL语句,生成数据表。单击【SQL】按钮,弹出【简单SQL编辑器】对话框,如图所示

3.4 设置生成“2020年1月月考数学成绩”数据表的SQL语句,单击【执行】按钮,执行SQL语句,在数据库中,生成“2020年1月月考数学成绩”数据表。需要注意,正确的SQL语句,只需执行一次,如果多次执行,那么会弹出对话框,提示数据表已经存在。此时完成【表输出】组件的基础参数设置,如图所示。 

4.运行当前转换

4.1 在【表输出】转换工程中,单击【表输出】组件,再单击工作区上方的图标。预览进行表输出处理后的数据,如图所示。

6-1-插入更新

1. 创建转换工程和确认数据库连接。使用Ctrl+N快捷键,创建【插入/更新】转换工程。

2. 创建【Excel输入】组件,导入数据文件并浏览数据。

2.1 在【插入/更新】转换工程,创建【Excel输入】组件,导入“2020年1月月考2班数学成绩.xls”文件,如图所示。

2.2 单击字段,获取来自头部字段

2.3 预览数据

3. 创建【插入/更新】组件并建立连接。在【插入/更新】转换工程中,单击【核心对象】选项卡,展开【输出】对象,选中【插入/更新】组件,并拖曳到右边工作区中。由【Excel输入】组件指向【插入/更新】组件,建立节点连接,如图所示。

3.1 双击【插入/更新】组件,弹出【插入/更新】对话框,如图所示

3.2 在【插入/更新】对话框中,设置数据库连接。单击【数据库连接】下拉框,选择6-1-表输出,设置目标表参数。【目标表】设置为“2020年1月月考数学成绩”。

3.3 设置关键字。单击【获取字段】按钮,输入流字段名称分别被添加至【用来查询的关键字】参数表中的【表字段】和【流里的字段1】输入框中,且【比较符】自动设置为“=”,如图所示,删除其中的第1、3和4行字段参数,保留第2行“学号”字段参数。

3.4 设置插入和更新的字段参数。单击【获取和更新字段】按钮,输入流字段名称分别被添加至【更新字段】参数表中的【表字段】和【流字段】输入框中,且【更新】自动设置为“Y”,如图所示。

 3.5 执行SQL语句

3.6 此时完成【插入/更新】组件的参数设置,如图所示。

4.  运行当前转换

4.1 在【插入/更新】转换工程中,单击【插入/更新】组件,再单击工作区上方的预览图标。预览进行插入/更新处理后的数据,如图所示。

6-1-Excel输出

1. 创建Excel输出转换工程。使用Ctrl+N快捷键,创建【6-1-excel输出】转换工程。

2. 创建【CSV文件输入】组件,导入文件并浏览数据。 

2.1 在【Excel输出】转换工程,创建【CSV文件输入】组件,导入“2020年1月联考成绩.csv”文件并获取字段。

2.2 预览数据如图所示

3. 创建【Excel输出】组件并建立连接。在【Excel输出】转换工程中,单击【核心对象】选项卡,展开【输出】对象,选中【Excel输出】组件,并拖曳到右边工作区中。由【CSV文件输入】组件指向【Excel输出】组件,建立节点连接,如图所示。

3.1 双击【Excel输出】组件,在【文件】选项卡中,设置输出文件名称,【文件名】设置为“C:\Users\zhang\Desktop\ETL\55220-ETL数据整合与处理(Kettle)-实验数据和工程.rar\55220-ETL数据整合与处理(Kettle)-实验数据和工程\第6章\数据\2020年1月联考成绩2.xls”,其他参数采用默认值,

3.2 在【字段】选项卡中,对输出至“2020年1月联考成绩.xls”文件的字段参数进行设置,如图所示,此时完成【Excel输出】组件参数设置。

4. 运行当前转换

4.1 在【Excel输出】转换工程中,单击【Excel输出】组件,再单击工作区上方的预览图标。预览进行Excel输出处理后的数据,如图所示。

6-2-文本文件输出

1.创建文本文件输出转换工程。使用Ctrl+N快捷键,创建【6-2-文本文件输出】转换工程。

2.创建【表输入】组件,导入文件并浏览数据

2.1 新建一个数据库连接

2.2 输入查询sql语句

2.3 预览表中数据

3. 创建【文本文件输出】组件并建立连接。

3.1 在【文本文件输出】转换工程中,单击【核心对象】选项卡,展开【输出】对象,选中【文本文件输出】组件,并拖曳到右边工作区中。由【表输入】组件指向【文本文件输出】组件,建立节点连接,如图所示。

4.双击【文本文件输出】组件,弹出【文本文件输出】对话框,如图所示

4.1 在【文件】选项卡中,设置输出文件名称,【文件名】设置为“C:\Users\zhang\Desktop\ETL\实验数据和工程\第6章\数据\2020年1月月考1班数学成绩.txt”,其他参数采用默认值,如图所示

4.2 单击【内容】选项卡,如图所示。

4.3 在【字段】选项卡中,对输出至“2020年1月月考数学成绩.txt”文件的字段参数进行设置,如图所示,此时完成【文本文件输出】组件参数设置。

5. 运行当前转换

5.1在【文本文件输出】转换工程中,单击【文本文件输出】组件,再单击工作区上方的预览图标。预览进行文本文件输出处理后的数据,如图所示。

6-2-SQL文件输出

1. 创建SQL文件输出转换工程。使用Ctrl+N快捷键,创建【6-2-SQL文件输出】转换工程。

2.创建【表输入】组件,导入文件并浏览数据

2.1 新建一个数据库连接

2.2 输入查询sql语句

2.3 预览表中数据

3. 创建【SQL文件输出】组件并建立连接。

3.1 在【SQL文件输出】转换工程中,单击【核心对象】选项卡,展开【输出】对象,选中【SQL文件输出】组件,并拖曳到右边工作区中。由【表输入】组件指向【SQL文件输出】组件,建立节点连接,如图所示。

4.双击【SQL文件输出】组件,弹出【SQL文件输出】对话框,如图所示

4.1设置数据库连接。【数据库连接】设置为“demodbCnn”。设置目标表。【目标表】设置为“2020年1月_月考数学成绩”。设置输出文件名称。【文件名】设置为“E:\data\ 2020年1月_月考数学成绩”,其他参数采用默认值,此时完成【一般】选项卡的参数设置,如图所示。

4.2 在【内容】选项卡中,【日期格式】设置为“yyyy-MM-dd”,如图所示,此时完成【SQL文件输出】组件参数的设置。

5. 运行当前转换

5.1 在【SQL文件输出】转换工程中,单击【SQL文件输出】组件,再单击工作区上方的预览图标。预览进行SQL文件输出处理后的数据,如图所示。

7-1-开始

1.使用Ctrl+Alt+N快捷键,创建开始任务工程,并将工程命名为“开始”,即创建【开始】任务工程。

1.1 在【开始】任务工程中,单击【核心对象】选项卡,展开【通用】对象,选中【Start】组件,并拖曳到右边工作区中,如图所示,在一个任务中,只能有一个【Start】组件。

2. 双击上图所示的【Start】组件,弹出【作业定时调度】对话框,如图所示。

2.1 在上图所示的【作业定时调度】对话框中,设置有关参数,每天23:59开始,执行抽取数据的任务,如图所示,此时完成【Start】组件的参数设置。

3. 在【开始】任务中,单击【开始】组件(名称已由“Start”设置为“开始”),再单击工作区上方的 图标,弹出的【执行作业】对话框,如图所示。

4. 单击上图下方的【执行】按钮,运行【开始】任务工程

7-1-转换

1.创建转换任务工程。使用Ctrl+Alt+N快捷键,创建【7-1-转换】任务工程。

1.1在【转换】任务工程中,创建【Start】组件,设置参数,将其组件名称命名为“开始”,并设置为每月1日的11:59定时调度。

1.2 接着单击【核心对象】选项卡,展开【通用】对象,选中【转换】组件,并拖曳到右边工作区中,由【开始】组件指向【转换】组件,建立节点连接,如图所示。

2. 双击转换组件

2.1【Transformation】参数表示转换工程文件,缺省值为空,单击【Transformation】参数选项对应的【浏览…】按钮,浏览到月考成绩采集的“月考成绩采集.ktr”转换工程文件,将【Transformation】参数设置为“${Internal.Job.Filename.Directory}/月考成绩采集.ktr”,如图所示。

2.2 通过设置日志、浏览日志的方式,监控任务的运行。【设置日志】选项卡的参数设置如图所示,此时完成【设置日志】选项卡的参数设置。

2.3 单击【命名参数】选项卡,如图所示

3.运行当前转换

3.1 在【转换】任务工程中,单击【转换】组件,再单击工作区上方的 图标。在弹出的【执行作业】对话框中,设置运行任务参数,单击下方的【执行】按钮。

8-1-分组聚合客户订单

1. 建立转换工程。使用Ctrl+N快捷键,创建【8-1-分组聚合客户订单】转换工程。

2.创建CSV文件输入组件和获取订单数据。

2.1创建CSV文件输入组件(组件命名为“CSV文件输入(订单)”),如图所示。添加字段名,导入“order_list.csv”文件,并设置好字段参数。

2.2 预览获取的订单数据

3. 建立过滤和抽取数据组件和连接

3.1 创建过滤记录组件(组件命名为“过滤记录(客户ID非空和支付成功)”)、字段选择组件,用于筛选和抽取数据,并建立组件之间的连接,如图所示。

3.2 过滤掉客户ID为空和支付不成功的订单数据。在【过滤记录(客户ID非空和支付成功)】组件中,设置参数,过滤掉客户ID为空和支付不成功的订单数据。

3.2 进行字段选择,保留需要的字段,去除多余的字段。在【字段选择】组件中,设置参数,仅保留customerid、customermobile、ordernum和paytotalprice等字段,并分别改名为“客户ID”“客户手机号码”“order_num”和“pay_totalprice”,如图所示,丢弃其他与聚合客户订单无关的字段

4. 聚合统计

4.1 建立聚合统计组件和连接。创建排序记录组件和分组(命名为“分组(按客户统计)”)组件,并建立组件之间的连接,如图所示。

4.2  对客户ID进行排序。因为是分组聚合客户订单,所以必须对客户ID进行排序,即同一个客户ID的数据要连在一起,否则数据可能不正确。在【排序记录】组件中,设置客户ID字段按照升序进行排序。

4.3 对客户的订单数和商品实际支付金额等字段进行分组聚合,统计各个客户的订单。设置【分组】组件参数,在下图所示的【分组】对话框的【构成分组的字段】表中,设置【分组字段】为“客户ID”“客户手机号码”,即按照“客户ID”“客户手机号码”统计客户订单;在【聚合】表中,设置的参数如图所示。

5. 装载和解读聚合客户订单数据

5.1 建立装载结果数据组件和连接。创建排序记录组件(组件命名为“排序记录(按客户消费金额排序)”)和Excel输出(组件命名为“Excel输出(客户订单)”)组件,将聚合统计的各个客户订单数据输出至Excel文件中,并建立组件之间的连接,如图所示

5.2 根据客户订单消费金额进行排序。在【排序记录(按客户销售金额排序)】组件中,设置客户消费金额字段按降序进行排序。

5.3 将经过排序的各客户订单数据输出并装载至Excel文件中。在【Excel输出(客户订单)】组件中,设置参数,输出的Excel文件名为“无人售货机分组聚合客户订单.xls”,输出的字段参数设置如表所示。

6.运行当前转换

6.1 预览分组聚合客户订单结果数据。在【分组聚合客户订单】转换工程中,单击工作区上方的预览图标,预览分组聚合客户订单的数据,如图所示。

8-1-计算各商品销售金额

1. 创建计算各商品销售金额转换工程。使用Ctrl+N快捷键,创建【计算各商品销售金额】转换工程

2. 创建CSV文件输入组件和获取数据。

2.1 创建CSV文件输入组件,并命名为“CSV文件输入(订单)”,如图所示。设置组件参数,导入“order_details.csv”文件,并设置好字段参数。

2.2 预览获取的数据。在【计算各商品销售金额】转换工程中,选择【CSV文件输入(订单)】组件,单击工作区上方的预览图标,预览数据,如图所示。

3. 过滤和抽取订单详情数据

3.1 创建筛选数据组件和建立连接。创建过滤记录组件(组件命名为“过滤记录(商品名称非空和支付成功)”)和字段选择组件,并建立组件之间的连接,如图所示。

3.2 过滤掉商品名称为空和支付失败的订单数据。在【过滤记录(商品名称非空和支付成功)】组件中,设置参数,保留商品名称非空和支付成功的订单数据,过滤掉商品名称为空和支付不成功的订单数据。

3.3 进行字段选择,保留需要的字段,去除多余的字段。在【字段选择】组件中,设置参数,仅保留productname、amount、productpaytotalprice等字段,并分别改名为“商品名称”“product_number”“product_paytotalprice”,如图所示,丢弃其他与计算各商品销售金额无关的字段。

4. 聚合统计

4.1 建立聚合计算商品销售金额的组件和连接。创建排序记录组件、分组(命名为“分组(按商品名称统计)”)组件,并建立组件之间的连接,如图所示。

4.2 对商品名称进行排序。因为需要计算各商品的销售金额,所以必须对商品名称进行排序,在【排序记录】组件中,对商品名称字段按照升序进行排序。

4.3 对购买商品数量和商品实际支付总金额等字段进行聚合计算,统计各个商品的销售金额。在【分组(按商品名称统计)】组件中,有关参数设置如图所示。

5. 装载和解读计算各商品销售金额数据

5.1 建立数据装载组件和连接。创建排序记录组件(组件命名为“排序记录(按销售金额排序)”)、Excel输出(组件命名为“Excel输出(各商品销售金额)”)组件,将已进行聚合统计的各商品销售金额数据输出至Excel文件中,并建立组件之间的连接,如图所示。

5.2  根据商品销售金额进行排序。在【排序记录(按销售金额排序)】组件中,设置商品销售金额字段按照降序排序。

5.3 将经过排序的各商品销售金额数据输出并装载至Excel文件中。在【Excel输出(各商品销售金额)】组件中,设置参数,输出的Excel文件名为“无人售货机各商品销售金额.xls”,输出的字段参数如表所示。

 

6. 运行当前转换

6.1 预览各商品销售金额结果数据。在【计算各商品销售金额】转换工程中,选择【Excel输出(各商品销售额)】组件,单击工作区上方的预览图标,预览各商品销售金额数据,如图所示。

8-2-实现各售货机销售金额统计

1. 创建统计各售货机日销售金额转换工程。使用Ctrl+N快捷键,创建【8-2-统计各售货机日销售金额】转换工程。

2. 创建CSV文件输入组件和获取数据。

2.1 创建CSV文件输入组件,组件命名为【CSV文件输入(订单)】,如图所示。设置组件参数,导入“order_details.csv”文件,并设置好字段参数,订单生成时间createdtime字段的字段类型需要设置为String。

2.2 预览获取的数据。

3. 过滤和抽取订单详情数据

3.1 创建筛选数据组件和连接。创建过滤记录组件(组件命名为“过滤记录(售货机ID非空和支付成功)”)和字段选择组件,并建立组件之间的连接,如图所示。

3.2 过滤掉售货机ID为空和支付失败的订单。在【过滤记录(售货机ID非空和支付成功)】组件中,设置参数,保留售货机ID非空和支付成功的订单,过滤掉售货机ID为空和支付不成功的订单。

3.3 进行字段选择,保留需要的字段,去除多余的字段。在【字段选择】组件中,设置参数,仅保留boxid、createdtime、amount和productpaytotalprice等字段,并分别改名为“售货机ID”“created_time”“product_number”“product_paytotalprice”,如所示,丢弃其他与统计各售货机日销售金额无关的字段。

4. 剪切时间字段

4.1 建立剪切字符串组件和连接。创建【剪切字符串】组件,并建立连接,如图所示。

4.2 从订单生成时间字段中剪切出日期。在【剪切字符串】组件中,设置参数,剪切订单生成时间字段,剪切出日期,并命名新字段名称为“销售日期”。

5. 聚合统计

5.1 建立聚合统计各售货机销售金额组件和连接。创建排序记录组件、分组(命名为“分组(按售货机ID和日期统计)”)组件,并建立组件之间的连接,如图所示。

5.2 对售货机ID进行排序。因为需要计算各售货机的日销售金额,所以必须对售货机ID和销售日期进行排序,在【排序记录】组件中,对售货机ID和销售日期字段按照升序进行排序。

5.3 对售货机的商品实际支付金额等字段进行分组聚合,统计各售货机的日销售金额。在【分组(按售货机ID和日期统计)】组件中,有关参数设置如图所示。

6. 装载和解读统计各售货机日销售金额数据

6.1 建立数据装载组件和连接。创建排序记录组件(组件命名为“排序记录(售货机ID排序)”)、Excel输出组件(组件命名为“Excel输出(售货机日销售金额)”)组件,将聚合统计的各售货机的日销售金额输出至Excel文件中,并建立组件之间的连接,如图所示。

6.2 对售货机ID和销售日期进行排序。在【排序记录(售货机ID排序)】组件中,对售货机ID和销售日期字段按照降序进行排序。

6.3 将经过排序的各售货机日销售金额数据输出并装载至Excel文件中。在【Excel输出(售货机日销售金额)】组件中,设置参数,输出的Excel文件名为“无人售货机各售货机日销售金额.xls”,输出的字段参数如表所示。

7. 运行当前转换

7.1 预览各售货机日销售金额结果数据。在【统计各售货机日销售金额】转换工程中,选择【Excel输出(售货机日销售金额)】组件,单击工作区上方的预览图标,预览各售货机日销售金额数据,如图所示。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值