kettle实例--高级转换-记录集合并

1. 建立【多路数据合并连接】转换工程。

(1) 创建多路数据合并连接转换工程。使用Ctrl+N快捷键,创建【多路数据合并连接Multiway merge join】转换工程。

 

(2) 创建Excel输入和排序记录组件,分别导入月考语文成绩、数学成绩和英语成绩,并进行排序。 ① 创建【Excel输入】组件,并命名组件名称为“语文成绩”,导入“月考语文成绩.xls”文件,设置参数并预览数据;同理,将数学和英语成绩导入

 

 预览数据如图

 

 2. 设置【多路数据合并连接】参数。

(1) 接着配置【排序记录】组件,再分别由【成绩】组件指向【排序记录】组件,建立节点连接,设置排序参数,对“学号”字段进行排序。单击工作区上方预览的图标,分别预览【语文成绩排序】【数学成绩排序】英【语成绩排序】的排序结果,分别如图所示。

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

 

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

 ② 与步骤①类似的操作,【Input Step2】参数设置为“数学成绩排序”,同一行的【Join Keys】参数设置为“学号”。

③ 与步骤①类似的操作,【Input Step3】参数设置为“英语成绩排序”,同一行的【Join Keys】参数设置为“学号”。

(3)创建字段选择控件,选择从合并表中取出学号,姓名,成绩等项,配置如图

 (4)选择计算器控件,配置计算出每个学生的总成绩

 3. 预览结果数据。

单击上方运行按钮,查看结果

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言示例代码,用于将三个队列连接到一个capsfilter插件进行多路自定义数据合并: ``` #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline, *queue1, *queue2, *queue3, *capsfilter; GstCaps *caps; GstBus *bus; GstMessage *msg; GstStateChangeReturn ret; /* Initialize GStreamer */ gst_init(&argc, &argv); /* Create the elements */ queue1 = gst_element_factory_make("queue", "queue1"); queue2 = gst_element_factory_make("queue", "queue2"); queue3 = gst_element_factory_make("queue", "queue3"); capsfilter = gst_element_factory_make("capsfilter", "capsfilter"); pipeline = gst_pipeline_new("test-pipeline"); if (!pipeline || !queue1 || !queue2 || !queue3 || !capsfilter) { g_printerr("Not all elements could be created.\n"); return -1; } /* Build the pipeline */ gst_bin_add_many(GST_BIN(pipeline), queue1, queue2, queue3, capsfilter, NULL); if (gst_element_link_many(queue1, capsfilter, NULL) != TRUE || gst_element_link_many(queue2, capsfilter, NULL) != TRUE || gst_element_link_many(queue3, capsfilter, NULL) != TRUE) { g_printerr("Elements could not be linked.\n"); gst_object_unref(pipeline); return -1; } /* Set caps on the capsfilter */ caps = gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING, "RGB", "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, NULL); g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL); gst_caps_unref(caps); /* Start playing */ ret = gst_element_set_state(pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr("Unable to set the pipeline to the playing state.\n"); gst_object_unref(pipeline); return -1; } /* Wait until error or EOS */ bus = gst_element_get_bus(pipeline); msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); /* Free resources */ if (msg != NULL) gst_message_unref(msg); gst_object_unref(bus); gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); return 0; } ``` 这个示例代码创建了一个包含三个队列和一个capsfilter插件的GStreamer管道,并将三个队列连接到capsfilter插件,以进行多路自定义数据合并。在这个示例中,我们将capsfilter插件的输出格式设置为"video/x-raw",分辨率为640x480,格式为RGB。你可以根据自己的需求修改这些参数。 请注意,这个示例代码仅仅是一个演示,实际应用中可能需要更复杂的管道和更多的元素来实现多路数据合并

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值