FineBI实战项目一(3):Kettle实现ETL到数据仓库

目前,finebi_shop_bi 中是没有任何数据的,是一个空的数据库。而后续我们的所有数据分析都将在该数据库中进行。我们第一件事情就是要将 「finebi_shop」数据库中的所有表抽取到「finebi_shop_bi」数据库中。要抽取并装载数据到「finebi_shop_bi」中,我们首先要在「finebi_shop_bi」中创建对应的表。

1 数据抽取业务分析

我们已经大概熟悉了上面的6张表,这6张表不是所有数据一次性原封不动地同步到数据仓库中,而是有一些处理细节。考虑以下几个业务场景:

  1. 每一天都需要进行订单的分析,例如:2020年4月18日一共有多少笔订单、订单的总额是多少。
  2. 每一天都需要进行用户的分析,例如:2020年4月18日一共注册有多少个用户。
  3. 商品分类、区域的变化率很少,因为分类、区域几乎都是常年不变的。

商品的数据相对变化频率较高,因为可能每天都会有商品信息的更新。

结合上述的业务场景,我们可以确定数据的抽取周期:

表名说明装载表抽取方式抽取周期
finebi_areas行政区域表ods_ifinebi_areas全量同步抽取每周
finebi_goods商品表ods_finebi_goods全量同步抽取每天
finebi_goods_cats商品分类表ods_finebi_goods_cats全量同步抽取每周
finebi_orders订单表ods_finebi_orders增量同步抽取每天
finebi_order_goods订单明细表ods_finebi_order_goods增量同步抽取每天
finebi_users用户信息表ods_finebi_users增量同步抽取每天
  • 全量同步抽取:将所有数据同步抽取到数据仓库
  • 增量同步抽取:只抽取抽取新增的数据到数据仓库

2 关于 ods 的意义

ODS(英语:Operational 业务/ Data 数据/ Store 存储)是一种数据架构或数据库设计的概念,出现原因是来自于当需要集成来自多个系统的数据,结果又要给一或多个系统使用时。

数据仓库的ods表是将业务系统数据库表原样抽取进来,结构几乎是一样的,只不过加了一个抽取数据的日期字段。

3 每周数据抽取作业开发

3.1 开发行政区域数据抽取

finebi_areas行政区域表全量同步抽取每周

根据之前的分析,行政区域表为全量同步抽取,所以我们只需要全部抽取到数据仓库中建表即可。但需要注意:我们需要清晰地标识出数据是哪天抽取过来的,所以需要额外添加一个当前日期的字段。

(1)构建Kettle数据流组件图

(2)配置表输入组件

新建数据库连接,点击新建

配置数据库连接信息

获取读取的表信息

SELECT *, current_date() as dt FROM finebi_areas

通过预览数据,可以看到,除了原有 finebi_areas 表的所有字段之外,还增加了一个当前日期字段,后续作为数据的抽取日期。

(3)配置插入/更新组件

配置数据仓库的连接

指定目标表,目标表的名称为:业务系统数据库表加一个 ods_ 前缀。

点击「SQL」按钮执行

执行转换

查看数据表

(4)构建作业,每天执行一次

创建作业

配置转换

配置定时运行:每天00:05同步一次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超维空间M1无人机使用说明书——51、ROS无人机使用AR二维码识别与定位

引言:二维码识别与定位是指ROS通过创建AR标签并且对AR标签进行识别,标签可以由自己任意创建,具体方法会在文中给出,摄像头可以通过识别AR标签大小和姿态获取到标签对应的ID和位置等信息,实现识别与定位 注意&#xff…

Qt/QML编程学习之心得:Linux下Thread线程创建(26)

GUI设计中经常为了不将界面卡死,会用到线程Thread,而作为GUI设计工具,Qt也提供了一个这样的类,即QThread。 QThread对象管理程序中的一个控制线程。线程QThread开始在run()中执行。默认情况下,run()通过调用exec()启动事件循环,并在线程内运行Qt事件循环。 也可以通过…

Camtasia2024苹果Mac电脑版(屏幕录制剪辑软件)

Camtasia Mac2024免费版是一款由TechSmith公司官方进行汉化推出的最新版本,借助Camtasia,您可以轻松记录屏幕并创建优美,专业的视频。记录所有内容-您的整个屏幕或只是一个窗口。或者,添加您已经拥有的视频,图像&#…

python 文件

