Welcome to IT 生活 互动学习空间,IT 记录 、分享、学习、提高
Oct 25

 itlife365.com_begin_数据仓库模型之TeraData金融数据模型学习

Teradata天睿公司(纽交所代码:TDC),是美国前十大上市软件公司之一。经过逾30 年的发展,Teradata天睿公司已经成为全球最大的专注于大数据分析、数据仓库和整合营销管理解决方案的供应商。其提出一种先进的FS-LDM模型(Financial Services Logcial Data Model) --企业级数据模型,包括金融机构业务数据,囊括了银行约80%的业务数据,并把预定义的业务模板连接到核心银行业务数据和数据仓库中。
 Teradata FS-LDM是一个成熟产品,在一个集成的模型内支持保险、银行及证券,包含十大主题:当事人、产品、协议、事件、资产、财务、机构、地域、营销、渠道。
  十大主题划分如下:
BANK-LDM主题域模型设计采用分类设计的策略:
1、重点设计主题(客户、协议、事件、资产、财务)
  特点:是模型中的重点主题,且在源系统中有丰富的数据来源和参照。
  目标:尽量保持完整性、丰富性。
  策略:按照FS-LDM的框架进行设计,同时补充银行的个性数据元素。
2、自主设计主题(申请、营销活动、渠道、机构、产品)
  特点:非核心主题,基本没有或者仅有非常少的数据来源和参照。
  目标:保证模型架构的完整性和扩充性。
  策略:按照FS-LDM进行设计,将来根据实际情况调整。
3、简化设计主题(地域)
  特点:模型的重要参考主题,一般情况下源系统有数据,但定义和使用方法与FS-LDM不匹配。
  目标:暂不进行唯一地址识别,但要完整保留此类信息。
  策略:暂作为客户等的属性信息进行设计。
逻辑数据模型LDM,以协议主题实例:
 
数据仓库模型层次划分:
 
一般层次为:ODS-->FDM-->ADM-->DW-->Application
TeraData数据仓库整体架构:
 itlife365.com
IBM与Teradata仓库模型比较
银行业:
  IBM有BDWM(Banking Data Warehouse Model)
  Teradata有FS-LDM(Financial Services Logical Data Model)
电信业:
  IBM有TDWM(Telecom Data Warehouse Model)
  Teradata有TS-LDM(Telecom Services Logical Data Model)
IBM模型主题划分如下:
itlife365.com
国内厂商提供的解决方案:
itlife365.com 国内提高
 
itlife365.com 国内提高
TeraData实施案例:
(1)农业银行
   
(2)徽商银行
    http://wenku.baidu.com/view/05e78cf17c1cfad6195fa713.html  
 总结:
     结合两大厂商提供的数据仓库解决方案,可以看出,其就数据仓库划分的主题基本类似,内容都差不多,只是叫法不同而已。国内有些厂商提供的解决方案也包括以上9大主题内容。需要注意的是,并不是国外的模型就是最合适的解决方案,并不是最先进的模型就是最佳的,要集合自己银行的特点以及业务发展模式,一味的模仿和追新并不是一件好事。否则,科技运营的成本会大打折扣。投入的成本和回报是成比例的,低投入高产出这种现象太少了。数据仓库是一步一步建设的,先有基础,才有高楼大厦,基础不牢,就成“危房”了。
DW-Model-Teradata-FLDM
itlife365.com_end_数据仓库模型之TeraData金融数据模型学习
Tags:
Oct 24
今天在知乎上发布一篇文章,但是发布后发现不能编辑了。是什么情况?
知乎发表文章后如何编辑已经发布的文章
 
 
Oct 24
ITLIFE365.COM_begin FROM 网络
说说ETL的工程-面试前看看
1. 为什么要讲ETL工程

