《数据挖掘数据处理中小技巧》由会员分享,可在线阅读,更多相关《数据挖掘数据处理中小技巧(19页珍藏版)》请在金锄头文库上搜索。
1、Traps and Tips in Data Mining DevelopementTeradata Confidential2 主要内容开发过程中对于新手常见又容易忽略的小问题表面好还不够,基础也很重要Teradata Confidential3 相关问题查询的逻辑正确性查询性能数据挖掘操作问题工具小问题等等失败乃成功之母失败乃成功之母失败乃成功之母失败乃成功之母但.Only a fool learns from his own mistakes. The wise man learns from the mistakes of others. Otto von Bismarck(All e
2、xamples are real; just dont take it personally. )Teradata Confidential4 查询的逻辑问题join错误分清Inner/left/right/full JOIN,弄清应用场景。三个或以上表FULL JOIN的时候要更小心。Join的表有重复号码历史表、转品牌、多维表等如果两个要JOIN的表表有重复号码,生成的表就叉乘出更多重复号码尽量先Aggregate再join,保持粒度一致sel a.c_usr_nbr,b.si_b_brnd_cd,count(distinct a.c_b_area_cd)as area_cnrfrom p
3、marttemp. tmp_usr_toll_b_area_200901 a left join pmart.TB_MID_FRD_INFO200901 b on a.c_usr_nbr=b.c_usr_nbrgroup by 1,2TrapsTrapsTeradata Confidential5 查询的逻辑问题被除数为0:a/(b+0.0001) 只有在b=0的时候才适用Coalesce(a/nullifzero(b), y) b=0时用y作为结果整数相除 integer/integer - integer 在算比率时会出问题。101000必须先转为float类型TrapsTrapsTera
4、data Confidential6 查询的性能问题现象:慢、skewed。通过TM监控。常见原因:Primary Index(PI)的问题。建新表时没有指定PI,结果将month作为PI了Bad PI (not specified), skew大表不是按PI关联(交往圈表)关联条件错误没写关联条件!或漏了(倒如缺了月份的关联条件)TrapsTrapsTeradata Confidential7 查询的性能问题Optimizer不能找出最好的运行方案通过explain查看运行方案用Collect stat,让数据的新状况告诉Optimizer中止有问题的脚本如果用perl运行,ctrl-c只是
5、中止了perl,bteq脚本仍在运行。要将窗口关掉,才能完全中止。TrapsTrapsTeradata Confidential8 查询性能问题JOIN和Aggregation先Join再 aggregate vs. 先agrregate再joinsel a.c_usr_nbr,b.si_b_brnd_cd,count(distinct a.c_b_area_cd)as area_cntfrom pmarttemp. tmp_usr_toll_b_area_200901 a left join pmart.TB_MID_FRD_INFO200901 b on a.c_usr_nbr=b.c_u
6、sr_nbrgroup by 1,2运筹:理清计算过程,为多次使用的中间数据建立临时表,不用重复计算。TrapsTraps逻辑清晰的程序运行效率也通常高逻辑清晰的程序运行效率也通常高Teradata Confidential9 数据处理性能问题尽量不要随意Insert, update, delete慢、资源多、拖累其它作业。(日志资源很有效)cancel后要rollback,也会影响很大。有时搞到要将整个表废掉。基本上不要update改变C编程的思维 i=0; if (长途) i+; a+=i; X 不适用于不适用于DW编程编程DW思维:使用 sum(case when .end)考虑用Par
7、titioned Primary Index(PPI)优化insert/deleteUnion vs. union allUnion 需要进行重复记录检查,慢如果可预知是没重复记录的,则用union all(不作重复检查)。例如几个地市的数据集合并。TrapsTrapsTeradata Confidential10 数据处理性能问题同步同步执行,效率更高Insert into t .;insert into t .对同一个表的多条delete/insert/update在同一步运行时会得到优化优化,速度比分开时快快很多。(SQL Assistant里要点并发执行按钮)全表删除用 delete
8、from t allTipTips s注意分号的位置,在下一个insert的行首Teradata Confidential11 数据挖掘的问题Z-score(标准化)在Variable Transformation模块中消除数据不同月份间的季节性差异。消除量纲。如果一个变量可能是全0(根据月份不同而变),则可能出错除以0错误。解决:将score代码取出来,全部变量进行替换:(a-avg)/stdev - zeroifnull (a-avg) / nullifzero (stdev)TipTips sTeradata Confidential12 数据挖掘的问题NULL值处理在分析算法中,包括N
9、ULL值的记录会被删除。注意:许多变量中NULL值是有意义。比如没有相应的话单时,会产生NULL值变量,其实是表示“0”最好在生成数据集里就用zeroifnull(.)进行替换。异常值处理例如排除消费量最大的10条记录。TrapsTrapsTeradata Confidential13 模型投产的问题注意:脚本需要每个月都运行保存每次运行的结果,以便评估和跟踪。不要把以前的数据覆盖掉。尽量不要依赖以前的数据。例如。名单数据抽取后进行检查使用TWM的value和Statitics模块,检查名单的取值是否合理缺失值?异常值?搞反了取得是最不会流失的用户?变量的均值是否合理,流失名单用户的ARPU是
10、否偏低。TrapsTrapsTeradata Confidential14 工具的问题字符集大部分表是uft-8,小部分是ascii。字段Title的字符集多数是ascii。最好建两个ODBC数据源。如果中文看不到,就切换。自己建新表尽量用utf-8TrapsTrapsTeradata Confidential15 工具的问题BTEQ脚本块注释字段注释.Goto and .label:分块化,断点运行。.set maxerror 1.set errorlevel 3803 severity 0 -忽略表已存在错误古怪错误的应对* Failure 3704 ? (A3X) is not a va
11、lid Teradata SQL token. - 是否将标点或字符输成中文全角?缺“;”,引号不匹配,会导致”end of file unexpected” TipTips sTeradata Confidential16 工具的问题TWM需要使用asc字符集,否则会不能正确识别数据类型(字段前的小方块应该是绿色的,红色就问题) (新版TWM不知有没有这个问题)Project 里的analysis可以复制、粘贴,便于在之前的工作上作调整。 第一次用TWM时先把metadata等配置好,建了project后再改就不能保存结果。TipTips sTeradata Confidential17 工
12、具的问题常用的EXCEL技术公式绘图:所有的图、格式设置。透视图贴进PPT里时,用“选择性粘贴”,EMF格式,这样PPT文件较小。 TipTips sTeradata Confidential18 工作习惯Trackability版本控制:Team (VSS):写comment,告许别人变更原因和改动的地方。个人 (Me: SVN)邮件 filename_20090701_v2 ,并在邮件中说明变更的地方Word,使用“修订”模式,记录变更PPTEXCEL 使用标注。统一的命名习惯工作计划工作日志: 挖掘过程中有许多试验,之间的代码和参数差异很小。将有意义的中间步骤和结果记录下来,便于日后查看
13、,或与别人交接。TipTips sTeradata Confidential19 工作习惯“Nothing is certain but Death and Taxes.”如果不确定,就要查文档或问别人,特别是业务问题常用的工具,凭感觉和试验可能会出意想不到的错。系统阅读相关文档,也会更全面学到新的技巧。 Teradata SQL References Teradata SQL References 2 WBT Courses2 WBT Courses TWM User GuideTWM User GuideTeradata BTEQ ReferenceTeradata Fastload ReferenceTeradata Multiload ReferenceEXCELTipTips s