Tuesday, September 14, 2010

yum error solution

if you encounter this error when using yum, try yum clean all, and then
rerun the job. It will be OK.

Downloading Packages:
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in <module>
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 258, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 196, in main
return_code = base.doTransaction()
File "/usr/share/yum-cli/cli.py", line 456, in doTransaction
problems = self.downloadPkgs(downloadpkgs,
callback_total=self.download_callback_total_cb)
File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 1756, in
downloadPkgs
self.plugins.run('predownload', pkglist=pkglist)
File "/usr/lib/python2.6/site-packages/yum/plugins.py", line 183, in run
func(conduitcls(self, self.base, conf, **kwargs))
File "/usr/lib/yum-plugins/axelget.py", line 280, in predownload_hook
downloaded_drpm_pkgs = download_drpm(conduit)
File "/usr/lib/yum-plugins/axelget.py", line 66, in download_drpm
presto_info[repo.id] = presto.PrestoParser(filename).getDeltas()
File "/usr/lib/yum-plugins/presto.py", line 509, in __init__
for event, elem in iterparse(fo):
File "<string>", line 61, in __iter__
File "/usr/lib64/python2.6/gzip.py", line 219, in read
self._read(readsize)
File "/usr/lib64/python2.6/gzip.py", line 271, in _read
uncompress = self.decompress.decompress(buf)
zlib.error: Error -3 while decompressing: invalid distance too far back

Monday, September 13, 2010

mysql security related sqls

show all users in mysql
select host, user, password from mysql.user;

grant all privilege to root from localhost
grant all on * to 'root'@'localhost';

grant all privilege to user_a from all hosts
grand all on * to 'user_a'@'%';

Tuesday, July 06, 2010

techspot IBM cares

Agile Development, Test Automation, Early Defect Removal Techniques, Secure Engineering, Cloud Computing and Engineering Practices & Tools & Techniques 

study note cakePHP

ACL access control list
ARO access request object
ACO access control object
use groups and roles to grant privilege to user.


var $components = array('Cookie');
function beforeFilter() {
$this->Cookie->name = 'baker_id';
$this->Cookie->time = 3600; // or '1 hour'
$this->Cookie->path = '/bakers/preferences/';
$this->Cookie->domain = 'example.com';
$this->Cookie->secure = true; //i.e. only sent if using secure HTTPS
$this->Cookie->key = 'qSI232qs*&sXOw!';
}

apache的bin目录下,有个名为ab的文件,我们通常称它为ab测试。它能够模拟http请求,并post参数之类。并能创建多线程。

Wednesday, June 30, 2010

study notes db2

Error information is returned in the SQLCODE and SQLSTATE fields of the SQLCA structure, which is updated after every executable SQL statement and most database manager API calls.

An SQLCODE value of 0 means successful execution (with possible SQLWARN warning conditions). A positive value means that the statement was successfully executed but with a warning, as with truncation of a host variable. A negative value means that an error condition occurred.

An additional field, SQLSTATE, contains a standardized error code consistent across other IBM(R) database products and across SQL92-conformant database managers. Practically speaking, you should use SQLSTATE values when you are concerned about portability since SQLSTATE values are common across many database managers.

Tuesday, June 29, 2010

study note db2


ISOLATION LEVEL RR, RS, CS, or UR
Specifies how far to isolate the routine from the effects of other running applications. For information about isolation levels, see DB2 Performance Monitoring and Tuning Guide.
RR
Specifies repeatable read.
RS
Specifies read stability.
CS
Specifies cursor stability. CS is the default.
UR
Specifies uncommitted read.


FOR UPDATE CLAUSE OPTIONAL or FOR UPDATE CLAUSE REQUIRED
Specifies whether the FOR UPDATE clause is required for a DECLARE CURSOR statement if the cursor is to be used to perform positioned updates.
FOR UPDATE CLAUSE REQUIRED
Specifies that a FOR UPDATE clause must be specified as part of the cursor definition if the cursor will be used to make positioned updates.

FOR UPDATE CLAUSE REQUIRED is the default.
FOR UPDATE CLAUSE OPTIONAL
Specifies that the FOR UPDATE clause does not need to be specified in order for a cursor to be used for positioned updates. The routine body can include positioned UPDATE statements that update columns that the user is authorized to update.
The FOR UPDATE clause with no column list applies to static or dynamic SQL statements. Even if you do not use this clause, you can specify FOR UPDATE OF with a column list to restrict updates to only the columns that are named in the FOR UPDATE clause and to specify the acquisition of update locks.

Sunday, June 27, 2010

kettle组件说明