ETL工程是数据分析处理中非常重要的一环,ETL工程的输入是各种数据源,输出是各种用于分析的表和数据文件,因此它直接决定了用来分析的数据是否易用、数据质量的好坏、数据是否完整、数据是否可信等关键性问题。可以说,ETL在数据分析工作中占据着非常重要的地位,所以在本文我们会带领大家了解下ETL的内部构造。
2.本文的目标

因为这是入门系列文章中的一篇,因此我们不会过于沉入技术细节,而是从一个全局的角度,用尽可能简洁的语言,带领大家了解下ETL的概念、作用、组成结构、数据处理方式等,旨在让大家对ETL有一个比较全面的了解,期望可以在面试或者工作中帮助到大家。
3. 本文的讲解思路

第一部分,讲解ETL的概念和作用,让大家对ETL有个初步的了解。
第二部分,讲解ETL针对不同的数据和情况是如何处理的,让大家了解它是如何运作的。
第三部分,讲解ETL的运行过程,以及在编写ETL程序时,应该注意哪些问题,这部分主要是为了让大家对ETL有个稍微深入一点的了解,在面试和工作中都可以自如应对。
。。。
以下为正文
01 ETL简介
ETL ,是三个英文单词Extract-Transform-Load的首字母缩写,用来描述将数据从来源端经过萃取(extract)、转化(transform)、加载(load)至目的端的过程。ETL通常用于数据仓库的构建过程,它的主要作用是将企业中分散、非完全结构化、标准不统一的各种数据,整合到一起,形成企业级统一数据仓库,为企业的分析决策提供有质量保证的数据源。
02 ETL的一般过程
从ETL的字面来看,就知道它主要包含三大阶段,分别是数据抽取、数据转换、数据加载。接下来我们将依次对这三个阶段进行详细的介绍。
1.数据抽取 
这个阶段的主要目标是汇总多种数据源,为下一步的转换做准备。在动手做抽取之前,你需要充分了解你的各种数据源,理解并利用他们的特性,结合实际分析业务需求,选择合适的抽取方式。下面我们针对常见的几种数据源,谈下他们常用的抽取方式。
1.1 关系型数据库 
这种数据源的特性是数据高度结构化、数据量不算特别大、数据更新相对频繁、数据质量较高、数据获取比较方便。根据分析业务需求的不同,一般分为离线抽取和实时抽取。
离线抽取,应用场景是对短时间内的更新不敏感,只关心一段时间后的最终状态,一般是固定周期定时抽取。抽取方法,可以采用快照的方式,对整个表做全表快照;或者是采用基于时间字段的增量抽取,但是需要对这个字段的更新场景非常了解。
实时抽取,通常的应用场景是对数据的最新状态非常敏感,当有新数据插入或者旧数据更新时,需要及时抽取。抽取方法有很多,其中常用的一种是基于消费数据库binlog的方式,如阿里开源的canal。
1.2 服务端程序日志文件
这种数据源的特性是各种日志数据混杂在一起(需要过滤出自己需要的)、数据格式比较多样(格式可能不统一)、数据量相对较大。对于这类数据,通常的方法就是过滤抽取。抽取方法,可以使用flume监控文件目录,或者使用FileBeat实时监控文件内容变化。
1.3 客户端用户行为数据
客户端用户操作日志的数据收集方案,其实也算是一种抽取方式。这种数据源的特点是数据量非常大、数据源非常分散、数据质量参差不齐、数据结构化程度高。针对这种数据,通常的抽取方法,就是专门设计一个数据收集系统来处理收集数据的问题。
1.4 其他
实际工作中,我们可能还会有其他数据源,如NoSQL数据库、人工整理的数据(例如Excel)、消息队列中的数据、系统运行数据、时序数据库等。这些都需要根据具体数据源的特性和具体分析业务的需要,来设计抽取方式,篇幅有限,这里就不一一举例了。