open """ def open(file: FileDescriptorOrPath, //路径mode: OpenTextMode "r", //设置打开文件的模式 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 w 打开一个文件只用写入。如果该文件已存在则打开文件&#…

一文讲透Python数据分析可视化之直方图(柱状图)

直方图(Histogram)又称柱状图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。通过绘制直方图可以较为直观地传递有关数据的变化信息,使…

【Python从入门到进阶】46、58同城Scrapy项目案例介绍

接上篇《45、Scrapy框架核心组件介绍》 上一篇我们学习了Scrapy框架的核心组件的使用。本篇我们进入实战第一篇,以58同城的Scrapy项目案例,结合实际再次巩固一下项目结构以及代码逻辑的用法。 一、案例网站介绍 58同城是一个生活服务类平台&#xff0c…

msckf_vio在ubuntu20.04中的编译

1.新建catkin workspace文件夹,并在其中新建src文件夹,并将源码clone至src内。 源码地址:https://github.com/KumarRobotics/msckf_vio 目录层级示意如下,build和devel不必新建,后续指令会自动新建。 2. 在编译之前…

java CAS

CAS 在高并发场景,可以使用加锁 或者CAS来保证原子性,但是加锁是很重量级的操作,CAS类似于乐观锁CAS ( Compare and swap )比较并交换,是实现并发算法时常用到的技术,包含三个操作数&#xff1…

LVGL的List控件的触摸按键和实体按键的处理

在LVGL的List控件使用过程中,虽然通过触摸按键选择item,但是有些场景需要实体按键选取item,但是LVGL 的V8.3中没有像Emwin那样有函数选择list item的函数。LVGL中List引入了Group的概念,把列表项都添加到同一个group中。然后通过更…

Linux Capabilities 基础概念与基本使用

目录 1. Linux capabilities 是什么? 2. capabilities 的赋予和继承 线程的 capabilities Permitted* 允许 Effective* 有效 Inheritable* 遗传 Bounding(集合) Ambient 文件的 capabilities Permitted Inheritable Effective 3…

2.4 DEVICE GLOBAL MEMORY AND DATA TRANSFER

在当前的CUDA系统中,设备通常是带有自己的动态随机存取存储器(DRAM)的硬件卡。例如,NVIDIA GTX1080具有高达8 GB的DRAM,称为全局内存。我们将互换使用全局内存和设备内存这两个术语。为了在设备上执行内核,…

通过聚道云软件连接器实现钉钉与自研主数据系统的完美融合

客户介绍 某知名高校,拥有数千名教职工,日常管理涉及大量的人员异动信息。该高校设有多个学院和研究所,涵盖了工、理、管、文等多个学科领域。该高校是一所充满活力和潜力的学府,致力于为学生提供优质的教育资源和多元化的学习环…

广义零样本学习综述的笔记

1 Title A Review of Generalized Zero-Shot Learning Methods(Farhad Pourpanah; Moloud Abdar; Yuxuan Luo; Xinlei Zhou; Ran Wang; Chee Peng Lim)【IEEE Transactions on Pattern Analysis and Machine Intelligence 2022】 2 conclusion Generali…

三种主流流协议的浏览器播放解决方案

三种主流流协议的浏览器播放解决方案 流协议介绍 主流的流协议(streaming protocol)包括HLS、RTMP、RTSP,下面依次介绍下三种视频流。 HLS HLS(Http Live Streaming) 是一个由苹果公司提出的基于HTTP的流媒体网络传输协议&…

微信小程序 引导地址授权 获取位置信息 uniapp

概述 获取位置信息,需要保证是否授权位置信息,有几个条件是导致无法授权的原因 (1)微信应用未授权定位设置 (2)首次进入小程序未授权位置信息 (3)小程序之前阻止过授权位置信息 &…

SpringBoot整合JUNIT5单元测试+Mockito

目录 第一章、快速了解JUnit单元测试1.1)单元测试是什么1.2)为什么使用JUnit单元测试 第二章、快速使用JUnit5框架2.1)在pom文件中导入依赖2.2)新建测试类2.3)新建一个简单的测试方法 第三章、测试框架提供的注解和方法…

【设计模式】备忘录模式

一起学习设计模式 目录 前言 一、概述 二、结构 三、案例实现 1、 “白箱”备忘录模式 2、“黑箱”备忘录模式 四、优缺点 五、使用场景 总结 前言 【设计模式】备忘录模式——行为型模式。 一、概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以…

Android studio BottomNavigationView 应用设计

一、新建Bottom Navigation Activity项目: 二、修改bottom_nav_menu.xml: <itemandroid:id="@+id/navigation_beijing"android:icon="@drawable/ic_beijing_24dp"android:title="@string/title_beijing" /><itemandroid:id="@+i…

小游戏实战丨基于PyGame的消消乐小游戏

文章目录 写在前面PyGame消消乐注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame实现喜羊羊与灰太狼版消消乐小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700193 实验环境 python3.11及以上pycharmpygame 安装pygame…

jenkins忘记admin密码

jenkins忘记admin密码&#xff0c;重置密码&#xff1a; 1.找打jenkins目录下面的config.xml [rootVM-0-15-centos .jenkins]# find ./* -name config.xml ./config.xml [rootVM-0-15-centos .jenkins]# pwd /root/.jenkins删除下面的这部分内容&#xff1a; [rootVM-0-15-c…