De-serialize from file input 从一个二进制的KettleCube读取数据 最好做暂存使用,容错能力差
Xbase Input input 从一个Xbase家族的文件中读入数据
Serialize to file input 将数据以二进制形式保存,读入时无需转换
Access Input Input 该步骤提供了从MSAccess数据库读数据的能力 需要指定Table Name FileName is defined in a filed,从指定的区域读数据.否则从指定位置读取,可以按照正则表达式读取
CSV Input input 该步骤提供了从确定分解文件中读取数据的能力 需要指定分隔符和结束符
Delemitor input 分隔符
NIO buffer input 非阻塞(异步传输)缓存
Lazy Conversaition input 延迟转换,不主动转换,在其他步骤有需要时才进行转换,为了提高性能.
running in parallel input 并行运行,如果同一步骤有三个部分在执行,可以选择然后前面的数据会平均的分给本数据.
Excel Input input 该步骤提供了从一个或者多个Excel表读取数据的能力
Wildcard input 疯狂卡~~~ 提供正则表达式匹配
Accept filename from previous step input 从前一步骤中获取文件名
Fixed file input Input 该步骤提供了从固定行宽度的文件的数据读取能力
Line feed character Input 行满符 ascll值 010
Add filename to result option input 向结果输出文件名称
trim type Input 选择消除空格的方式,右边的,左边的,都或者都不
Line feed present Look UP 检查文件是否包含行满符
Generate rows Look UP 产生行,可以指定固定值和行数
Generate random value Look UP 产生随机数,字符串等等
Get file name Look UP 获取文件名称
get file rows count Operation 获取文件行数,可以指定换行符
Get System info Operation 获取系统信息
get data from XML Operation 从XML文件中获取数据
loop Xpath Operation 选择XML文件的循环层,个人理解是根节点
Ignore Comments Operation 忽略注释,不读入数据流
Use Token Operation 使用宏?
Igore empty file Operation 如果是空文件跳过,似乎如果该步骤中只有一个空文件且跳过会出错 选择 Do not raise an error if no file exists似乎就可以正常了.
Property Input Opertion 从Property文件中读入数据
Streaming XML Input Opiton 以流文件的形式从xml文件中读出数据
Table Input Opiton 从数据表中读入数据
Get sql Statement Option 提供与sql相关的功能
Preview first row option 获取前100行
preview first rows option 获取指定行数行
Number Of rows of Option 获取指定表,schema,view和行数
Show Layout of Option 获取指定表,schema,view的一些参数
Generate DDL Option 获取指定表,schema,view的DDL
DDL Option Data define language 数据定义语言
generate DDL for Other language Option 以其它连接(数据库)的的标准产生DDL,感觉很有用
Open SQL for Option 产生一个 Select 语句,OK后会询问是否采用非*的全部查询,感觉挺好用的
trunscate table Option 提供临时的一个查询分析器
text file input Option 提供一个普通文件的数据录入系统
Escape Other 转义字符
SQL File Output Other 以insert语句的形式进行存储
Call DB Procedure Other 调用数据库存储过程
Database lookup output 查询数据库
Stream Lookup Output 从前一步骤的数据流中查询数据
Web Service Lookup transform 查看用作子服务器的服务器状态
Abort transform 夭折,使之结束
add a checksum transform 校验和
Add a constants transform 增加一个常量做属性列
Add a sequence transform 增加一个自增长属性列
Append Streams transform 将一个流连接到另外一个流之后
Blocking Step transform 障碍步骤,使得所有前置步骤执行完成之后才执行下一步,很有用
Calculator transform 提供高效的运算
Clone row transform 复制列
Closeure generator transform 以父子点为基点,父子连接为初识链接,获取所有可以互相连接的点,高级计算的时候很有用
Delay row transform 暂停流转,似乎在debug或者观察性能时有用
Dummy transform 无作为点,对debug很有用
Filter row transform 其它步骤可以引用,分离数据
Group by transform 和数据库中提供的group by 一样强大
Metadata structure of stream transform 获取元数据
Null if transform 置空动作
row normalizer transform 将列映射到行中
Row DeNormaliser` transform 将行转换成列
Row Flatterner transfrom 合并行,合并相同属性,继承不同属性
Select Values trasfrom 选择流中流转到下一步的数据列
sort rows transform 给列排序,和sql的类似
Field split transform 将记录中指定属性分裂成多个属性.需要提供分裂的属性和分隔符,似乎可以用空格
split field to rows transform 将指定属性内容分裂,产生新属性记录和之前记录的属性笛卡尔积
switch/case transform 根据指定属性对记录分类
unique rows transform 筛选出没有重复的记录,需要预排序
value mapper transform 对指定属性进行映射,可以选择新目标属性或者覆盖原属性
XSD validator transform 使用XSD文件对XML文件进行验证
XSL transformation transform 使用XSL文件对XML文件进行转换
join rows join 对多个输入流进行笛卡尔连接,也可以判断性的链接
Merge Join join 根据主键对两个数据流进行连接
merge Rows(diff) join 对两个数据源进行相似比较合并,并可以在输出流中增加对该条记录在源数据是否一致,如果不一致将会在输出流中输出用于比较的记录的值而不是用于引用的记录的值,Identical表示两者一致,Changed表示两个数据流中的不一致,new表示只存在于比较数据流中,deleted表示只出现在引用数据流中
sorted merge join 可以多个已排好序的数据源合并
XML join join 对两个XML进行连接
Excuete SQL script scripting 在指定的数据库上执行sql语句
Modified java script value scripting 对数据流进行处理,默认是每条记录运行一次
Regex Evaluation scripting
Dimension lookup/update data warehouse 对数据库中缓慢变化维进行更新,有update和insert两种,需要有专门的版本属性
Combination lookup/update data warehouse 对一个junk dimension进行代理主键的更新或者插入
Mapping(sub-transformation mapping 调用一个映射transformation,可以设置参数
Mapping Input specification mapping 一个映射transformation的开始步骤,提供参数的输入
Mapping output specification mapping 一个映射transformation的输出步骤,可以输出参数
Copy rows to result Job 将数据传送到下个任务
Get Variables job 从上一个Job中获取参数
Get files from result Job 从上一个Job中获取其所创建的文件信息
Injector Inline 本步骤允许通过JAVA API 注入数据
Socket reader Inline 从一个PDISocket输出流读取数据
Socket Writer Inline 向一个PDISocket输入流输出数据
Data Validator experimental 数据验证步骤,可以按照是否null等进行验证,需要给出filedname和数据类型,如果验证数据流中有数据没有通过会停止transformation
Greenplum bulk loader experimental 从greenplum中获取数据数据的高速步骤
Oracle bulk Loader experimental 从Oracle数据库中高速获取数据
PostgreSql Bulk Loader experimental 从PostgreSQL中高速获取数据
Aggregate Rows Deprecated 简单聚集步骤建议不使用而是使用groupby步骤代替
history history 对历史中使用最多的步骤的集合
export as xml file FILE 用XML格式保存Job或者transformation
inport from XML file FILE 打开XML格式KTR文件
Search meta data Edit 按照指定条件获取当前job或者transformation中的所有元数据
Set environment EDIT 在当前JVM中定义一个全局变量
Get Envirment EDIT 获取当前JVM中的全局变量
Repository Repository 管理资源库,包括连接,断开资源库,管理资源库中资源等
View View 设置当前查看的大小
JOB JOB MENU 当前任务为job级时开始job,编辑job等功能
Wizard Wizard 提供创建数据库源,TABLE-TABLE的数据复制,TABLES-TABLES的数据复制

kettle学习记录

日志服务器随便选择服务器后运行后程序会死掉.似乎是字符编码集的问题 否
似乎对中文支持不好 是的,名称不支持中文
假死怎么办 不知道
起始数据库的作用 存储元数据,保存程序数据
分区的作用
2008-7-29 日期
当自己有特殊要求的时候可以写插件或者JavaScript 知识
Regex evaluation 里面的选项 dotall model 汗,这是regex知识,enable的时候 ‘.’可以匹配任意字符包括结束符,disable的时候不可以匹配结束符
Regex evaluation 里面result fieldname 提示是使用control+ space 其实还是control + alter +space. 心得

Environment variable可以使用${}或者%%变量%%进行引用
最好像kettle的命名规范一样 ‘域名.变量名’ 心得
数据库乱码问题
在新建connection的general中是没有办法设置encoding方案的
解决方法,在option中可以添加NEWCODESET,picc690使用的是gbk,8859-1,819,所以我们就在value处填写gbk,8859-1,819即可
事实上 知识+心得
在table input 中有 lazy conversion, 意思是延迟转换,不主动转换,在其他步骤有需要时才进行转换,为了提高性能.
PDI Pentaho Data Integration 知识
在输出过程中如果已有该数据,不会被update,但是会被insert 心得
在使用 control+ alter + space 选择的时候可以使用首字母快速跳转 心得
一方面因为JVM不能长时间运转无错,另一方面Kettle还没有那么强大,不能schedule过长时间 知识
有时候上次保存的环境变量或者新建的connection会消失, -_-!
环境变量容易消失,connection有时候不会 心得
在database explorer中有generate DDL 选项,即创建数据表的语句 心得
常用的transition Table Input(表输入)Value mapping (映射Code到名称)
Select Values (选择进入下一步的列) add constants (增加常量到列)
Merge join (按主键进行合并,常和 Select Values 合用) 心得
2008-7-29
注意在merge以前要排序,而且排序的方向要相同,估计是算法的原因 心得
Hop颜色含义
绿色 分发
红色 复制
黄色 给步骤提供信息,分发
橙红 给步骤提供信息,复制
灰色 不可用
黑色 无条件运行到下一步(从’开始’出来的)
蓝色 候选链接
橙色,虚线 没有数据经过
红色 粗虚线 发送在源步骤出错的行
知识
Add Sequence:
这个步骤在流中增加一个序列。一个序列是在某个起始值和增量的基础上,经常改变的
整数值。你可以使用数据库的序列,也可以使用 Kettle 决定的序列
备注:Kettle 序列在同一个转换中是唯一使用的。每一次转换运行的时候,序列的值
又会重新循环一次(从开始值开始) 知识
计算器的一个重要优势是,它有着几倍于常用的 JavaScript 脚本的速度 知识
扁平化: 多行合并相同的属性,继承不同的属性, 知识+心得
Blocking :它冻结所有的输出,直到从上一步骤来的最后一行数据到达,
最后一行数据将发送到下一步。 知识
Merge Row :两个行流被合并,一个是引用流(旧数据),一个比较流(新数据)。每次都是行的最后 版本通过进入下一步骤。
Store merge 用于多个数据源相同表的合并
JavaScript 中 行(row)是一个特殊的字段,包含了当前行的所有值 知识
Injector 注射器主要是针对以下人使用:想利用 Kettle API 和JAVA来注射记录到转换中。 知识
Socket Injector 套接字读入器是通过 TCP/IP 协议将数据从一个服务器向另一个服务器传输。 知识
Stream XML Input这个步骤主要提供值的解析,它信赖于 SAX 解析器,在大文件解析上能提供更好的性能。 它与 XML 输入非常相似,仅仅在内容和字段制表符上略有不同。 知识
有transformation和job两个级别,在job里面是对job和transformation进行调度. 知识
用ksh在Unix上面安装bin后缀的文件 知识
2008-7-31
如果因为transformation或者job找不到而不能启动可以在.spoonrc中把OpenLastFile设置问N 知识+心得
步骤介绍
http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Steps 知识
Plug-In
http://wiki.pentaho.com/display/EAI/List+of+Available+Pentaho+Data+Integration+Plug-Ins 知识
设置自动登录
在环境变量里面设置三个变量
KETTLE_REPOSITORY, KETTLE_USERand KETTLE_PASSWORD. 知识
Multiple SQL Statements have to be separated by semi-colons (;).
Before these SQL Statements are sent to the database to be executed, Spoon removes returns,
line-feeds and the separating semi-colons.
Kettle clears the database cache for the database connection on which you launch DDL statements. 知识
可以在右键功能菜单中修改Data Movement 知识
Number Formats
The information on Number formats was taken from the Sun Java API documentation 知识
在Table look up 的时候如果有事务处理的话使用缓存可能造成脏数据 知识
对话框请扩展开,否则会隐藏组件 心得
当采用kettle的sort rows 时当数据超过5000行时需要缓存 知识
Unique Row(合并行)需要源流已经被排过序了. 知识
A_B映射时可以从空值映射到非空值 知识
Set Variable 在前一转换中设置Variable使得下一步可以使用,应该是被当作Environment variable 使用.会很有用.同一VM上的都可见. 知识
如果使用了资源库并且断过网络,可能出现无法保存的情况,可以暂时Export到本地,重新打开并import然后保存. 心得
2008-7-31
Closure generator 以parent 和child为一组节点群,存在以元组中parent指向child的基本连接,cg的作用就是在节点群和基本连接的基础上寻找所有可能连接,使用的迭代的算法,直至不再更新. 知识+心得
Oracle 支持 Delete from table 不支持 delete * from table 知识+心得
2008-8-1
假死的情况,通常是由第一个步骤引起的 心得
alter table combination rename column limite to limit 心得

cognos8.1资料库表作用探索

CMOBJECTS 所有对象 classId =5 表示是用户
CMOBJNAMES 对象显示的名字
CMOBJPROPS3 自定义页面元素
CMOBJPROP7 安全定义(用户,数据源)猜测
CMOBJPROPS11 数据源定义
CMOBJPROPS13 reportNet参数定义
CMOBJPROPS14 各个清单,分析的状态(创建时间,修改时间,修改次数等等)
CMOJBPROPS20 各个报表执行的时候的定义(是否提示页等等)

CMJBJPROPS25 清单报表定义
CMOBJPROPS33 用户ID和cognos中的ID的Map
CMLOCALES 国际化库 LOCALEID = 196 zh

CMPROPERTIES enum(不知道是什么东西)
CMREFNOORD2 (对象和创建者的关联)
CMRFEFORD1 首页内容(公共文件夹(REFCMID=2),我的文件夹(REFCMID各自有))和用户的关联.


CMID
147 administrator 有公共文件夹
281 22010000 没有
295 qianlei 有
568 22000000 没有
2,553,1684 公共文件夹
9 我的文件夹

对于PICC统计分析系统设计的思考

对于麦肯锡,咨询业内流传一个这样的故事,有一个老头,正在草地上放羊,忽然走来一个年轻人,年经人走到老头面前说:老先生,我可以为您服务,我将告诉您您的这群羊有几头,作为酬劳您需要给我一头羊。老头还未作答,年青人就开始了工作,年轻人用笔记本电脑无线上网,链接上NASA的内部网,调动低轨道卫星,把卫星遥感成像的图片再通过软件分析,数十分钟后,年轻人再次走到老头面前:老先生,您的羊群共有763头。说完后他抱起一只羊就要走。
老头这时叫住了年青人:年青人,如果我能猜出你就职的公司,你可不可以把酬劳还给我?可以,年轻人答。你是麦肯锡公司的,老头说。年轻人很惊讶,您怎么知道?老头笑了:因为你具有该公司咨询人员的所有特点啊,第一。你不请自来。第二。你告诉我的分析结果是我本就知道的。第三。你抱走的不是羊,而是我的牧羊犬。

这个故事在业内流传甚广,它似乎是说即麦肯锡的咨询好像就是告诉了客户一些它早就知道的信息,但是换个角度,当只有一个牧羊人,一个羊圈的时候,也许是这样一种情况,但是换成一个镇子里面的人,有牧羊人,有羊毛商人,有织毛女工,有裁缝,还有面包师,理发师,陶匠…。这样的情况怎么能让每一个角色,每一个人都知道会和自己相关(人通常都只关心和自己相关的事情)的情况呢,这就不是一个好玩的笑话了。相反,这就成了一个值得我们花费大的精力研究的事情。
现在有一个流行的说法,即解决方案提供商,中科软科技的各个部门也有多解决方案的提供。事实上,解决方案和咨询公司提供的服务内容很类似。所以,前面这个道理也适用于我们统计分析产品。
1 定位
在过去我们组有两个定位,一个是‘统计分析’组,一个是‘BI’项目,这两个定位当然是不一样的,BI应该是一个更大的概念,就前一个概念而言,我们现在做的主要是统计部分,而分析的工作是让是让客户根据我们的统计数据进行的。
就市场和我们的能力而言,我们当然是愿意做BI的。但一方面BI的基础是统计,另一方面我们的传统市场统计方面还做得不够。就工具而言我们使用的cognos部分也没有很强大的intelengent工具。也就是说在Intelengent方面我们的积累还很少。所以在内部而言,我认为我们还是要先定位在统计工作的完美上面。当然,这并不是说我们就不做BI中Intelengent的部分,BI中的Intelengent和非Intelengent的部分并不是可以完全分隔开的两个部分。
在我看来统计工作有两个要点,一个是全面,另外一个是精确。
全面指的是统计的数据包括的内容全面,这也就意味不仅仅是用户已经提出过的分析报表包括的指标,维度,还要关心其它未提出的但是有信息量的数据,当然考虑到实际情况,我们应当考虑关心的主题的数据内容的全面,而不是所有的数据的全面。
这里的精确借用了数学中的概念,就是在可容忍的范围内的准确度,这个和业务系统中数据的变化信息的不可回溯相关,这里的精确并不是简简单单的说提数的时候的过滤条件要写得很准确,这是一个系统的工程。


如何实现BI?
在传统的人保的人员的职能划分中,通常包括有总经理,办公室,人力资源,财务会计,监察审计,信息技术部,车险部,非车险部,理赔管理,承保管理,再保,大型商业等等,其中又有对于产品线的划分。这事实上和前面的小镇的人的社会角色的分类类似,另外还有上下级的划分,在很多分公司里面,这些部门之间通常有很多天然的障碍以至于这些部门之间的信息不能够相互沟通。所以要实现这些信息的共享也不是一件容易的事情。
首先是统计分析,然后才是BI, 首先要如实地,全面的反映公司的经营状况,然后才是分析将来的发展(现在比将来容易掌握,现在是将来的基础)。
1.1 如何真实反映
真实反映一个公司的经营状况决不能只是管中窥豹,
1.1.1 重新划分主题
在‘全面’的论述中我提到了一个概念<主题>,这个概念我们在之前的工作一直也提到过,如承保,理赔,财务,收付费,这样的划分。这是一种划分,但是这是根据业务模块的划分,而不是根据内容的划分。根据以前的模块划分的方法,在实际工作有很多弊病,我们面对的客户并不是一个牧羊人,他们所关心的内容是所有的和自己相关的信息,而领导层关心的内容就更多了,像前面提到的一样,承保的信息和理赔的信息是相关的,理赔模块需要考虑承保模块的中的承保信息,承保日期等等,而承保部门也需要了解脱保续保中续保的保单的出险情况(这个有Intellengent的部分,根据统计信息做出决策)。人保或其它保险公司内部的传统的报表绝大部分都是按模块划分的,所以他们觉得最有用的部分是财务报表,或者是业务的一些简单的报表,这个可以适应于通过粗放式管理时对规模的追求的考核,并不适用于现在对效益驱动的业务形式。

1.1.1.1 为什要重新划分

1.1.1.2 重新划分的标准
所谓的主题(Subject)是指的若干经过组织的内容相互之间关联,所拥有的共同点。它们的特征是很容易在一个语境出现,如保单数量和保费,保费和已决赔款,已决赔款和车座数,当然有这个的特征不一定都是属于同一个主题,但是同一个主题下面的数据一定会有这个特征。
类型的另一个特征是它们的度量单位,我们知道如果一些数据如果有相互关系,那么在普通的计算系统下,他们的度量单位会有关系,如 件、元、元/件 这三个度量单位是有相互关系的,所以这些度量之间也可能有相互关系。
另外一个可以参考的信息是客户的对业务考核的相关文档,如《安徽池州市分公司实施精细化管理促车险业务扭亏增盈.doc》这篇文章中,我们就可以获取相当的信息,这个在我的《对(安徽池州市分公司实施精细化管理促车险业务扭亏增盈)的分析.doc》有一个简单的尝试。
1.1.1.3 筛选维度
通过对旧有系统中的报表的分析,我们可以得到《常用维度和指标(按主题).xls》这样一个图表,在这个图表中以左上角为原点,越靠近原点的维度或者指标出现的次数越多,可能性越大,在颜色为白色的表格中是可能出现的而尚未在已有报表中出现的关联,这是我们在前面提到的‘全面’中应该实现的部分。
对已有指标的数据可以进行有意义的分类的,
1.1.1.4 新建维度
通过一些思考和相关资料的收集,我觉得还有一些维度可能会有信息量而尚未出现或者很少出现的维度。
1.1.1.5 新的主题
在这些维度和指标中通过前面提到的主题的划分标准和我们的经验可以得到以下的一种划分。
 效益类 和效益相关的维度和指标,是现阶段我们系统主要内容。
 效率类
主要是case的处理速度,承保的速度(转保单),处理报案的速度,处理立案的速度,理赔的速度,结案的速度。
 考核类
主要是一些总公司提供的考核类型。

1.1.1.6 对于中间库的影响
1.1.2 使用专题
主题分析,是在主题域的基础上建立的分析,比如客户分析,利润分析,效率分析,更多的是种“分析”;专题分析,说得更多的一个词是专题应用;顾名思义,是针对某个特定的问题,提出的一整套分析应用专题;
在统计分析系统的历史版本当中,多半是以部门划分的模块, 这样的划分在这里就有相当的意义.例如在利润分析里面可以有承保环节的专题,包括规模,费率,已赚净保费,应收保费等等,理赔环节的专题可以包括未决分析,已决分析,赔付率分析等等。这样一来就可以将一个大的主题里面的数据分为多个相关联的模块。
利润主题—》承保专题,理赔专题,费用专题,效益专题等等。
效率主题—》承保环节,理赔专题,95518专题(不了解,应该可以重新划分这个)
风险主题—》批改保单(费用,日期),出险率分析(保单出现率,保费出险率(简单赔付率)),巨灾等等。
1.1.3 条件维度
所谓条件维度和普通维度区别在于它的内容的特殊性,普通的维度是对于数据的分类,划分,例如机构归属等等。这里的条件维度一般是用于关注的数据的范围,是根据当前的专题确定的,也就是说通常情况下只要查看该主题的情况下即需要选择该条件维度。
为什么会提出条件维度呢,这和前面提到的统计工作的要点和我们实际工作中遇到的问题是相关的。
首先我们需要不断的追寻精确这个要点,另一方面我们所实现的“精确“和客户所能理解到的“精确“应该要同步。
我们之前的筛选方式是通过在后台提数或者是写iqd的时候直接将数据筛选掉来实现的。在这种情况下使用文档来进行说明是一种方式。但是使用文档一方面有使用复杂的问题另一方面有同步的问题(如更新选择条件,而用户还停留在过去的印象中)。
使用条件维度的优势是
一, 能够让用户直观的了解当前数据的筛选条件。
二, 能够实时更新,当条件发生变化的时候可以在用户使用该专题的时候第一时间了解到。
三, 由于我们的系统还不够成熟,有些业务还不够了解,再加上客户业务的独特性(不是每个客户都会关注所有条件),这样在大范围的客户使用的时候也能够让客户快速理解和反馈。
使用条件维度的缺陷,如果条件比较多的话,会让用户使用感比较差。可以采用定制报表和采用一个“常用条件“维度来简化这个操作。

1.2 提供将来的趋势
在基础数据精确的基础上我们就可以进行趋势的分析了。
1.2.1 为什么要了解趋势

1.2.2 有哪些主要的指标需要了解趋势(对已有的分析)
2 测试先行
3 元数据管理
3.1 什么是元数据
3.2 定义元数据
3.3 元数据驱动的测试
3.4 以元数据为基础设计数据仓库
3.5 模型设计中使用元数据的部分
3.6 维护元数据

4 数据仓库的设计
优点 当前的中间库设计的时候已经取得了一些成效,可以将一些经常关联的数据存储在一个事实表中,维度表方面设计得也大致完善了。
缺点 这些中间库的设计思想是提出还不够完善,对于上面提出的系统应用还不够。
出于面向上面的设计和应用的思想,一个简单的后台数据层设计模型如下,该模型的优点如下:
1, 采用了面向主题的思想,相关的维度和指标会归属于一个主题。
2, 采用了视图环节,可以将一些跨主题的指标和维度联系在一起,
3, 采用了视图环节,可以将不同粒度的数据合并在一起,这样可以平滑的在数据粒度和存储空间和资源消耗之间做一个选择。
4, 采用了视图环节,可以将模型处的逻辑和设计最小化,可以快速的进行数据的调整。
5, 采用视图环节,可以在使用前面提到的条件维度的时候快速调节“常用条件“维度。


对于收付费的库可以使用历史周的汇总数据+最近的一周内的明细数据进行抽取,每过完一周将这周的数据汇总到历史周中去。
5 系统的成长
我们的统计分析系统的成长肯定不是一蹴而就,有很多信息我们尚未了解,很多技巧我们尚未掌握,很多第三方的技术尚未出现。在这些事情发生的时候我们应该怎么做呢?
6 其它
6.1 提数的范围
在模型的理想设计中,我们的数据是包含有所有的数据的,但是考虑到效率原因和功能原因,我们通常只需要近三年的数据,在这种情况下,旧的提数方式会有一个天生的数据缺失的缺陷,即在某个环节中出现的单证的其它环节的信息存在我们的中间库中,当然这个可以通过补录的方式实现,但是这个实现方式繁琐且dirty(每个环节都需要考虑其它的所有环节),下面是一个简单而清晰的方案。
步骤1,确定提数的范围,包括提数的时间段和提数的数据范围(承保保单、理赔表。。。)
步骤 2,因为保险业务的特殊性,几乎所有的数据都和保单相关,所以把数据范围类的根据提数时间段或其它条件将所有相关的保单号汇总到一个表。
步骤 3,根据步骤2产生的保单号表提所有的数据。
步骤 4,增量更新,和旧方案相同,根据snapdb的信息提数。
6.2 对于中间库的思考
6.3 使用etl工具
经验的积累
数据的增长方式,如果使用月+天的方式存储数据,需要两步将天的数据更新和将月数据更新。如果使用唯一的粒度即天,则只需要一步更新一次数据
数据的可靠性
常用过滤条件
6.3.1 对于多层次重复计数的问题,
例如混保的时候,按照险别统计保单数正确的时候按照险类统计可能就不正确了,这种情况下可以建造一个指标即混保的保单数数×该混保保单的混保数量,这样即可以获得正确的保单数。



吉林的关注点,未决赔款,应收保费,脱保续保.
收付费的应收保费
安徽方面的数据信息.

未决发展
安徽扭亏方面的环节数据方面的关注点,未决准备金.重点关注的是金额.
未决准备金额,可以分机构险种,这样一般来说也够了.可以和是否人伤相关联么?应该可以和sf02关联取保单号取数据.

主要有的维度 机构、险种、观察日期、数据日期、是否人伤。
指标:新增未决件数、新增未决金额、累计未决金额、案均未决准备金额、已决件数、已决案均金额、累计已决金额、当期有效保单件数、同期案件出险占比(出险案件数/当期有效保单数)
案件类型对未决估损金额应该有关系,应用未决件数分类型的加权值。估损偏差可能比较稳定,有规律。
每个地市的估损人员可能不超过10人,可以作为一个层次加入到机构维度中。加入新的维度或者层次的时候要综合多个地市或者省市。
各项金额同期、同比。
应收保费的分析帮助行可能不大,通过已有规律,安徽应收保费应收6%-14%,年为周期的一个变动过程。

脱保续保,对这个的关注主要出现开始于多家新保险公司出现的时候对市场份额的影响,出于害怕客户流失的考虑提出这个点。
对续保提示的时候是否有考虑过出险次数,已赔金额。(核保一定会考虑,通过系统外的信息:如旧保单上面的出险章(信息可能比较旧)新系统可能已经有了)车险分为ABCDE级业务()。
提高非车险占比,降低车险占比,调优产品线结构。

要综合考虑调整数据展示范围后(如加入注销维度)对于用户使用的影响.

是否给各个指标加上平均值,占比等等.

测试

现在的时间是:2010年5月22 日 2:23
你的全名:紫气东来
你在哪里读书(工作):北京
现在所在的城市:北京
现在的联系方式:135xxxx6140
最近在听谁的音乐:最近没有特别听谁的歌,foobar里面一千五百首来回颠倒.心情到谁了就听谁的
现在天气如何:完全告别了漫长的冬天,进入夏天的气候,开始炎热了.
你养过什么:一个人…..
有几个耳洞:没有
有纹身吗:没有,纹上了就不能去掉了,还不能确定有没有那样一种情感一辈子不变.
喜欢目前的生活吗:不喜欢,太无聊了,进退维谷,不过在积攒吧,攒能力,攒钱.希望能做自己想做的事情.
现在有暗恋的对象吗:没有,但是有一个感觉还不错的人.暗恋这个东西太伤了.
喜欢喝什么:纯净水,如果我正在喝纯净水的话说明我生活状态比较好,不忙碌,可以慢慢的平淡.
会因为害羞而不敢跟人表白吗:会,谁叫我没有恋爱过呢,都没有自信了.
你喜欢什么类型的异性:聪明,有自信,有追求,有想法,活得很透彻.
喜欢的数字:没有.
喜欢哪一种电影类型:类型算科幻片,其实现在就喜欢一些比较欢乐的片子,但不能太欢乐了,太欢乐了会让我难受.
最怀念的日子:大学的时候可以傻傻的看着湛蓝的天空的时候.
最喜欢星期几:没有
喜欢的运动:游泳,我喜欢游泳煅炼身体,也喜欢游泳游戏.
如果有来世:性格能够普通一点.
最讨厌的事:做重复的事情,或者是别人出尔反尔.
最喜欢的事:和心爱的人在一起.
寄这封邮件给你的上一个人是:小朋友.
无聊的时候你大多会做些什么:玩游戏.
世界上最好的事情:两情相悦,皆大欢喜.
如果有人误会你:无所谓了,如果还会继续交往的话会解释,只说事实,只说一遍.
你觉得谁是最不可能回复的:110
现在最想见的人:小刀,想知道她是什么样子.
最想什么时候结婚:找到一个我喜欢的也喜欢我人以后.
最希望谁回信:小刀.
现在最想干嘛:昨天在想组织一个活动,让不同身份的人能够互相交流,1on1,没有任何客套,形式,恶意的交流,充满诚意的,深刻的交流,能够有问必答,有想法就说地交流.
个人而言,最近最想换个工作,工资也不用涨,但是能做一些有趣的事情.希望能把一些需要解决的事情统统解决掉.让我可以开始有趣的生活.

Saturday, June 19, 2010

在汇款小票丢失以后(2)

6月16日房子到期了,最担心的事情还是发生了.被中介发现转租了.而转租的后果是违反合同,对方可以扣下押金的.我的准备是死不认帐,然后要回押金.
简要的说,水电费交过以后,交涉押金的事情.交接的是一个业务员,以前也没有见过.开始先讨论转租这个事情,业务员当然是以后咬定我转租了,我也咬定没有转租.有点谈崩了.这时候这样僵持下去对我没有什么好处,然后就换种方式,给这个业务员点好处,然后他去帮我退租金.这家伙一开始还跟我废话,后来慢慢说说,然后他说你先说个价.我就想总共退我1350,给他350,但是这样又太显然以我为中心了,好像给他一点零头似的,所以就给说四百了.这家伙居然没有还价,然后说先这样吧.看来是可以了,后来听说隔壁退押金也给了他400,免得他说东西坏了什么的要赔,而那个租小间的小姑娘也给了四百的中介费续住.
最后顺利退租,给了业务员四百,没有用到去银行要的票据.所以这事也算告一段落了.
现在住的地方搬来一个新人,好像人还可以.后面就没有什么事情了,准备考研的事情了.

Wednesday, May 12, 2010

正月初三进派出所

起因,早上起床,上卫生间去,发现灯开着,以为有人,过了20分钟再去,发现灯还开着,敲门,没人,嘟囔句"毛病",然后隔壁就闹起来了,闹着闹着,老太太就开始推我了,本着绝不动手打妇孺的原则,没有动手,然后那家男人冲出来了,也开始推我,这时候就有四个人(老太太,泼妇,小男人,大男人)来推我了.混乱中,共计眼镜被搞掉一副,衣服被推掉,鞋被推掉,抓痕若干,然后出手一次,标准的直拳哦.
推到最后,推到我们的房间里,觉得事情已经没有办法了,打110,居然第一次的时候挂我电话,对方还假装打电话给110,"喂,110吗?我是XXX",
太搞了,装做和对方认识的样子.我还以为他们打通了,在等警察同志来.后来还去问了下,没有回答我的问题,然后王同学就打电话啦,号称杀人了,然后说打起架来了.不一会儿警察来了(一个正式警察和一个保安).敲门还挺轻了,然后经验丰富知道是邻里纠纷开始询问,各自表达,我表现得极其冷静,对方和王同学就互相指责.泼妇生成老太太病了什么的,也太低级了,没有人相信,包括她自己,警察和我们.老太太则是使用了温情手段,还说孙子画了个东西,想让他们过来团年什么什么的,小男人没有出现,大男人一直在.询问了当,双方还是互相争执,警察烦啦,让我们去派出所协调去,然后一行若干人坐着警车去了派出所,协调人员来了,说了说情况,反正是各打三十大板,说说各自的损失,然后主要就是要赔我的眼镜了,皮外伤就算了.我的眼镜三年前买的,然后差不多300买的,要他们赔150,对方还价100,当然这个过程是双方各在一个房间里面.完事.
没有什么新奇的东西,倒是要小心有老人的时候.
另,王同学曾经踹开过中介的门,恐怕对方利用这点把里面的东西损坏了,或者偷走了,让我们背黑锅.这就麻烦了,本来回来的时候就准备说先让用手机拍一下房间,然后后反锁门的,回来以后发现门已经被反锁了,也不知道对方有没有做什么手脚.

Wednesday, May 05, 2010

study notes

check the disk space on AIX
check certain file du -ms  . m means size in megabyte, and s means return single line.
check the disk df -m 

Tuesday, May 04, 2010

这是一出悲剧么?

故事的开始总是美好的。
但是中间发生了一些事情,不知道是不是太年轻了。
之前说过说我四差。我是一个很容易认真的人,她也是。在愤怒的时候,她常常不能控制自己,使用最伤人心的话语。
从一开始的面对这些辱骂的愤怒和失望 到听到拒绝的话语的害怕 到听到责难的时候的宽容、无视 到心灰意冷。
2010.4.8
早上的时候做了一个梦,梦里和谁谁谁在一起,然后就在路上走着走着,碰到水坑啦(其实记不起来了),然后谁谁谁就说都怪你,blabla, 然后我就醒了,果然已经习惯了么。



Wednesday, April 28, 2010

Avoid warning when access remote server via ssh with multiple accounts on one client.

AT.
If you put all the public key of local client on the server, and then you connect it via ssh, it will promote a warning.
Warning: the RSA host key for 'a.b.com' differs from the key for the IP address 'x.x.x.x'.

This happened because the ssh server check the key according to the IP address, and since we have multiple account on local client,The server will recored different RSA key from a unique IP,It will result in conflict.

It could be solved by setting the option,
check out ssh_option(5)
e.g sudo -u super_a ssh -o checkhostip="no" username@remote_host 'echo "hi"'.

Friday, April 23, 2010

study notes

umask value
if the previous default permission for file is XXX,set the default permission to XXX &~ $value
perl Number 
$n = 1234; # decimal integer
$n = 0b1110011; # binary integer
$n = 01234; # octal integer
$n = 0x1234; # hexadecimal integer
$n = 12.34e-56; # exponential notation
$n = "-12.34e56"; # number specified as a string
$n = "1234"; # number specified as a string


use taglist to improve vim
1 download Exuberant ctags extract it, add the dir to PATH.
2 download taglist plugin extract it to ~/.vim/
3 restart vim,run :TlistOpen in vim
4 done 
you may want to read



example of vim setting 

set nobackup
set nu
set tabstop=4 " numbers of spaces of tab character
set shiftwidth=4 " numbers of spaces to (auto)indent
set ignorecase " ignore case when searching
behave mswin
"taglist

let Tlist_Sort_Type = 1 "list the tag by name alphabetic
let Tlist_GainFocus_On_ToggleOpen =1 "jump on one click
let Tlist_Auto_Highlight_Tag=1 "Automatically highlight the current tag in the taglist.
let Tlist_Auto_Update =1 "Automatically update the taglist to include newly edited files.
let Tlist_Exit_OnlyWindow =1 "Close Vim if the taglist is the only window.

Tuesday, April 20, 2010

cygwin set display languge

add 
export LANG='C.UTF-8'
to set the language to English.
or
export LANG='zh-CN'
to set the language to Chinese .

Wednesday, April 14, 2010

study note

Perl sort a hash
1 sort by key
foreach $key (sort (keys(%hash_name))) {
  print "\t\t$key \t\t$hash_name{$key}\n";
}
2 sort by $value 
make use of perl sort
 foreach my $key ( sort { $rules{$a} <=> $rules{$b} } ( keys %hash_name ))
{
  print "$key => $hash_name{$key}\n";
}
if you want get the set sorted numeric and desc
switch $a and $b e.g

 foreach my $key ( sort { $rules{$b} <=> $rules{$a} } ( keys %hash_name ))
{
print "$key => $hash_name{$key}\n";
}

Tuesday, April 13, 2010

study notes

getopts for perl?
check out
my %options=();
getopts("a",\%options) or usage();

#HELP_MESSAGE();
addrule() if defined $options{"a"};
sub HELP_MESSAGE()
{
$Getopt::Std::STANDARD_HELP_VERSION=1;
usage;
}
sub VERSION_MESSAGE()
{
$Getopt::Std::STANDARD_HELP_VERSION=1;
#print `grep "^# VERSION" ./odssvn.pl`;
}

TEST;
perl t.pl --help
perl t.pl --version
perl t.pl -a

MD5 for perl

use Digest::MD5;

$ctx = Digest::MD5->new;
$ctx->add($data);
$ctx->addfile(*FILE);
$digest = $ctx->digest;
$digest = $ctx->hexdigest;
$digest = $ctx->b64digest;

Thursday, April 08, 2010

gvim set nobackup

do not generate filename~ file.
try Edit->start setting-> add "set nobackup " under source $VIMRUNTIME/mswin.vim
done


study note


1 To change the owner of the file program.c:

chown jim program.c

The user access permissions for program.c now apply to jim. As the owner, jim can use the chmod command to permit or deny
other users access to program.c.


准备户口迁回家

现在算是口袋户口,身份证还有5年就要到期了,而且要是掉了还超级麻烦的样子。所以准备迁户口。
2从学校迁出 厦大派出所电话 0592-2185893,所需材料,户口页,毕业证,户口迁入地提供的证明。
 迁入地重庆老家 重庆户籍室电话 023-63962385
 太龙镇 派出所电话023-58501035
 万州区户政科电话 64880012
1写申请,表明迁入意愿,原因。到向坪社区(找冯春喜)里盖章,然后交给镇派出所 并包括毕业证复印件,新身份证照片(需要身份证制定点)。(本来可能需要本人办,但是乡下好办事,让家人托办就可以了)
 迁入地(太龙)派出所会给出迁出地所需的证明。
 然后到迁出地(厦大)办,
 然后到迁入地(太龙)办。
计划周末去照相,复印毕业证,用快递寄回家让办。

中国的户籍制度真是太可恶啦。

Tuesday, March 23, 2010

ksh detail

If you want to show the result of `ls` one entry by each line, try
argument -1 (1 not l)

Sunday, February 07, 2010

数据仓库建模_9

type 3 slowly changing dimension is just added a historical column.
The type 3 slowly changing dimension technique allows us to see new and
historical fact data by either the new or prior attribute values.

关注

在对方如果获得成就的时候,即使他在主动的讲了,也要记得关切的询问.特别是如果对方的心情都为之改变了,请关心.

Sunday, January 24, 2010

Intresting

Last night I was thinking about dirty things. All in a sudden,like there is a switch, I mind just became clean and I just be not drowned in it anymore. It's really a strange experience.