2.数据转换
这个阶段是ETL的核心环节,也是最复杂的环节。它的主要目标是将抽取到的各种数据,进行数据的清洗、格式的转换、缺失值填补、剔除重复等操作,最终得到一份格式统一、高度结构化、数据质量高、兼容性好的数据,为后续的分析决策提供可靠的数据支持。下面对其主要过程做下简单说明。
2.1 数据清洗
这个环节的主要作用是清洗掉脏数据,以免混入正常数据中,造成数据质量下降,引导有偏差的错误决策。通常的做法有,md5校验、关键字段检查、格式类型一致性检查、无效性检查等。
md5校验通常用于通过公网传输的数据,为防止数据被篡改,需要比对md5值来保证数据的安全性,没能通过md5检验比对的数据将被视为脏数据过滤掉。
关键字段检查,是指在一条数据记录中,非常关键的字段,如果其值不合法,或者类型不对,将被视为非法数据。比如,识别用户行为的字段,其值不在规定取值范围内时,将无法识别具体是做了什么操作,将被视为非法数据清洗掉。
格式类型一致性检查,就是检查一条数据记录的整体格式或者重要字段的类型是否符合规范,如果不符合,同样也是没办法处理,只能作为脏数据处理掉。例如,不合法的日期格式。
无效性检查,通常是比较严格的过滤方法,它主要目的是为了保证数据的高可靠性,通常是事先规定好数据的可信范围,不满足的将被视为不可信的无效数据。
2.2 格式转换
这个环节的主要作用是对数据格式做统一化规范化处理,方便后续的分析作业能够更好地使用数据。一般根据源数据格式和目标格式的不同,会有不同的实现。一般包含记录格式转换和字段格式转换。记录格式转换,就是最终将一条记录转换成什么格式,例如转成json格式或csv格式。字段格式转换是对字段值进行格式的统一化处理,如将长整型时间戳全部转化为人类可读的日期格式。
2.3 缺失值填补
这个环节是针对数据中缺失的空位进行填充,以保证数据类型的一致性或完整性。例如,对于一个数量类的整数型字段,当其值缺失时,可以考虑填充0。这里要注意的是缺失值填充要相对谨慎一些才行,因为这个过程相当于是在修改原始数据,一定要确保填充的值对后续的分析不会造成误导性的影响。
2.4 剔除重复数据 
这个环节的主要作用是防止数据重复上传,造成误判。例如,一个用户播放一个视频,产生一条播放数据,如果由于某种原因,数据重复上传了3次。在服务端看来这个用户就看了3次这个视频,可能就会误以为这个用户非常喜欢这个节目。因此,剔除重复数据,是非常有必要的,也是保证数据质量的前提。
2.5 增加必要信息 
这个环节通常的作用是对数据增加一些追踪信息或者是生成一些必要的标识字段。有些字段是和具体的业务强相关的,也有一些通用的字段。比如,源数据里只有长整型时间戳字段,可以增加可读性比较高的日期时间字段,还可以增加数据来源字段便于追踪数据血缘关系。
2.6 其他 
有些公司根据自己公司的具体业务,可能会增加数据抽样、数据聚合、指标合并等环节,这和公司的分析诉求是强相关的,这里就不展开讲了。

3.数据加载 
这部分的主要目标是把数据加载至目的地,比如数据仓库中。通常的做法是,将处理好的数据写成特定格式(如parquet、csv等)的文件,然后再把文件挂载到指定的表分区上。也有些表的数据量很小,不会采用分区表,而是直接生成最终的数据表。
ETL vs. ELT
可能有些同学听说过ELT的概念,这里我们也简单介绍下,并说下它和ETL的区别。
ELT,从字面上看,就是把L(加载)放在了T(转换)前面,也就是说处理过程是萃取(extract)、加载(load)、转化(transform)。实际上,称为ELTL更合适,先把数据抽取出来,之后加载到目的地,然后再进行数据转化,最后再把转化后的结果加载到新的数据表中。
它和ETL的最大区别就是,处理上的顺序略有不同。ELT这样做的好处,是为了将数据先转移到另一个体系中,之后就可以利用新体系下的一些框架完成对数据的高效处理(数据转换)。
笔者公司就是采用的这种方式,我们会把收集到的用户数据,首先以原始文件的形式加载至数据仓库的原始层,之后再调用spark处理框架对数据做各种处理转换,最后再把转换后的结果加载到数据仓库的新的表中。在这个过程中,就是先把数据转移到分布式存储(HDFS)上,然后才能利用分布式的数据处理框架(spark)完成高效的数据转换操作。

03 ETL的运行过程

前面几个部分我们介绍了ETL的概念,以及它的各个环节。本小节我们来说下,ETL的实际运行过程。ETL不是一个一劳永逸的过程,因为数据会源源不断地来,因此ETL需要定时或实时地对新来的数据进行数据。这里我们就简单介绍下用户行为数据的离线ETL的大致运行过程。
第一步,需要客户端SDK和数据收集服务的配合,不断地抽取客户端上发生的用户行为,并以文件的形式写入磁盘。
第二步,会有一个定时调度程序,负责将收集到的大量行为日志文件,切割并上传至HDFS上,并在指定位置写入上传完成的标记文件。
第三步,另一个定时调度程序会启动一个数据处理作业,去读取上传完成标记,待上传完成后,读入原始数据,开始进行数据转换处理,并将处理好的结果写入HDFS特定的位置。
第四步,通过特定脚本或者SDK将第三步产生的文件加载到对应的数据的特定分区上,至此一次完整的过程就完成了。
 
有些同学可能会有疑问,为什么第二步和第三步不放在一个工作流中调度?这是因为第二步是发生在数据收集服务端集群上的,是一个多台并行的调度,而第三步是调度起一个spark处理程序,是提交一个作业到yarn集群上,两个过程是无法组成一个工作流的。
 
开发ETL工程的注意事项
ETL程序的开发是一个非常复杂的过程,笔者公司也是经过了很久的迭代才趋于稳定的。以下罗列其中一些注意事项,希望对相关开发同学有所帮助:
1、数据清洗一定要慎重。因为清洗操作稍有不慎,就可能把正常的数据给过滤掉了。因此,比较好的实践方式是,在处理过程中增加计数机制,即记录整个批次的原始数据量,以及每个特定逻辑清洗掉了多少数据,这样不仅能做到心中有数,同时也可以将这些计数结果监控起来,如果某个数值异常升高,可能是业务数据发生了变化或某个逻辑出了问题。
2、缺失值填充要结合具体业务。前面提到了关于缺失值的填充,这里强调一点是要结合具体业务和分析需求来对缺失值进行填充,如果无法明确该如何填充,其实存Null值比填充更好。因为错误的填充缺失值,可能会破坏原有的数据。
3、设计好数据组织规范。是否有一个比较好的数据组织规范,决定了数据加载环节实现的难易程度。建议大家要从后向前设计,先设计好存储规范,然后再进行前面的数据转换设计。
4、统一实时ETL和离线ETL。有些业务场景会出现一份数据既用于实时业务,也用于离线分析。那么,值得注意的是,最好离线和实时的ETL处理逻辑要能够统一,避免由此导致出现不一致的统计口径。

SUMMIT总结
作为一名入门级选手,只需要了解上文的这些内容就差不多了,剩下的就是在具体工作中,结合公司的具体业务,在实际操练过程中,加深对ETL的理解。希望本文能够对你有所帮助。

ITLIFE365.COM_END FROM 网络
Tags:
Oct 4

欢迎您的来到!

  您知道吗?您的意见是可以赚钱的!全世界每天都有成千上万的公司需要测试和研究他们的产品或服务,为了解消费者对他们产品或服务的评价,或是了解未来的市场需求,这些公司动辄投入百万巨资,委托专业的调研机构来进行市场调查。而对于帮助他们完成问卷调查的您,市场调查公司当然要给予报酬。正因如此,参与市场调查成了一种风靡全球的网上赚钱方法!

  在您注册成为会员之后,您将看到我们精心整理的国内外知名的市场调查公司列表。这些公司都是可以免费加入并且信誉良好的公司,您都可以放心注册,然后等待调查邀请邮件发到您邮箱,您完成后就可以获得积分或者现金奖励了!不过,由于每个公司发送给您的调查邀请邮件都比较有限,调查问卷的开头通常也设有严格的样本筛选问题,为了获得尽量多参与调查的机会,我们建议您注册尽量多的调查公司。

  欢迎您今天就成为本网一员,我们承诺这是完全免费并且永久性免费的!

  努力可以实现填写每份问卷的奖励约为1-10美元;

  推荐朋友注册,可以获得持续性收入;

  新产品上市前,您先得到最前沿资讯;

  完全免费,而且永远免费!

以下是我们精心挑选的优秀市场调查公司列表,建议您全部注册以便获得最多的调查机会!

1

第一调查网:第一调查网由上海库思信息技术有限公司运营,是国内一家老牌并且具有影响力的调查公司,也是国内较早自主研发调研平台的公司,专门为企业用户提供在线调研的全套解决方案。用户每有效参加一次商业调查可以获得2100元(RMB)的现金收入,该网站调查多、支付及时、信誉好,积满50元可通过支付宝收款。

除了有奖问卷之外,该网站还提供一个非常有潜力的五级推荐计划,分别为15%10%5%5%5%。长期累计下来,这个推荐计划的收益非常不错!推荐!点击下图即可马上免费注册:

第一调查网

Oct 4

fckeditor2.6.4上传文件按日期存放及重命名方法

how-fckeditor-change-uploadfile-path-and-filename by itlife365.com

原因备注:现在的fckeditor 都已经到版本4了,因为之前使用的是2.6.4 所以目前只能基于这个版本进行修改。
1、实现 fckeditor 按日期分目录的形式存放上传的文件,比如今天是 2020年10月4日,那么今天上传的文件都放在这个目录里面去,明天上传的则自动创建并放在类似 2020-10-05 这样的目录里面去。
(1)找到 editor\editor\filemanager\connectors\php\ 文件夹下的 config.php 文件(/editor/fckeditor/editor/filemanager/connectors/php)
(2)找到如下配置变量
PHP代码
        
  1. $Config['UserFilesPath'] = '/uploadfiles/';   
 
将其值修改为:
PHP代码
        
  1. $Config['UserFilesPath'] = '/uploadfiles/'.date('Ymd').'/'//根据自己的实际情况  
 
这样上传的文件就按照日期存放了。
---************me_begin
我的配置如下:【我这边是配置 $Config['UserFilesPath'] = '/attachment/' ; 】
之前的图片配置是在如下,格式,为保持兼容,设置为一样的。配置为 /blog/attachment  。
[root@izwz9h blog]# cd attachment
[root@izwz9h attachment]# ls
201011  201202  201210  201305  201311  201406  201501  201512  201611  201707  201806  201902  202010
201012  201203  201211  201306  201401  201407  201503  201601  201612  201708  201809  201906  index.php
201106  201206  201212  201307  201402  201408  201506  201603  201701  201712  201811  201911
201107  201207  201301  201309  201403  201410  201509  201604  201705  201804  201812  202001
201108  201209  201302  201310  201404  201412  201511  201610  201706  201805  201901  202002
[root@izwz9h attachment]# pwd
/var/www/itlife365.com/web/blog/attachment
[root@izwz9h attachment]# ll 202010/
total 64
-rwxr-xr-x 1 web3 client2 25724 Oct  2 17:00 1601629254_74608341.jpg
-rwxr-xr-x 1 web3 client2 34115 Oct  4 09:48 1601776095_533634af.jpg
[root@izwz9h attachment]# 
 
新的配置:
fckeditor 下会有3个子文件夹,刚好可以与原来区分开来
[root@izwz9h attachment]# ls
file  flash  image
[root@izwz9h attachment]# 
---************me_end
 
2、重命名 fckeditor 上传的文件的方法
 FCKeditor 的文件上传默认是不改名的,本地的文件名是什么,上传后保留原来的文件名;如果存在同名文件,则会被自动在文件名后面加 (n) 来标识。
(1)找到 editor\editor\filemanager\connectors\php\io.php 文件:
(2)找到如下内容:
 
PHP代码
        
  1. ......  
  2.     
  3. function SanitizeFileName( $sNewFileName ){  
  4.     
  5.  global $Config ;  
  6.     
  7.  $sNewFileName = stripslashes$sNewFileName ) ;  
  8.     
  9.  if ( $Config['ForceSingleExtension'] )  
  10.     
  11.   $sNewFileName = preg_replace( '/\\.(?![^.]*$)/''_'$sNewFileName ) ;  
  12.     
  13.  $sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>/''_'$sNewFileName );  
  14.     
  15.  return $sNewFileName ;  
  16.     
  17. }  
  18.     
  19. ......  
 
修改为如下语句:
 
PHP代码
        
  1. function SanitizeFileName( $sNewFileName ){  
  2.     
  3.  global $Config ;  
  4.     
  5.  $sNewFileName = stripslashes$sNewFileName ) ;  
  6.     
  7.  if ( $Config['ForceSingleExtension'] )  
  8.     
  9.   $sNewFileName = preg_replace( '/\\.(?![^.]*$)/''_'$sNewFileName ) ;  
  10.     
  11.  //获得扩展名  
  12.     
  13.  $sExtension = substr$sNewFileName, ( strrpos($sNewFileName'.') + 1 ) ) ;  
  14.     
  15.  $sExtension = strtolower$sExtension ) ;  
  16.     
  17.  $sNewFileName =  date("YmdHis").'.'.$sExtension;  
  18.     
  19.  return $sNewFileName ;  
  20.     
  21. }  
 
现在上传的文件就会自动被重命名了。
 
其他:自定义 FCKeditor 的 BasePath
当然,
自定义 FCKeditor 的 BasePath:BasePath 即FCKeditor在网站中的相对路径,默认值是 /fckeditor/,最好在Web.config appSettings中对其进行配置:
<add key="FCKeditor:BasePath" value="/FCKeditor_2.6.3/"/>
这样做有诸多优点:how-fckeditor-change-uploadfile-path-and-filename by itlife365.com
开发环境与生产环境不同,开发环境一般是http://localhost/xxx.com/这种情况下FCKeditor就得放在一个虚拟目录http://localhost/fckeditor/中,若涉及多个网站的开发,而各网站的FCKeditor有差别时,这样显然不是最优;
而且因为物理目录结构与逻辑目录结构不同,也会有发生错误的隐患;
而如果采用Web.config的配置,就可以在开发环境采用不同的配置,FCKeditor的物理路径与生产环境保持一致;
当升级FCKeditor时,只需要将新版本的FCKeditor放在相应版本号的目录里,修改一下配置即可。这样可以解决因为静态资源的客户端缓存问题,不同用户出现不同的错误的问题;
可以直观地看到自己的FCKeditor的版本号。
如果找到变量BasePath的配置。目前我这个因为是集成就的自己查找关键字BasePath。 
我的是在文件 blog/editor/fckeditor/editordef.php  中
oFCKeditor.BasePath = '/blog/editor/fckeditor/' ;
 
上传图片带水印
在FileUpload方法中找到oFile.SaveAs( sFilePath );语句。在其后加入 xxx 略
how-fckeditor-change-uploadfile-path-and-filename by itlife365.com  end
Tags:
分页: 1/294 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]