Thursday, January 31, 2008

bbc2 17:30 weakest link 外一则

game of live:

3 candidates, the modest voted strongest (that is correct), the weakest chosed modest (also correct?). If there is a tie, strongest can pick. so the modest is re-choosen by strongest

Good presenter

BBC is reporting US worrying for recession and debt

"people bought whatever they like, when they like it"
"we are spending more than we have"

美国卡车司机在路上开车刷牙

议员雇佣家人(法律允许),引发争议,很快可能制定法律要求公开此类情况
I think it is a down turn, but not bad time

we are resilient. I think we are changing but am worker. but in the end we go back to the front again. Those of us making the ecomony run will bring it back

10 pounds POM ( white australia attracted expat in 50s 60s)



EU justice court decide carers (who take care of beloved ones) have the same rights as disabled person. 6M carers in the UK. They can not be sacked?

海龟可以咬鲨鱼。。鲸吐泡泡好比用网捕鱼,另一只在海面上吃。。

horn鲨有倒刺,幼鲨可以避免被吃(会被吐出来)

国会有人用威尔士语+英语提问。。

it is obvious somebody invents the (insurance) policy and send it to market department, there it is packaged and given a good name and pushed to customers. Of course they want to sell as many as possible, ended up in some of the customers buying what is not appropriate to them.

People waterch: good program interpreting psychologic phenomonens

中国的耻辱,特别是当慈善和捐款没有同比增长的时候


>
 昨天,宾利中国总经理郑彪在接受《每日经济新闻》独家专访时透露:“进入中国3年,身价1200万元的宾利最顶级的雅致Mulliner728已在中国销售7辆,而其在全世界的销量也不过10辆

此人英语不错

Labels:

Tuesday, January 29, 2008

读data preparation for data mining

发现和Pyle真有缘,原来在去年4月就看过他的文章

Blogspot的文章是自动用标题里的英文部分作为文件名静态存储的,如果没有英文,就用post.htm, post-1.htm等等。。不错的考虑哦

1.先手工data assay,确认和了解数据质量,以及是否含有对领域问题的答案,再用工具准备数据

单变量分布:histogram (or histogram 4 a range of values), or curve (or smoothed curves using average of a number of values)

Q1: is the sample representative? Using Convegnece (add one instance at a time untile the curve bacomes stable
Q2: which method of exploring is better?

样本标准差是/n-1,不是除以n:独立变化的数据数目。只要有n-1个数确定,第n个值就确定了,它不能自由变化。所以自由度就是n-1。自由度表示的是一组数据可以自由表化的数量的多少。标准差公式可表述为根号(义赛咯x2-nm2除以n-1,等价于x2的义赛咯-x义赛咯的平方再除,再开根?

对类别变量取样:convergence用rate of discovery来确定有效性,不易再有新类别出现即可

多重线形回归能够解决任何缺失值的模式
autoassociate 神网:利用类似bp的反馈来确认缺失值

状态空间里的毕达哥拉斯定律:总是等于各维长度平方和的根

???Scree Plots,至少5维才能防止影射类型值时的偏差?? P234

数据准备(诸如正态化和分布调整),总是能帮助即使很健壮的工具,也大大加快(人工)调整时间,直接读取整理后的良好结构

数据比例低:p394:选2个子集,一个只有1例含特征,一个不含特征例
有效数据少:增加带白噪音的人工数据,甚至color matching(符合样本的多变量分布的噪音
一定要用未修改的数据来校验测试以上的2种perspective data

measuring information:surprise:小几率出现了;熵;字典

Clementine学习

用Stat和Barchat来做数据了解
filter来去除不需要的字段
sample抽样
type:修改数据类型(set,flat,range),预测类型(i/o/both)
feature selection
Then drag trained FS model to replace Feature selection
Then change Sample to ”discard sample" to use the rest 30%

then create antother Type and link to the built CHAID model. use Analysis, Evaluation

Then use clemrun.exe +.pim +.par

export pmml
Helper applications: can import ssas ALGORIGHMS,

?use chaid to explroe variable relation?

Saturday, January 26, 2008

周末电视:英国已在接受伊斯兰教法;开过英吉利海峡;bidTV

0.英国国教大主教说“Sharia伊斯兰律法在英国局部采用是不可避免的”,如果双方都同意的话。全国一法可能损害“文化忠诚”,有些律师也支持这种legal pluralism

可怕。。而且这些法庭已经合法运行很久了。。据称是保护妇女权益,比如丈夫不愿接受英国法庭的离婚条件时,而且很省钱省时间。犹太法庭也已经运行

但实际上,差别对待(引入法系)是很可怕的,某大法官(lord)看的明白:如果答应了,Muslin会要求更多

英国认可国外合法的一夫多妻制,并且给与补助。。

55%的英国巴裔穆斯林和表亲结婚(长辈指派)。3%的穆斯林人口,30%的先天残疾儿童。就这样,Phil Woolas议员的提示还被穆斯林关系委员会的人指控“奇怪bizzare,为什么不考虑先天畸形和污染的关系”。。正确的做法是提高教育程度,有必要的话写进法律,避免被人指责“种族主义”

除了美国(的多数州),其他西方国家都不禁止表亲结婚(但被多数人视为禁忌)。英国禁止和前岳母结婚

看来表亲可以用这个来申请避难。。

ebay停止卖家可以留差评的功能,引发卖家担忧

Fujitsu居然宣称分类叫号显示系统和配件贩卖机,用来解决了客户(VODAPHONE)的顾客排队等候焦虑和效率损失问题。。会不会太老了一点?

北京要求国外奥运选手签约禁止参加各种示威游行

Birmingham实行对独自开车上班的人罚款/起诉,鼓励共享。美国却有司机聪明到了用充气假人/贴图。。拉夫堡针对此种伎俩发明了可以检测出真人的摄像技术


audience's view: gambling addiciton is different in that its next action could be a cure so you are allured.

pint(Pine t) analogy stalk caribuo skirting

WWBaM:we liked each other (my dad was offered twenty camels for me
1.自己改装汽车(尽量密封),加浮筒,推进器,开过去!

这3个人太有创意了!

轮渡40磅,他们花了1万多镑:)

2。Jereme Kyle show 我最中意的家庭节目,把有矛盾的2方叫来,当面锣背面鼓地说清楚。我的口号是:学英语,学指责,学吵架!

这集居然用测谎器。。

为了结束关系,脱衣当众诱惑对方朋友,当众做爱。。 女的分娩3个月,男的花150镑买可卡因,却不买牛奶
why don't put your xx in your pants or put sth in the end

you disgust me!

unless you come

主持人大肆指责男的(到处有小孩),joke!

go and be a man. go and be happy.

观众经常比主持人或当事人更激动。。 当事人有时候需要保安互相隔开。。
2.看拍卖电视是个不错的学(女促销)英语的时间,比如200件商品,一个快嘴女在那里介绍,价格逐渐倒减(导播控制),然后逐渐有人出手(最开始喊价50,10镑开始有人买,9镑很多人打电话开始买,没人买就,促销就在那里鼓动如簧之舌,并开始降,最后最低价3.99)但是刚刚明白,所有人付的都是最低价。也就是先买不吃亏。。

3.居然有人证明了custard(一种糕)既是固体又是液体,用一游泳池的糕,在上面可以走,不能站立。这就是环保的英国人么?


注意陷阱(ebay):
很多人用便宜的价格卖锆石钻戒。。Created and cut stone就算是说过了不是钻石?

Friday, January 25, 2008

拍拍网出奇招:1小时千元免费购物:

预计能带来50%-100%的顾客增长,能维持为老顾客的假定在25%。腾讯没有说是随机抽取,还是取购物总额度最高的那小时,或者人最多的那小时。所以成本可以控制在0.1%- 4%以内。。真是非常不错的促销主意。。

不知道为了这个有没有把物价也涨上1%,那就真是无本万利了。。


〉只有报名用户才可以获得免费资格,报名不收取任何费用,报名入口1月24日开放。
2、1月27日-31日期间,每天有1小时的免费时段,免费时段当天不公布,第二天公布前一天的免费时段。在拍拍网购物,且财付通付款时间在免费时段内的报名买家可免费。
3、活动期间同一用户免费上限为1000元。付款金额(含邮费)低于1000元的,按实际付款金额返还同等金额的财付券,付款金额高于1000元的,返还1000元财付券。(一个用户包含下列几种情况:同一个QQ号,或收货地址是同一人,或技术上认定是同一人的)为便于计算,返还财付券精确到元,角分四舍五入计算。
4、返还的财付券将在活动结束一个月后开始发放

Thursday, January 24, 2008

Unix sh script basic

If you use if, must retain space between "[" and the latter word.

chmod 750
./scriptname


#!/bin/sh

use BACK QUOTE ` to quote a comand you want it to run, not SINGLE Quote '


#!/bin/sh
TIME=`date +%H`
#echo -e | $TIME
echo $TIME
if [ $TIME = 10 ]
then


echo "it is 10"

else

echo "not 10"
fi

Wednesday, January 23, 2008

V for 黑窑母亲群体及获救窑工派过年红包“网友送温暖”活动捐款方案

http://www.bullogger.com/blogs/lansidai/archives/122162.aspx

>
刚跟罗老师通电话,他问我捐款这样的活动,为什么不用钭江明这个名,还是用IAMV这个网名。

在这里解释一下:

我一开始就是用IAMV的名字进行寻窑工的活动,也想一直延用下去。

主要的考虑是我其实并不觉得V就是我。V是我从身上生长出来的一个人,或者说是我想塑造的一个人,又或者说是我希望成为的一个人。真实的我懦弱,自闭,有时猥琐,没法脱离低级趣味。

而V,在我的心目中是一个有担当有韧性胸怀宽广的人。V自称是复仇者。复仇这个词,八×八之后就开始有了具体的内涵。但V更宣称用爱来复仇,这就意味着他决不会加入到暴政/反抗那种施虐/受虐的游戏当中去。

V也是20年前开始流行的手势,到现在已成为照相摆甫士的经典造型。不过不妨碍从这个字母唤起的那么一点点也许老土的英雄主义情结。

开始关注黑窑事件以来,已经渐渐有几位网友也戴上了V的面具,这是我进行的一个行为艺术式的实验,为一个虚构的名字填上我们真实的血肉。

Tuesday, January 22, 2008

最后一枪

http://www.pt80.com/thread-49809-1-1.html###


是否,音乐也能成为一个因素,破冰。。10年了,一直没留意过这首几乎没唱歌词的歌的真正意义。。。

Monday, January 21, 2008

Oracle专家高级编程

此书在itpub被大力推荐:一个早就认识到的网站,却从那里成长出了很多高手。。 潜心学习吧

概念翻译:cardinality:基数

1. Basic commands.
select * from resources FOR UPDATE (to block other sessions)

a. create table resources (resouceid varchar2(25) primary key,...)
or create table as select * from oldtable
b.
create procedure p (Empname in varchar2 )

as

begin

for x in (select * from EmpInf where empname=Empname) loop
DBMS_output.putline (x.EmpNo)
end loop
end

c. variable x refcursor;
begin
open :x as select * from table
end
/
print x

alter table EMP add TCN integer;

insert into table select *


instead of (trigger)
create or replace trigger EMP_BUTRG
before update on EMP for each row
begin
/* 外加insert 触发器可以防止乐观死锁并行失败test for concurrency failure */
if( :new.TCN != :old.TCN+1 ) then
raise_application_error( -20000, ‘Concurrency Failure’ );
end if;
/* NOTE - additional pre-update code may go here */
/* update the transaction control number */
:new.TCN := dbms_utility.get_time;
end;

plsql>declare
va1 number;
va2 varchar2;
begin
select count(*) from emp;
for x in (select * from emp)
loop
end loop;
commit;
end;

create index id_name on table(column1, column2)

当查询开始时,多版本(快照)就会存在。可以表锁定(这样查询开始时就会得到确定结果,设想查询过程中表被更新,想查balance之和),也可以列锁定(查询结束才有结果)。

oracle支持列锁定,但不会造成以上困扰:oracle不需要共享读锁定,直接从回滚段中取得老的余额(快照)。

(行锁定+非阻塞读取)的副作用是:2个人同时搜索某个列(会议室占用)不存在,之后想根据结果同时插入新预定,2者都能插入

当更新时,oracle自动插入redo, undo
2. MTS (多线程,connection pool)只适合短时间的sql. 对于超长占用cpu的语句:采用advanced queue,但可能还要用伪transaction ID来敷衍应用程序,直到aq给出真id再替换

3。绑定变量:提高伸缩性scalarbility: select * from emp where empno=:empno. 第二次查询时,即查询经过编译后的方案在shared pool缓存中。否则,多耗资源,且硬编码变量将使用锁存latchet

for i in 1..1000
loop open l_rc for

'select * from emp where empno=:x"
using i

fetch l_rc to l_dummy
close l_rc

end loop

比无绑定快10倍(1.4s vs 14s)

4.Oracle封锁策略:1。修改时在该行上所定;2写入不会阻塞读取

5。oracle不支持null比较, use NVL instead (substitute a value when null is encountered

6. 生成unique id: create sequence t-sq; select t-sq.nextval into : new.pk from dual

7.追求完全独立于数据库实现是很困难的。为何要选择VB, ActiveX Control, IIS, Oracle?而不用java,ejb/cobra,Apache,所以,不利用oracle特性(哪怕简单如存储过程),是没有道理的

更甚,所谓”数据库开放性“把应用程序逻辑,乃至更重要的安全性,放到数据库外(ejb, jsp, iis),导致了数据库封闭。20多年来,数据前端每天都在变,只有数据库本身维持了20多年。所以,安全不在数据库里,成了进一步发展的障碍

8. DBA告诉我:是否用oracle内建feature,取决于商业:比如,Agresso不用外键,那么如何确保不插入外键为空的值?做一个全表扫描,符合SQL92标准即可。否则Oracle error code -192可能和SQL server error code不一致,需要在程序逻辑中判断

SQL92 4层(所有厂商支持),过渡(包括外连接,内连接语法),中间,完全。最佳的oracle实现唯一id:
create table t (name1 number primary key,..);
create sequenct t_seq
create trigger t_trigger before insert on t for each row
BEGIN
select t_seq.nextval into :new.name1 from dual
END;

8。oracle不推荐在sp中建立临时表,sql server不支持所有用户用同一张临时表

9. 1 CREATE TABLESPACE "SAMPLE"
2 LOGGING
3 DATAFILE 'D:\ORACLE\ORADATA\ORA92\SAMPLE.ora' SIZE 5M,
4 'D:\ORACLE\ORADATA\ORA92\dd.ora' SIZE 5M
5 EXTENT MANAGEMENT LOCAL
6 UNIFORM SEGMENT SPACE MANAGEMENT
7* AUTO

10. Pfile 参数文件,包含数据库名和控制文件位置。控制文件不超过64m,应有多个副本

外键如果没有索引,可能更新字表时引起阻塞或死锁?Exceptions resulting from foreign key conflicts due to violations of database referential integrity

?乐观锁定的并行解决:数据库时间戳。 可是如果某一方直接update,莫非数据库还要记忆他上面n步是否读取过该数据???如果超时了呢?

oracle锁定存储为数据的属性

delete from (select 可以用in/join)

For update时创建2个锁:所选定行和row share table锁(防止更改表结构),更新时将转为row exclusive table锁
每个表都有INITTRANS和MAXTRANS来管理阻塞,超出即阻塞

?哈希需要质数作为目的? 哈希通常有冲突.hash消耗cpu,indexing查找消耗io

Full table scan will search all (empty) blocks under High Watermark
3。为何不用索引

更改一个参数.optimizer_index_cost_adj 调整到40看看

optimizer_index_cost_adj
这个初始化参数代表一个百分比,取值范围在1到10000之间。
该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。
这些参数对于cbo的执行具有重大影响,其缺省值对于数据库来说通常需要调整。
一般来说对于optimizer_index_caching可以设置为90左右。
对于大多数oltp系统,optimizer_index_cost_adj可以设置在10到50之间。对于数据仓库和dss系统,可能不能简单的把optimizer_index_cost_adj设置为50,通常我们需要反复调整取得一个合理值。
更为具体的可以根据统计信息,db file scattered reads/db file sequential reads来计算。

analyze table 表名 estimate statistics sample 25 percent for table for all indexes for all indexed columns;
--------------------------------------------------------------------------------


这一招管用,谢谢了,不过这个是啥原理呢?

Card=185642
这是oracle认为的行数,也就是为什么不用索引的根源
上面兄弟提供的analyze语句包含了更新柱状图信息,应该就可以了

如果你收集了柱状图信息,以后记得勤更新,否则有问题会等着你。。。。

select /*+ ordered use_nl(小表名, 大表名) */
小表名.name,大表名.id
from 小表,大表
where XXXX
AND 小表.ID=大表.id



__________________
[URL]http://atgc.itpub.net[/URL]
引用 回复 报告

atgc
高级会员



精华贴数 1
个人空间 0
技术积分 7449 (144)
社区积分 144 (2336)
注册日期 2004-7-22
论坛徽章:24



#19发表于 2008-1-22 15:27
上面方法慎用,只有你确认小表确实很小的时候才用

为何出现ora-01555错误:一个update在更新大量块,另一个select在查询,同时回滚段不够多,逐渐被覆盖,当查询到已经无法回滚得内容时,snapshot太老(无法生成查询开始时的数据一致)

问题:??01555两个update互相冲突时,出错是在分析时还是update一半时?pdf1910, page 159

惩恶赏善不是教育

People Skills一书里面提到,心理学家提倡用惩罚和奖励和过度寻根究底之外的办法来建立孩子的遵纪能力。

1。惩罚让很多人变得自卑/内向;惩罚对之有效的恰恰是那些不需要惩罚的孩子,对其他孩子恰恰滋长了逆反抵抗和错误行为的动力

2。奖励也不比惩罚有效:有损受者的人格,长期来说将越来越无效:
a.奖励代表着对他人缺乏尊重,我们奖励相对我们处于劣势的人,按我们的偏好来奖励。
b.奖励代表着缺乏对他人信任,为何我们需要贿赂别人行善?这损害他人责任感的形成,剥夺其参与和自由贡献的权利
c.对他人来说,最后演变成了“我做这件事情有什么好处?”

"change your life in 7 days" recommended by my workmate

六步:协作问题解决法(解决冲突,用到倾听,反馈,assertation等技巧)
1。用needs需求来表述问题,而非基于solution(我今晚要去某处 vs 我今晚要用车)
2. Brainstorm思考可能的方案
3.选择最能满足双方的方案,考虑可能后果
4。决定谁,哪里,何时做什么
5。实施
6。评价

DBA讲B-tree

偶然问他我看到的"inverted index“概念,他告诉我这是常用的。我又问到B(alanced) Tree。热心讲解如下(据说要附发票)

索引的作用:1。select 2.排序

记录是在block间乱序排列,所以为了避免全表扫描,用最少3层的b-tree (root page, non-leaf-page, leaf page)来存

通常的索引都是reverted(一个值比如male对应多个rowid)

rowid=block#,row#

RootPage: 47(1)xx(y) 47以前都在第一个non-leaf page
non-leaf 6(1)10(2)47(3) rowid=6以前的都在第一个leaf page

leaf pages:123456 78910 47 (一些rowid的顺序排列,指向最终存储的block和rowid)

对gender(cardinality很低,只有2)

Oracle能分析sql, 用optimizer,确认application path (APS

建pk时自动建立unique index on PK columns

BitMap位图索引:
Record# 1 2 3 4
Gender=M 1 0 1 0
Gender=F 0 1 0 1
Gender=U 0 0 0 0

Bitmap是为数据仓库设计的,条目也很少。适合低基数数据(性别),count*特别快;适合集中读取。对于某些跨多列的查询,b-tree可能要建立太多的链接,不适合

Saturday, January 19, 2008

看了一本书,坚决不推荐

《门》,所谓中国第一恐怖小说家,开山鼻祖

非常没有美感或者感动,解构恐怖的情理解释倒还不错。那个长达几个章节的“如果没有”的串联陌生人的“蝴蝶振翅导致亚马逊风暴”也是不知所云,为了加强读者印象?真是不嫌臭长



还远不如随便发现的《恐怖小说――第51幅油画》

还有另一位谢绝假言,写的几部非常不错,属于非常有写作理想的作者
>

谢绝假言

还有一本《神的密码》,开局还不错,篇幅不长,两种文明之说,有点意思,可以解释气功等。 机械文明和生物文明

"翡斯人和我们一样,是发展生物文明的生命。"虽然水笙现在已经是人类,但在心理上依然对大海有着深深的归属感:"K要依赖行星内核的庞大能源最后仍功亏一篑的工程,那个翡斯人仅仅用自身的能量就做到了。对我们来说,文明的进步是对自身体悟的不断增加,外部世界只是作为映证,越是发展,对体内微观世界的理解和认识就越多,我相信正是由于这个特质,那位翡斯人最后才能悟出神的密码。可是进行如此微小精细的操作,不但要能量,更要耗费极大心力。这个水晶球完成之日,他自己也走到了穷途末路。"说到这里,水笙深深叹了口气,脸上的表情却无比的敬慕。"



按个人写作计划,这个《峨眉掌门传》是尽量要赶在2007年末写完的,而目下的进度才完成1/4,原因是多方面的,这里不想多说了。

火车已提速几次,但还得再提速,才能满足实际需求。《峨眉掌门传》如果是火车,也必须提速了。否则无法完成年计划了。

因为周六、周日都有事耽搁,所以只能在周三前更新《净房月光》(4),而从本周开始,《峨眉掌门传》写作将提速,从下周开始,每周将更新两节,更新时间暂定为每周一和每周五。

因为种种原因,本人以前的每一个作品,都是顺利过了初审关,但却被无声地拒于二审之外,因为“无声”,所以我也不完全明了全部原因,只能是“如鱼在水,冷暖自知”,又似“参禅”一样,可悟而“不可说”。总之,“古来成败原关数”。

所以,对于武侠写作,我目下的计划是,完成《峨眉掌门传》后,再接着写一个酝酿已经两年的中篇作品《平凡的江湖》,写完后,就封笔不写武侠了~今后是否改写其它类型小说?我自己现在也不知道。

不管怎样,是要完成《峨眉掌门传》和《平凡的江湖》的,就算今后不再写武侠了,但时间并不能抹去我曾今行走江湖的足迹,我希望《峨眉掌门传》、《平凡的江湖》和《不能终止的游戏》能无愧于这个江湖,能无愧于我的江湖梦。

Labels:

Friday, January 18, 2008

转:把握数据仓库的键

数据仓库 ONETruth
数据仓库就是面向主题的、集成的、稳定的、不同时间的数据集合,用以支持经营管理中的决策制定过程。目的是解决在信息技术(IT) 发展中存在的拥有大量数据、然而有用信息贫乏(Data rich-Information poor)的问题。
数据仓库的特点
面向主题
集成性—企业数据框架
历史性、稳定性
管理决策支持


foreign key:

part of it must be the PK of the referenced table (i.e. it must exist there)

在《数据仓库》(Inmon)一书中,主要描述了以下3种incremental extract方法:

1.数据增量抽取,主要是基于时间戳的

2、扫描增量文件,实际上就是关系数据库的归档日志。

3、前后映像对比

by1:
首先需要定义一张数据字典表,定义需要进行处理的任务,其中主要包括业务数据库和目标数据库的表名、字段列表、以及where条件,flag of succeed/failure等;
1、获取数据仓库目标表目前的最大时间(读取字典表或者当前表均可)

2、获取业务数据库业务表目前的最大时间(需要到业务系统中去读取)

3、如果业务数据库业务表数据为空,退出执行

4、如果数据仓库为空,业务数据库不为空,则再次读取业务数据库最小时时间

5、如果均不为空,则设置开始抽取最小时间和最大时间

6、最大时间设置为整点

7、根据控制事务处理大小的粒度,进行循环抽取

8、拼写SQL语句,写成类似以下的形式

INSERT INTO TargetTable (TargetFieldList)

SELECT SourceFieldList FROM SourceTable

WHERE WhereFieldName> BeginDate

AND WhereFieldName< BeginDate+粒度

9、处理状态写入该字典表

根据笔者多年的数据仓库实施经验,同时结合ETL的过程原理和数据仓库建设方法归纳总结了以下优化的方案,详细内容请读者参考下文:这篇论坛文章(赛迪网技术社区)

  1.引言

  数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作,SQL语句的效率将直接影响到数据仓库后台的性能。

  目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的数据需要通过搭建数据仓库平台才能得到科学的分析,这也是近几年数据仓库系统建设成为IT领域热门话题的原因。

  2.优化的思路分析

  数据仓库ETL过程的主要特点是:面对海量的数据进行抽取;分时段对大批量数据进行删除、更新和插入操作;面对异常的数据进行规则化的清洗;大量的分析模型重算工作;有特定的过程处理时间规律性,一般整个ETL过程需要在每天的零点开始到6点之前完成。所以,针对ETL过程的优化主要是结合数据仓库自身的特点,抓住需要优化的主要方面,针对不同的情况从如何采用高效的SQL入手来进行。

  优化的实例分析

  目前数据仓库建设中的后台数据库大部分采用Oracle,以下的SQL采用Oracle的语法来说明,所有的测试在Oracle9i环境中通过,但其优化的方法和原理同样适合除Oracle之外的其他数据库。

  3.1索引的正确使用

  在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则:

  (1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。

  (2) 避免在索引列上使用函数或计算,在WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。举例:

  低效: SELECT * ROM DEPT WHERE SAL * 12 > 25000;

  高效: SELECT * FROM DEPT WHERE SAL > 25000/12;

  (3) 避免在索引列上使用NOT和”!=” , 索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到NOT和”!=”时,就会停止使用索引转而执行全表扫描。

  (4) 索引列上用>=替代>

  高效: SELECT * FROM EMP WHERE DEPTNO >=4

  低效: SELECT * FROM EMP WHERE DEPTNO >3

  两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。

  (5) 函数的列启用索引方法,如果一定要对使用函数的列启用索引,Oracle9i以上版本新的功能:基于函数的索引(Function-Based Index)是一个较好的方案,但该类型索引的缺点是只能针对某个函数来建立和使用该函数。

  CREATE INDEX EMP_I ON EMP (UPPER( ENAME));       

  SELECT * FROM EMP WHERE UPPER(ENAME) = ‘BLACKSNAIL’;

  3.2 游标的正确使用

  当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。

  对数据仓库维表的数据进行维护时,因为需要保证维表ID的一致性,所以采用游标的是数据维护完整性的最好方式。由于它的效率低,如果按照普通的方式将无法处理大数据量的维表数据维护(一般是指10万条记录以上的维表),以下是处理这种情况的有效方式:

  (1) 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。

  (2) 在INSERT和UPDATE维表时都加上一个条件来过滤维表中已经存在的记录,实例为:

  INSERT INTO DIM_CUSTOMER SELECT * FROM ODS_CUSTOMER WHERE ODS_CUSTOMER.CODE NOT EXISTS (DIM_CUSTOMER.CODE)

  (3) 使用显式的游标(CURSORs) ,因为使用隐式的游标将会执行两次操作,第一次检索记录,第二次检查TOO MANY ROWS 这个EXCEPTION,而显式游标不执行第二次操作。

  3.3数据抽取和上载时的SQL优化

  ◆3.3.1 WHERE子句中的连接顺序

  ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其它WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。

  低效:SELECT * FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 <(SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);

  高效:SELECT * FROM EMP E WHERE 25 <(SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;

  ◆3.3.2 删除全表时用TRUNCATE替代DELETE

  当DELETE删除表中的记录时,有回滚段(rollback segments ) 用来存放可以被恢复的信息,而当运用TRUNCATE时,回滚段不再存放任何可被恢复的信息,所以执行时间也会很短。同时需要注意TRUNCATE只在删除全表时适用,因为TRUNCATE是DDL而不是DML。

  ◆3.3.3 尽量多使用COMMIT

  ETL中同一个过程的数据操作步骤很多,数据仓库采用的是数据抽取后分析模型重算的原理,所以对数据的COMMIT不像业务系统为保证数据的完整和一致性而需要某个操作过程全部完成才能进行,只要有可能就在程序中对每个DELETE、INSERT和UPDATE操作尽量多使用COMMIT, 这样系统性能会因为COMMIT所释放的资源而大大提高。

  ◆3.3.4 用EXISTS替代IN

  在许多基于基础表的查询中,为了满足一个条件往往需要对另一个表进行联接,例如在ETL过程写数据到模型时经常需要关联10个左右的维表,在这种情况下,使用EXISTS而不用IN将提高查询的效率。

  ◆3.3.5 用NOT EXISTS替代NOT IN

  子查询中,NOT IN子句将执行一个内部的排序和合并,无论在哪种情况下,NOT IN都是最低效的,因为它对子查询中的表执行了一个全表遍历。用NOT EXISTS替代NOT IN将提高查询的效率。

  ◆3.3.6 优化GROUP BY

  提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY 之前过滤掉。

  低效: SELECT JOB , AVG(SAL) FROM EMP GROUP BY JOB HAVING JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’

  高效: SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’ GROUP BY JOB

  ◆3.3.7 有条件的使用UNION-ALL 替换UNION

  ETL过程针对多表连接操作的情况很多,有条件的使用UNION-ALL 替换UNION的前提是:所连接的各个表中无主关键字相同的记录,因为UNION ALL 将重复输出两个结果集合中相同记录。

  当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并,然后在输出最终结果前进行排序。如果用UNION ALL替代UNION,这样排序就不是必要了,效率就会因此得到提高3-5倍

  ◆ 3.3.8 分离表和索引

  总是将你的表和索引建立在不同的表空间内,决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里。同时确保数据表空间和索引表空间置与不同的硬盘控制卡控制的硬盘上

4、有一点要主要的是,在SQLServer中有两种使用链接数据库的方法:

OPENQUERY ( linked_server , 'query' )

linked_server_name.catalog.schema.object_name的四部分名称

这两种方法各有利弊,第二种容易阅读一些;第一种方法据说把语句提交到源数据库执行的,效率可能会高些(实际的资料并未找到)。

其次这两种方法在使用起来语法有点差别,第一种方法采用的是宿主数据库的语法形式,第二种方法采用的是SQLServer本身的语法形式。因此在写脚本的时候也会有所不同。主要差别是在字段列表和条件处,暂时采用第一种方

本文主要是针对关于数据增量抽取的模拟实现——原理进行实现的

实现的环境:

业务数据库:Oracle9i

数据仓库数据库:SQLServer2000


)^a5sS)KFu/UJO~420351、前提SQLServer服务器已经安装Oracle驱动,不再详细累述ITPUB个人空间9n{ s*Z/r5wd
2、创建链接数据库
%~q_P`42035打开企业管理器->安全性-链接服务器-右键新建
(C#~|"S.Av42035
7y)t9nr|#rou5JBH42035通常情况当链接数据库创建好,进行打开的时候都会弹出一下错误窗口:ITPUB个人空间:q0@?5BtURJ

%LN-Q Mg dK C42035一般情况下运行C:Program FilesCommon FilesSystemOle DBmtxoci81_win2k.reg该文件后,重启SQLServer数据库,再重新连接;
'| eTkq cO42035如果仍有问题,重启操作系统,即可OK。
4m,]L e:Z"BFTP420353、创建Oracle环境脚本ITPUB个人空间T(`&X3Rf i~i _t
--创建Oracle业务系统表结构

CREATE TABLE SourceTable
\MR#{ ^'Al3W-n42035(ITPUB个人空间2O T,kRfM dG0h
ID1 VARCHAR2(50),ITPUB个人空间 q5A fw*{8k
ID2 VARCHAR2(50),
L r%|L\ c&[1V0x42035Measure1 INTEGER,ITPUB个人空间'N i@2}K"N
Measure2 INTEGER,
!\`;O _M8w'F&co42035CloseDate DATE
:y M g lf%P42035)

--创建测试数据

DECLARE

-- Local variables here
gt,cHO7rky5h$C7Cd42035i INTEGER;

BEGIN

-- Test statements here

FOR i IN 1..365 LOOP

INSERT INTO SourceTableITPUB个人空间.DtK'q a[9x ][[&|
VALUES(i,i,i,i,TO_DATE('2006-01-01','yyyy-mm-dd')+i);ITPUB个人空间6R&T8Oov9|3T_3A
INSERT INTO SourceTable
s{!b8as'h;L42035VALUES(i,i,i,i,TO_DATE('2006-01-01 12:00:00','yyyy-mm-dd hh24:mi:ss')+i);

ENDLOOPITPUB个人空间?#B2aJs.F$FDJ$o
COMMIT;

END;

ITPUB个人空间 FWJuQK(F?
4、创建SQLServer数据仓库环境脚本
z[As.?BG42035--创建系统参数表内

CREATE TABLE ExtractTaskList (ITPUB个人空间Vxmr%LAsU
TaskName VARCHAR(32) ,ITPUB个人空间 hAI&^7UM
TargetTable VARCHAR(32) ,ITPUB个人空间b!~(P#aU x `Q1p,O
TargetFieldList VARCHAR(500) ,ITPUB个人空间j(jrLykq)K-DV
SourceTable VARCHAR(32) ,ITPUB个人空间RH$T0q:c7\.o Xq
SourceFieldList VARCHAR(500) ,
%At Ob]42035WhereFieldName VARCHAR(32) ,ITPUB个人空间_Kq`U/w*dlTE!e
IncType INT,ITPUB个人空间:ex6`3t PJ%P-D
TransType INT,ITPUB个人空间aYA_'AFk|b
TargetDate DATETIME,ITPUB个人空间j.k`K@;`KcY6y
SourceDate DATETIME,ITPUB个人空间hY4s:cz4N
Flag INT,
:in*|E?:X7u42035Note VARCHAR (500)
K$y:uC#k42035)

GO

--创建数据仓库目标表

CREATE TABLE TargetTable (
3v+X3PD}42035ID1 VARCHAR(50),
P7Z'A+H^5x(y9H42035ID2 VARCHAR(50),
3Xg+x|]oV XEH42035Measure1 DECIMAL(18, 0),ITPUB个人空间*?b?v(]2A5|
Measure2 DECIMAL(18, 0),
x v:I/~(U42035CloseDate DATETIMEITPUB个人空间4K(a?a3L,Dg0H6k:Xq0MB
)

GO

ITPUB个人空间)t)I+AD[/n
5、创建SQLServer数据仓库ETL脚本ITPUB个人空间 h4i6j"[4c I u |\
脚本考虑到现实的问题,已经做了许多取舍,不再追求全部动态实现,旨在给定一个模板,在有限的范围内可以更改每次抽取的周期,每次时间的跨度,抽取的字段,表等等;数据字典表仅仅利用了其中的四个字段:任务名称,当前抽取时间、结束时间、抽取状态。CREATE PROCEDURE p_org_Extract
)pA^wvw E'z42035ASITPUB个人空间/ON-FnRm0S#x
DECLARE @sql VARCHAR(3000)

BEGIN

DECLARE @BeginDateDATETIME,ITPUB个人空间7J {'c$W9y5U.g
@EndDateDATETIME,ITPUB个人空间#j5Y7@DJA0|
@TaskNameVARCHAR(32),
k8}fS4~-V9L9D42035@FlagINTEGER,ITPUB个人空间z{*P!{&Pz)~ r
@NumINTEGER,
zV/qX(V!wRHQ42035@CurrDateDATETIME

SELECT @Num = COUNT(TaskName) FROM ExtractTaskList
&ui'fEo@42035WHERE UPPER(TaskName) = UPPER('test')

IF @Num != 1
8u;spI^ E42035INSERT INTO ExtractTaskList(TaskName,IncType,TransType) VALUES('test',2,2)

--获取列表中的当前任务的时间戳和状态ITPUB个人空间P3C3}"z"W)u)E%X L
SELECT @BeginDate = SourceDate,@Flag = Flag FROM ExtractTaskList WHERE TaskName='TEST'

--如果上次执行未成功,这样取值效率会高一些,则从数据仓库表中直接读取ITPUB个人空间.E4P P] lz[d2ns \
--TargetDate和SourceDate可能会不一致ITPUB个人空间&Ck ?1hsT:i,Z
IF @Flag = 2 OR @Flag IS NULL
zK.y C k0N!`&{42035SELECT @BeginDate = DATEADD(ss,1,MAX(closedate)) FROM TargetTable

--如果数据仓库无数据,则从业务系统中直接读取,也可以设置一个默认的初始化时间
'ia j&Vv7E4A{4q42035IF @BeginDate IS NULLITPUB个人空间FJ'V%\b2i0Kb%U
SELECT @BeginDate = MinLogDate FROM OPENQUERY(SOURCE,'SELECT MIN(CloseDate) AS MinLogDate FROM SourceTable')

--如果仍无数据,则表示无数据可抽取,退出执行
i$Q)po{Z o42035IF @BeginDate IS NULL
Q#[4\.L*bT9t |X42035RETURNITPUB个人空间xi T*WFK

)K@W%}(r^42035--抽取结束时间为当前时间前一天,每次循环抽取1天数据,可以更改dd为hh,变成按小时抽取ITPUB个人空间{5W(UQ/p ]
--通常业务系统是连续的,如果有疑问也可以从业务系统中获取最大时间ITPUB个人空间 x_X9R&Di(i.b
SELECT @EndDate = CONVERT(DATETIME,LEFT(CONVERT(VARCHAR,GETDATE(),120),10)+' 00:00:00')

--更新当前开始时间和结束时间
,If&E9O+Uz.V$B G7x42035UPDATE ExtractTaskListITPUB个人空间)QA:x)tb7s ~y'[
SET TargetDate = @BeginDate,
0y7r*p;D e:Gdy8aRx+p)?42035SourceDate = @EndDateITPUB个人空间#E)^3\9] V"v/k(_M
WHERE UPPER(TaskName) = UPPER('test')
(sX I d La42035
1\v7y;Z?A"Q"DB o42035WHILE @BeginDate < @EndDateITPUB个人空间:Mi~9}.f |-x.V:Nc
BEGIN
${2AB*RGgT42035SELECT @sql = ' INSERT INTO TargetTable
s*xu4K aC42035(
H~!g"q`$~&m#tB42035ID1,
(Bub7B"_/\4u42035ID2,ITPUB个人空间 u.X_A'Bq:r][
Measure1,
1s[u*o;k42035Measure2,
imd)GP1E7l!TJ42035CloseDateITPUB个人空间N^2q%ymoP%U
)SELECT * FROM OPENQUERY(SOURCE,''select
Ry'^$Vj%~ fc42035ID1,
8V_G*O/j h-m42035ID2,
yW9e(]S[42035Measure1,ITPUB个人空间(b~|q;an1Yv}
Measure2,ITPUB个人空间 t.U X{#lc
CloseDate
C)Ss`0[%q \&]'t Jh42035FROM SourceTableITPUB个人空间Kdh?lO]
WHERE CloseDate >= TO_DATE(''''' + CONVERT(varchar,@BeginDate,120) + ''''', ''''YYYY-MM-DD HH24:MI:SS'
0\o$xt-S w^n:L42035+ ''''') AND CloseDate < TO_DATE(''''' + CONVERT(varchar,DATEADD(day,1,@BeginDate),120) + ''''', ''''yyyy-mm-dd HH24:MI:SS'
]g J/~F2PP42035+ ''''') AND CloseDate < TO_DATE(''''' + CONVERT(varchar,@EndDate,120) + ''''', ''''YYYY-MM-DD HH24:MI:SS'ITPUB个人空间y(uto$_3]!vV2K
+ ''''')'')'
2\ K&y"]kr42035--PRINT @sqlITPUB个人空间F0v@"Lg)m;L}
EXEC (@sql)ITPUB个人空间'A6{K_jUv4\ N

q?3cFHCW42035--获取本次任务运行抽取的最大时间ITPUB个人空间C'n!g4Q"W;J
IF DATEADD(day,1,@BeginDate)>@EndDate
9{R u\ t EANC!a42035SELECT @CurrDate = @EndDateITPUB个人空间@"|bX9f%nx H.X'\
ELSE
;j6`9D|8RaPK3D o42035SELECT @CurrDate = DATEADD(day,1,@BeginDate)

--如果@sql执行失败,同样记录状态和时间
6@Uhcci42035IF @@ERROR <> 0
/Q7H6J.S4l42035GOTO FAIL

--记录每次运行的时间运行情况,可提供相应参考ITPUB个人空间D/lESi
UPDATE ExtractTaskListITPUB个人空间j%x qNj/m.e
SET TargetDate = @CurrDate,
1Z!_UP6s;^GOn-bV42035Flag = 1
C(Ez+S$p42035WHERE UPPER(TaskName) = UPPER('test')

SELECT @BeginDate = DATEADD(DD,1,@BeginDate)

END

RETURN

FAIL:

--记录错误

UPDATE ExtractTaskList
js GQ;FFo42035SET TargetDate = @CurrDate,ITPUB个人空间X,~#z4U:KmHR1LyH
Flag = 2ITPUB个人空间$yF5uG _ y
WHERE UPPER(TaskName) = UPPER('test')

RETURN 0

END



目前,在数据仓库逻辑模型设计上主要有实体-关系建模和维度建模两种方法,其中维度建模,即星型模式设计在国内数据仓库项目工程实践中应用更为广泛。星型结构模型典型的形式是一个主题由中间的一个大表和围绕在其
周围的一组小表组成。中间的大表称为“事实表”,存储数值型度量指标和连接到维度表的外键;外围的小表称为“维度表”,存储用于描述事物的文本属性信息及连接到事实表的主键。

这一结构体现了两种关系,一是维度表与事实表之间的一对多关系;二是通过事实表体现出的维度表之间相互的多对多关系。实践证明,这种简单而对称的结构能够表达各种复杂的业务逻辑,并有助于最终用户的访问。

主外键关系是维度建模的重要基础,那么怎样决定数据仓库中的主键呢?至少有三个方面因素必须考虑:第一,主键应该是稳定的;第二,主键应该能够标识出到相关源系统的映射;第三,主键实际是一种约束,必须考虑加载和查询的效率。

维度表中的键

维度表一般由主键、分类层次和属性描述组成。对于主键的选择一般存在两种观点:一种是采用自然键(Natural Key),即操作型系统使用的具有一定内置含义的标识符;另一种是采用代理键(Surrogate Key),即由装载程序或者数据库系统所赋予的一个数值,该数值按顺序分配,没有内置含义但可以作为一行维度信息的惟一标识。

根据笔者的项目经验,推荐采纳第二种观点,主要原因是代理键简化了事实表与维度表的主外键关系。维度表作为用户进入事实表的入口,承担着记录观察视角的历史变化轨迹的任务。如果以自然键、时间标签,或许还有机构代码联合起来也可以在逻辑上惟一标识出一个产品,但如果作为主键,那就意味着在事实表中也要加入同样的外键信息,而事实表记录行数是巨大的,在多个维度上重复这样的做法会使事实表由于列宽过于膨胀而迅速崩溃。

最好的办法是采用代理键,即选择一个只占用4个字节就可以处理20亿个正整数的列作为维度表的主键,这样既解决了事实表存储空间的浪费问题,又维持了自身的独立和稳定。

另一个好处是,代理键可以作为数据仓库系统与源系统之间的缓冲。随着企业的发展,生产系统中的产品名称、产品分类、组织机构几乎不可避免地会发生调整,有的时候甚至自然键本身也会发生变化。就像身份证号码都从15位变到18位一样,在历史的长河中一般认为不可能的事其实都有可能发生。如果采用了代理键,这些变化会被屏蔽在维度表内,需要记录历史轨迹的就贴上时间标签,不需要的就直接更新掉,变化的过程不会对事实表产生任何冲击。维持业务系统的自然键与维度表代理键的对照关系的目的也在于此,既保留了业务系统到数据仓库系统的映射,又提高了数据仓库系统的抗震性。

事实表中的键

事实表中包含度量指标和连接到相关维度表的一组外键,这组外键的联合惟一标识了一行事实数据。然而,事实表在维度建模过程中是如此重要,以致于我们必须进一步认识它。这里的关键是对逻辑主键和物理主键的认识。

逻辑主键是构成事实表的所有维度外键的联合。由于事实表存在多种类型,从粒度上看有原子级和汇总级;从度量的可加性上看有完全可加、半可加和不可加类型。在数据仓库逻辑模型设计阶段,使用逻辑主键是妥当的,这是一个具有很好包容性和概括性的定义。物理主键是在具体的项目场景中能够惟一标识事实表中一行数据的列的联合。在数据仓库物理模型设计阶段,一般会采用物理主键的概念。逻辑主键有时是和物理主键一致的,但并不总是这样。

物理模型中保单事实表的物理主键已经确定,那么是否意味着一定要在事实表上真正建立起联合主键?这个问题目前在业界存在着广泛的争议。笔者认为应该视情况而定,如果事实表很大,每天的增量信息很多,那么这个联合主键可以不做显式的声明,即不在保单事实表上建立主键,物理主键只用于ETL及数据核查过程。

因为,在OLTP系统环境中,数据的完整性通常靠两种方式来保证,一是应用程序的逻辑保证,另一个是数据库结构自身的约束机制。这两种方式相互补充,而数据仓库环境中的情况则完全不同,数据仓库中数据的完整性更依赖于应用程序,也就是ETL系统的保证。

首先,ETL系统运行时间虽然很长,但其结构是简单的,重复地抓取、清洗、转换、加载动作。与其相比,OLTP系统可能同时在一张表上执行大量并行业务操作;其次,事实表的惟一入口是维度表,按照维度建模的思路实现ETL程序,只可能产生不准确的维度信息,但不可能在事实表中产生重复记录;第三,与OLTP系统相比,数据仓库系统没有交互式人机录入界面,不存在“人为”错误。

因此,当装载时间窗是一个必须考虑的问题时,建议从数据仓库环境中删除一些不必要的约束,其中包括主键约束、外键约束和惟一索引约束。这些约束规则可以在外部得以实施。 (CCW)

Tuesday, January 15, 2008

转:最简单几条

冉云飞

每天做自己想做的点滴之事,每天有点成就感,每天觉得自己越活越明白,这样就身心健康,心无挂碍,同时也不会因社会太过污烂而充满无力感。我们固然都是小人物,不可能预与国家大事,但持续地做,改变社会进程,也未必没有我们一点功劳。既不要高看自己,亦不可妄自菲薄。比如我们每天学会不拿别人将你教成傻瓜的诸种教导,来参与他们对我们的洗脑进程。换言之,不抓屎往自己脸上糊,更不能糊了还觉得自己用的是资生堂化妆品;喝了满脑子的意识形态尿水,却说这是三十年的百龄坛威士忌;脑子被他们注愚民之水勾兑惨了,却说自己对社会的认识绵醇似茅台。这样除了别人可给你戴几条杰出的道德锁链外,你的权益不会有任何补救。
我们要用自己的话语方式,去言说自己认为真实的历史,去抗衡官方用尽办法将你的思维“人民日报”化。也就是说,我们平常在说话以及写文章的过程中应该尽量运用自己认为准确的说法,来描述自己对人世的判断。所谓的约定俗成,并非是“俗”成,而是用权力反复灌输的结果,即我们的意识已被强灌“权”成,对此我们要有所警惕与抵制。语言并非只是语言,这里面含着我们对事物的判断。我们每天说话写东西略为注意一点,就会向明白人更靠近一步,这并非文字游戏,这里面涉及到价值判断与我们的权利。我们不必天天想到要干大事,但我们可以每天干件做个明白人的小事。下面随举几例,大家可以依此类推,举一反三,并且欢迎朋友们提供你们的看法:
一:解放前、解放后。这是意识形态的洗脑语言,我现在改为49年前、49年后。
二:三年自然灾害。1959年至1961年饿死保守估计达三千万之众,官方却说这是自然灾害,这是颠倒黑白,糊弄历史。可名之曰三年大人祸。
三:解放战争。解放云乎哉,解放云乎哉,兄弟血争。我认为准确的说法是国共内战。
四:国庆长假。用一党之私利挟持一国民众之利益,一党利用流水之政府,挟持铁打之国家,非为民众之国家,不可谓之国庆。准确的说法为“十一长假”。
五:新中国。新在何处,难不成更加狂暴的专制,就是所谓的新吗?用“新中国”这样的说法,是为了取得不用证明不用质疑的合法性,这和“解放”二字是同样的道理。我认为客观的说法,应为四九年后的中国。同理“旧社会”也有相应的屏蔽历史真相的作用。
六:颠覆国家安全罪。在中国就是“批评政府罪”。
七:下岗。没有下岗,只有“失业

突发情况:

如果有人大叫,然后缓慢晕倒,肌肉和四肢僵直(stiff),这是癫痫。千万不要移动,更不能塞东西到嘴里,否则可能某方会受伤

安慰他,赶快叫医生。




Objects should never be placed in a person's mouth by anybody - including paramedics - during a seizure as this could result in serious injury to either party. Despite common folklore, it is not possible for a person to swallow their own tongue during a seizure. However, it is possible that the person will bite their own tongue, especially if an object is placed in the mouth

FireFox and IE: discriminating \ and /

Microsoft has a reputation in filtering things for users: they treat users as dummies and tend to suppress errors and do "automatic" and "smart" convertions when they think necessary.

Why I say that?

My colleague tried to include images from another directory in his web page, basically it worked fine in IE but not Firefox.


He uses in his whyfffails.htm

In the source code of http://server.com/dir1/whyfffails.htm, Firefox just showed something like "http://server.com/dir1/dir2/image.gif", why IE shows "http://server.com/dir2/image.gif" which we thought is normal..

The actual situation was worse as our application was using file:// like "\\damnedvender\dir2\image.gif"

We though FF is not able to reference to another directory in the same page...

Finally we created a simple htm and decided FF is able to do that.

Then we realized firefox only recognized \ as the correct format rather than /

Monday, January 14, 2008

Unix优于dos的地方

理念:一切程序都是filter,something in , something out.所以几乎任何unix程序,都可以pipe,任何设备都是文件。最好不需要interactive用户输入,不利于命令间互相协作

但是也不是大问题:可以用文件作为输入设备

来自10 philosophies of Unix

Sunday, January 13, 2008

comment: 湖南商人在英国遭诱捕 利用程序错误秘密回国

想想也知道两本护照有问题(使馆多半出手了)

产品手册上印对方公司老板的老婆?

广交会的结果就知道了。。

资本原始积累,但是伎俩不行。。或者说中国武力/技术不行,否则谁又能说啥?

中国司法没有公道可言。。。这是事情的直接起因

我不是说骗老外的钱一定不对,而是说,有本事,不要造假包子坑自己人,最好能用高级产品(中药秘方,按摩秘术也行)来侵略死他们。

或者用特别行动组和超级传送技术把人救回来。看英国能怎么样?

总之是没伎俩没技术没档次没武力的骗人,有点鄙视


所谓知识产权,也只是西方价值观(软件知识产权,则是盖茨以后)的产物

我们目前要妥协,而且这个东西如果合理,就该纳入我们的体系。

不代表我们要无条件跟从,赞服,跪拜人家的价值体系!

但是我们需要有自己的道德,技术,和武力。这样腰杆才正,才不会出现那么多的宵小和自己坑自己人的没有良知,尊严甚至是强盗技术的无耻之辈!

俗话说,盗亦有道,如今,我们既没有道,也没有能力盗!只能舔别人的残渣!用血汗出口廉价裤子换飞机,准备“统一”自残!


我鄙视没能力没智力的低级骗子,但是,我们要光明正大,不代表我们要舔西方的一切价值观!

我们需要重建自己的道德和社 会体系。盗亦有道!应该用中国法律严惩宵小骗子!还有窃 国者


>美国不是传说中的天堂,也有瘪三、也有垃圾,中国人在国家富强的道路上,不光要大大的赚钱,还要光明正大的赚钱,侵犯知识产权和藐视中国法律同样不能被接受。

如果中国法律能够严惩这种没档次的骗子。。对方公司也不会出招诱捕。。

中国应该做的是,引渡回来严惩。

次一等是,用最先进的军事和间谍手段,直接在英国把此人杀掉或者做成植物人,或者带回国严加审讯!

我们做不到,所以被这个骗子逃回来了。


他被诱捕是我们的耻辱,起因是我们司法的无能

他跑回来是我们的耻辱,我们不能用自己的价值观来严惩他,更是我们的耻辱

Monday, January 07, 2008

fwd:Kimball's DW interview question sample

Sample Interview Questionnaire
Analysis
1. What is a logical data mapping and what does it mean to the ETL team?
2. What are the primary goals of the data discovery phase of the data warehouse project?
3. How is the system-of-record determined?
Architecture
4. What are the four basic Data Flow steps of an ETL process?
5. What are the permissible data structures for the data staging area? Briefly describe the pros
and cons of each.
6. When should data be set to disk for safekeeping during the ETL?
Extract
7. Describe techniques for extracting from heterogeneous data sources.
8. What is the best approach for handling ERP source data?
9. Explain the pros and cons of communicating with databases natively versus ODBC.
10. Describe three change data capture (CDC) practices and the pros and cons of each.
Data Quality
11. What are the four broad categories of data quality checks? Provide an implementation
technique for each.
12. At which stage of the ETL should data be profiled?
13. What are the essential deliverables of the data quality portion of ETL?
14. How can data quality be quantified in the data warehouse?
Building mappings
15. What are surrogate keys? Explain how the surrogate key pipeline works.
16. Why do dates require special treatment during the ETL process?
17. Explain the three basic delivery steps for conformed dimensions.
18. Name the three fundamental fact grains and describe an ETL approach for each.
19. How are bridge tables delivered to classify groups of dimension records associated to a single
fact?
20. How does late arriving data affect dimensions and facts? Share techniques for handling each.
Metadata
21. Describe the different types of ETL metadata and provide examples of each.
22. Share acceptable mechanisms for capturing operational metadata.
23. Offer techniques for sharing business and technical metadata.
Optimization/Operations
24. State the primary types of tables found in a data warehouse and the order which they must be loaded to enforce referential integrity.
25. What are the characteristics of the four levels of the ETL support model?
26. What steps do you take to determine the bottleneck of a slow running ETL process?
27. Describe how to estimate the load time of a large ETL job.
Real Time ETL
28. Describe the architecture options for implementing real-time ETL.
29. Explain the different real-time approaches and how they can be applied in different business
scenarios.
30. Outline some challenges faced by real-time ETL and describe how to overcome them.

Sunday, January 06, 2008

MSBI and T-SQL puzzle

先建dw,并etl,然后建立analysis service db(add a cube and dimensions),并定期抽取数据

then define relationship between attributes, and then measures ane measure groups

Should use view to allow app to access DW, allow easy modification of structure, risk-free of future changes will break apps

SQL Profiler can monitor
all statements or a subset of the statements sent to SQL Server

Leave data that can not be validated, otherwise user won't trust DW later

Fuzzy Grouping transform: 发现很小的两行间区别并合并
Unpivot transfomr:旋转并加一列column?

Build dimension table first

Fact table usually do not need PK (as they are often summarized). It is biggest table thus column size must be well decided.

the fact table consists of a column containing the surrogate key for each dimension related to the fact table, as well as columns for the measures that we will be tracking. For the Shipments fact table, we need to add the ProductKey, SalesTerritoryKey, PlantKey, and ShipMethodKey columns

Referentia Integrity is not needed in DW if Surrogate key works
自动找出维表/事实表
UDM统一维度模型:扩展传统olap(否则要relational query):are not restricted to a predefined set of hierarchies for querying the cube. Instead, they can use any descriptive attribute on a dimension to analyze information

事实表中某些列(不能聚集的数据则不能做measure)叫做degenerate dimension/fact dimension

Surrogate key is called Identity columns in SQL2005. Dimension tables should have this

Business key like Shipmethodcode can be as short as possible

clustered index use business key to physically sort the index

For different length of text columns: user-defined types feature to create special data types for common categories of columns, such as ShortDesc and LongDesc

configure a Lookup transform to translate business keys into surrogate

KPI mentioned in MS UDM: Each KPI in the UDM defines up to four expressions for some performance metric (Sales level, for example):


The actual value.
The goal value.
The status. A normalized value between -1 and 1 that provides the status of actual vs. goal (-1 is 'very bad,' 1 is 'very good').
The trend. A normalized value between -1 and 1 that provides the trend over time (-1 is 'getting a lot worse,' 1 is 'getting a lot better').

If user need time inf: Rather than add time to TimeDimension The best way to support this is to leave the Time dimension at the day level (probably renamed Date for clarity) and create a separate dimension for Time Of Day.

Simple recovery is used in DW instead of Full in OLTP (only recovers to last full backup)

Versioning: change column width, load process could damage DW quality

A result of reloading the dimensions is the surrogate keys can change, invalidating the facts previously loaded. For this example, we will reload all the sales for each company so the new surrogate keys will be reflected in the fact table. This works if the volume of data is small enough that the processing fits within your time constraints. We show you how to properly update existing dimensions and incrementally load facts in Chapter 8, "Managing Changing Data."


********Name convention only***

Tables. Because we will be using views to provide access to the data, we have named the table with a prefix that describes the type (such as DimShipMethod or FactShipping) and the corresponding view with the real dimension or fact name (such as ShipMethod or Shipping).

Name style. We have capitalized each word in a column or table name, rather than using spaces or other separators such as underscores (so, ShipMethod rather than ship_method or ship method).

Surrogate key columns. We have used <>Key as the name, such as ShipMethodKey.

Business key columns. We have used <>BusinessKey as the name, such as ShipMethodBusinessKey. We apply this consistently, even when there is another obvious candidate such as ShipMethodCode or CustomerNumber.

Primary and unique key constraints. We have used <>_PK for primary keys, and <>_AK for unique keys such as the business key (the A in AK stands for alternate key).

One entity in dw must have one flow of data. when a Data Flow task is executed in a control flow
The business key is required to be unique?

you can create a new Analysis Services project with no data source, and then when adding dimensions, select the "Build without using a data source" option. After you have added attributes and hierarchies to the dimensions, you can select Generate Relational Schema from the Database menu to create the database.

Calculated measures命名可以包含空格。The formula to express the average days late is to divide the total number of days late by the number of shipments in question:
[Measures].[Days Late]/[Measures].[Shipments Count

无用的physical measure可以设visible属性

角色修改要在BIDS里,否则发布的时候被覆盖:You must either add the roles to the project in BI Development Studio so that they always exist, or deploy the project using the Deployment Wizard with either the "Deploy roles and retain members" or the "Retain roles and members" option selected. If you select "Deploy roles and members" in the wizard, any roles that you manually created using SQL Server Management Studio are removed.


>>>
Puzzle 1: Medication Tablets
Imagine that you've been diagnosed with a rare disease. Your physician prescribes two medications for youcall them A and B. Each bottle contains three tablets, and both medication tablets have exactly the same size, shape, color, and smell. Each bottle is marked with the medication type, one bottle with A and the other B, but the pills themselves aren't marked. You're instructed to take one A tablet and one B tablet every day for three days. Following the instructions correctly will cure you completely, but following the instructions incorrectly will result in sudden death.

The first day, you take one A tablet and one B tablet. The next day, you discover that someone has tampered with your bottles: bottle B is empty, bottle A contains one tablet, and three tablets lie on the counter. You realize that one A tablet and two B tablets are now mixed on the table, but you can't tell which is which. You call your pharmacy and learn that the tablets are out of stock until tomorrow. How can you continue following the instructions correctly and be cured?

(提示:你要吃的是,每天吃药的一半)

Puzzle 2: Chocolate Bar
Imagine you have a chocolate bar made up of 40 squares arranged in 5 rows and 8 columns. Your task is to divide it into the 40 individual chocolate squares using the minimum number of cuts. You're allowed to make only one cut at a time (and you're not allowed to pile multiple layers or lay them next to each other) and only in straight lines (horizontal or vertical). How many cuts do you need at minimum? Prove your logic; don't just guess.

Puzzle 3: To a T
Copy the shapes in Figure A-1 to a piece of paper that has square gridlines, and then cut the shapes out. Use the pieces to form a T shape with the proportions that Figure A-2 shows. You might have to think outside the box for this one!

看myoops等提供开放课程的资源有感

为何工作以后就没有通过这样方式学习的动力了。。

证明对我来说,学位,交流,这些东西还是很重要的。同时对在学校能学到多少工作中可用的东西,不持乐观态度,即使MIT课程在线了也如此

话说回来,除了交流技巧之外,决定看看MIT的quant以及MBA和经济学课程


以下来自方军

http://www.nytimes.com/2007/04/02/technology/02link.html


纽约时报报道了台湾的网站"oops"(www.myoops.org).这里集结了MIT、哈佛等顶尖学校的课程。哈佛的课程(这是哈佛第一个对外公开的课程)甚至有视频、音频、IPOD等。当然,其中也有斯隆管理学院的教学大纲、课程内容以及作业等等。
纽约时报对这个网站的创始人用了一个略带负面的词汇“unabashed”。但我相信所有像我这样希望回炉学习的人,肯定对这个网站充满了感激。
大多数人会有疑问:如果一切都可以通过网络学习解决,而且又免费,那么别人还为什么需要花高价去学习MBA?

翻译:如何写英文简历, a few tips from agcas

对于毕业生:
老调重弹,强调transferable skills因为雇主通常看中发展而非已学到的知识,并且提供事实来佐证






通常要写出生年月日,建议写国籍和工作限制(签证)

不要写性别,婚否和健康,除非雇主合法要求

如果有个人简介profile,控制在3-4行

推荐人

heading用大或其他字体,加黑想强调之处


Skills based CV也可以用team working; effective communications, initiative, Problem solving,technical skills, languages来分类skills and achievements

Problem sovling
. Designed and developed a new database for the pharamcy manaign finaicial , adinistrative and proejcte information. Researched the latest developments to provdei relevant software for the budget
. Frontline customer roles have taught me to find solutions to custmer problem in a calm an efficient manner

Initiative
.Reearched new sportsware concepts for the store and proposed ideas for event evenings during my weekend position. One idea was translated into an event that raised $400 for a local charity


Cover letter:

总是说明从哪里看到的广告
I am writing to apply for your xxx advertised in the xx and enclose my CV for your consideration.

解释为何你对该公司感兴趣
At this stage, my main long-term interest is in coporate finance and I believe a thorough grounding in different aspects of the compleax area of finace can only be beneficial. Your emphasis on client satisfaction is particularly appealing

可能的话,写信addressing给具体的人

如有明显障碍应该主动提及(硬皮症),表明自己克服的过程也是有益的,和工作困难有相同之处

Dear Ms Jones

转:SAP就是BI的黑洞

除非你买了BW和“足够”的咨询,否则就是一个噩梦。。。这是第一线的人员告诉我的



Special Considerations for SAP
Because of the marketplace dominance of SAP as an ERP system, we get asked
about the role of SAP in the data warehouse. Here are our unvarnished
recommendations.
You have probably heard the clich ´e that, from a decision-support standpoint, SAP
ERP is like a black hole: Rivers of data flow in, but there is no way to get the
information back out. Why?
A contemporary SAP ERP implementation is likely to have a data foundation that
consists of tens of thousands of physical tables, exhibiting few DBMS-defined
table relationships, with entity and attribute names rendered in abbreviated
German! Thus, the SAP RDBMS, for all practical purposes, is incomprehensible and
proprietary. SAP ERP comes with an extensive library of operational reports, but
these typically fall short of fully addressing the decision-support needs of most
business communities. This is not a design flaw. SAP’s OLTP data architecture
simply lacks support for fundamental business-reporting needs, such as historical
retention of transactions and master data images, comprehensible and easily
navigated data structures, and robust query performance characteristics.

Some early SAP adopters tried to free their operational data trapped inside the
ERP labyrinth by creating ERP subject areas in their data warehouses, populated
via hand-crafted ETL. Predictably, with few specialized tools to assist them in this
heroic undertaking, many of these efforts achieved unremarkable degrees of
success.
Recognizing this unmet and blossoming need, SAP created a decision-support
extension to their ERP application called the Business Information Warehouse
(SAP BW). Early generations of SAP BW were rather primitive and consisted mainly
of SAP-specialized ETL feeding proprietary OLAP repositories, thus lacking many of
the foundational architectural elements of the contemporary data warehouse.
Newer releases of SAP BW have evolved considerably and now embrace many of
the core tenets and structures of contemporary data warehousing: better support
for non-SAP data sources and persistent mainstream data repositories
(Staging
Areas, ODS, Data Warehouse, Dimensional Data Marts, and OLAP cubes). Some of
these repositories support open access by third-party reporting tools.
SAP BW value proposition, at face value, now offers a compelling price and
timeframe sales story that is likely to attract the attention of CIOs. And so, the
contemporary DW architect will likely be asked to define and defend a role for SAP
BW within the corporation’s overall data warehousing vision.
In the following table, we present pros, cons, and recommendations for several
SAP BW role scenarios within an overall enterprise DW strategy. We humbly
recognize that this is a rapidly evolving area, with many variables, in which fewfully satisfactory solutions exist. BW and ETL tool capabilities will change, thereby
modifying the decision balances that follow. But we hope nonetheless that our
evaluation process will be useful to you and extensible to your unique situation
and challenges.

fwd: Project2003在项目管理中应用与实践(一)

实践中用spreadsheet管理即可。。

http://www.windbi.com/showtopic-351.aspx


(清华大学项目管理在职研究生 2006届春季班) 作者:吴 锋
【摘要】MS Project 2003是当今国际上享有盛誉,且十分通用的项目管理工具软件,占有75%的国际市场份额,适合各个行业进行项目管理。该软件,简单易学,易用性强,还凝集了许多成熟的项目管理现代理论和方法,因此能够高质量地管理各种类型的中小型项目。
MS Project 2003 不仅可以快速、准确地建立项目计划,使项目管理者从大量烦琐的计算绘图中解脱出来,而且可以帮助项目管理者实现项目进度和成本分析、预测、控制等人工根本无法实现的功能,使项目工期大大缩短,资源得到有效利用,提高经济效益。项目管理工具软件MS Project2003是目前最先进的项目管理实用软件系统之一,它可以有效的帮助项目管理从业人员提高工作效率,促进整个组织的项目管理体系化、规范化。本文详细的讲述了Project2003在项目管理中的应用和使用,为了让读者更加通俗易懂,本文启动一个案例从头到尾理论结合实际。
【关键词】 Project2003 项目



实际案例简介:
清华大学项目管理方向在职研究生2006届春季班,2007年10月26日组织凤凰岭金秋2日游,历时参加人数大约40人,本次旅游休闲项目有“保龄球比赛”、“爬山比赛”、和“农家食宿”。北京是一个繁华的大城市,生活,工作节奏比较快,身在大都市人们平时压力比较大,这些活动紧随当前娱乐休闲的时代潮流,通过郊游方式使得同学们暂时抛弃工作带来的烦恼,心情放松,尽情享受大自然,与此同时,也加强了同学间的友谊,增进了感情,通过本次活动让每一个同学都有班级凝聚力,主人翁的自豪感。
恰逢项目管理学习完毕,而且有幸获得同学们的信任,由我来主导筹备,策划该次活动,学以致用,正好以“凤凰岭金秋2日游”作为项目,使用正规的项目管理理念去规划,实施,控制,希望使得该次活动更加圆满,成功。在这里咱们使用的项目管理工具是目前比较流行项目管理软件Project2003,Miscrosoft office Project 2003是Microsoft Office System中用于项目管理的专门工具和解决方案,它有几个突出的优势:简单易学,有效管理,保证信息及时更新,是中小型项目管理的最佳选择。好了,上面介绍了这么多,下面咱们先一块了解下项目管理几个基本概念。
一、什么是项目,项目都有什么特点呢?
项目是为了完成某一个独特的产品或服务所进行的一次性工作。
其实,任何组织的工作都可以分为2类:日常运作和项目。日常运做是一系列常规化的任务,具有重复性,而且在组织的整个生命周期里持续进行着,例如平时收款,付款,报销等。日常运动对于维持组织业务正常运转是必不可少的。项目是在特定条件下,具有特定目标的一次性任务。项目不是常规化的,也不是特续进行的。这就是说,项目具有独特性和临时性。实施项目的目的通常是为了达成企业的战略目标。项目通常是一系列任务,它的最终目标是创建或者完成一些的新的始创工作,新产品或在特定的日期前完成一项新工作。典型的项目包括软件开发,新产品发布,建筑物施工等。另外,没有两个项目是完全相同的。例如,现在施工的建筑物和上一个就不会完全相同。
项目的临时性和独特性决定了项目的另外一个特征,这就是渐进明细。每一个项目都是独特的,不可能从其他项目一下子复制过来,因此项目的实施必然是渐进的。随着项目的进展,项目团队对项目产品的理解必将逐渐深入和全面。
二、 项目管理九大知识领域
在项目管理知识体系中,包括九大知识领域(范围管理、时间管理、费用管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、综合管理)。这里提醒下,从项目管理辅助工具软件Project2003来说,它包含了这九大知识领域中的5大核心领域,另外4个领域需要通过其它辅助工具或人工操作来完成。包括的5大领域如下所述:
1、 范围管理
项目管理的第一个知识领域就是“范围管理”,在项目范围中,包括两层内容:一是项
目范围;二是产品范围。项目范围针对的是我们项目的目标,包括软件开发、集成、培训和项目实施等。产品范围侧重在软件的需求范围,可以理解为对项目范围的一个重要补充。两者有一定关联,但也各有侧重,只有这两者相加,才构成了我们完整的项目范围。然而在Project2003工具中,指的项目范围是指第一种,结果输出就是WBS分解。
2、 时间管理
时间管理也称进度管理,在Project2003中,它提供了工期估计、工作搭接关系、进度安排、进度控制等基本功能。还能够自动计算出关健路径,可以很方便的设置我们的里程碑控制点,并能够实现项目的动态跟踪。还提供了多种时间的管理方法,甘特图、网络图、日历图等。应该说时间管理,是Project 2003中最强大的功能。
3、 费用管理
在费用管理中,Project2003中采用的是“自底向上费用估算”的技术,由于它是依赖每个WBS任务的估算,所以使得费用估算更为准确。并且它还能与EXCEL等进行结合,生成费用曲线图和挣得值趋势图。
4、 人力资源管理
在人力资源管理中,Project2003提供了人力资源的规划、人力资源责任矩阵、资源需求直方图、资源均衡等,它能帮我们做好资源的分配、进行资源的工作量、成本和工时的统计。
5、 整合管理
项目管理的整合管理就是对于整个项目的范围、时间、费用、资源等进行综合管理和协调,在Project2003中,它能根据范围、时间、资源的变化自动进行相应计算和调整。


三、 项目管理五大过程组
项目管理由五大过程构成,项目经理必须进行大量的平衡工作,我们可以把这些过程划分五个管理过程组,每个过程组都由一个或者多个过程组成。
1、启动过程:批准一个项目或者阶段.。
2、计划规划过程:界定和改进目标,从各种备选的行动方案中选择更好的方案,以实现所承担项目所要达到的目标.。
当项目发起人批准一个项目并任命你为项目经理时,你就需要准备进入项目的计划编制阶段.。计划规划过程的结果是一份切实可行的项目计划和一个团队准备开始项目的各项工作.。计划规划是一项贯穿整个项目生命周期的持续不断的工作.。
在深入到项目计划的具体细节之前,往往需要对项目一个综合的考虑.。可以首先通过设定项目的目的和目标来确定项目的远景.。这也有助设定项目的范围.。同时你还要了解项目的期望,限制和假设,而且他们是整合在一块的.。你也需要识别项目的风险并制定相关的应急计划.。
在计划过程中项目经理需要完成如下核心任务.。
把项目细分为组成任务,再对任务进行组织和排序以精确反映项目范围.。
为把任务列表转化为可行的项目日程,需要制定任务工期并把各任务联系起来.。还可以建立任务之间的相关性.。如果你能确定任何可交付成果的特定期限,就可以把这些期限作为任务的约束条件.。这样,Microsoft Office Project就可以开始为特定的任务或整个项目计算实际的时间进度表.。利用这个计划可以精确地预测项目的范围,进度和预算.。同样也可以确定需要何种资源,所需的数量和时间.。
当任务被确定之后,就可以确定完成任务所需的技能,设备及材料需求.。获取所需的资源后,项目经理把资源分配给适当的任务.。现在,就可以计算出项目的结束时间以及项目所需的成本.。如果计算结果表明已经超过了允许的期限或预算,就可以做作出必要的调整.。
3、执行过程:协调人员和其他资源以执行计划.。
在这一阶段,项目经理手中已经有了项目计划.。所有的任务都被排定并且分配了资源.。在项目实施阶段,项目经理需要做如下:
为了获得更好的跟踪信息,要有一份确实的项目计划信息,这样当项目进行时可以与项目的实际实施情况进行比较.。
作为一个项目经理,必须关注项目实施过程中的资源使用情况.。
可以以完成百分比的形式来跟踪任务的进展情况,跟踪一项任务从开始到结束共用了多长时间,或者一个资源在这项任务共花费了多少小时.。当收集这些信息时,就可以确定任务是否可以按时结束.。同样,也可以收集关于资源,任务和整个项目的成本信息.。
4、控制过程:通过定期监控和测量进展,确定与计划存在的偏差,以便在必要的时候采取纠正措施,从而确保项目目标的实现.。
项目绩效需要得到定期监控和衡量,以确定与项目计划的偏差.。项目团队实施任务时,项目经理必须保证在实现项目目标中概括范围情况下,项目不能超出概定的期限和预算.。在项目管理中,这被称为"项目控制".。在项目的控制阶段,项目经理要监督所有任务活动,比较项目计划和实际进展并且作出必要的调整.。
5、收尾过程:项目或阶段的正式接收并达到有序的结束.。
在项目的最后阶段,项目经理实现了预期的目标并完成了项目.。在转入下一个项目之前,应该对从这一项目获得的知识进行总结.。当项目收尾时,项目经理需要:
与项目团队成员一起工作并开一个"事后检讨会"来总结那些地方作得好,那些地方可以改进.。
把任务,工期,任务关系和资源技巧等和项目计划一起保存下来,以便你或其他经理下次遇到类似的项目,就可以减少很多重复工作.。
这些过程相互联系,一个过程组的输出将成为另一个过程组的输入,而且这些联系可能是循环进行的.。项目管理过程组不是分离的,而是互相重叠的.。过程组的相互作用是会跨越阶段的,一个阶段结束是为下一个阶段的启动提供了输入.。
四、 Project2003使用前的环境设置
在进行计划编制前,需先设置好Project2003的使用环境,这样可以更方便我们计划规划时的操作。环境设置一要根据自己的习惯,二是要根据项目的实际情况。下面介绍几种常用的环境设置项。
²
首先,要设置项目摘要信息,在摘要信息中需输入该项目的标题、项目经理和单位等信息。主要是便于打印时显示的信息。

操作方法:选中菜单 文件-》属性-》摘要信息-》。
²
设置项目的日历,默认从星期日开始,中国人的习惯一般是从周一开始。

操作方法:选中菜单 工具-》选项-》日历-》每周开始于-》。
²
设置任务类型,默认为“固定工时”,固定工时的含义是当一项任务分配给一个人做是10天,当增加一人时,则工期自动变为5天。我们的操作习惯应该是人员增加时,原工期一般要求仍不变。所以需选择为“固定工期”。

操作方法:选中菜单 工具-》选项-》日程 -》默认任务类型-》。
²
设置WBS编号,默认无WBS编号,为了计划阅读清晰,建议设置大纲编号作为WBS编号。

操作方法:选中菜单 工具-》选项-》视图-》选中显示大纲编号。
²
设置工作时间,默认是按标准日,也即周六、周日休息。行政日指不但考虑周六、周日休息,而且考虑到中国的传统节假日(如国庆、五一等)。我们一般要根据项目的具体情况,如该项目比较工期比较紧,项目组要求每周六加班,周日休息,那么就需将周六设置为“非默认工作时间”。

操作方法:选中菜单 工具-》更改工作时间-》选中对象-》非默认工作时间。
  提醒,因为咱们项目是周五和周六2天来举行,所以把周六设置为非默认工作时间。并    
把时间设置为早上8点到凌晨0点

Friday, January 04, 2008

fwd: data warehouse interview qa

Data WareHousing Interview Questions
Database Interview Questions
EJB Interview Questions
Google & Microsoft




What is ER Diagram?
Entity Relationship Diagrams are a major data modelling tool and will help organize the data in your project into entities and define the relationships between the entities. This process has proved to enable the analyst to produce a good database structure so that the data can be stored and retrieved in a most efficient manner.
An entity-relationship (ER) diagram is a specialized graphic that illustrates the interrelationships between entities in a database

What is a level of Granularity of a fact table?
Level of granularity means level of detail that you put into the fact table in a data warehouse. Level of granularity would mean what detail are you willing to put for each transactional fact.

What are lookup tables?
A lookup table is the table placed on the target table based upon the primary key of the target, it just updates the table by allowing only modified (new or updated) records based on thelookup condition

1NF: not repeating, must have PK

http://www.stuart.edu/courses/im510/database/2NF.htm

(非主键要被全部主键决定,不能部分主键)

比如pk=description+supplier, 锤子(description)可能有不同supplier,supplier地址要去除掉
Therefore, Supplier Address is NOT functionally dependent upon the ENTIRE PK (Description-Supplier) for its existence.

We must get rid of Supplier Address from this table



3NF:非主键不能被非主键确定

主键是书名,但笔名可以被作者名唯一确定


.一台有两个CPU的UNIX机器,2G内存,带一个300G磁盘阵列,数据库是Oracle8i或Sybase IQ 12。
有5张主要事实表,初始数据装载30G原始数据,
以后每天每张事实表增加约200M原始 数据,每张表约有5~10个可分析角度需与维表关联,
要求第二天能从数据仓库中访问头一天的数据。
白天数据源所在的业务系统数据库不能访问,
请简要说明您的数据初始装载策略、数据刷新策略、索引策略、系统参数及针对Oracle或SybaseIQ的数据库参数设置。

这个物理配置相当于一个5万客户80万账户的银行CRM数据集市的配置

数据初始装载策略:当天晚上业务系统结束后,将原始数据FTP到本机,表是可扩展的,扩展大小约200M,做星形模型,
数据刷新策略 每天晚上刷新数据
索引策略: 在日期字段上有明显分片的表上建立分区,影响每日跑批和前端查询的表的关系字段上建立一般索引,在一些经常用作查询条件的属性上可以建位图索引
UNIX系统参数: 这个数据量的影响不是特别大
ORACLE数据库参数配置 这个数据量不是特别需要配置,如果需要,可以查阅相关性能文档

8.您对数据仓库中的缓慢变化维,

在基础层如果有必要的话,可以建立内部代码,在可以预测得变动范围内,预留代码给可能变化的,或者完全转化为内部代码
每日刷新CUBE的维度是必要的,
问题的关键在于如果对于一个维度,例如机构代码
发生合并撤销或者新增等的时候,如何在时间上进行比较,这个时候不仅仅在技术上需要用“缓慢变化维”的通用处理方法,而且需要跟客户沟通,已达成一个双方都能接受的结果,
明天我会上传一些关于缓慢变化维的处理方法

echo find /etc -name "passwd" -print ¦ at now +1 minute

#ls -lrt > File_list.txt ¦at now +5 hours

您有无使用过Oracle的分区、位图索引、执行计划分析功能?位图索引与普通索引的区别是什么?什么时候使用位图索引?

对于在一些如日期等字段上有明显的存储分段行为的,或者说在这个字段上分布比较均匀,在逻辑上可以看作是按照这个字段把这表分成几个小表
并在查询过程中,有明显的这个字段的限制条件的时候,在这个字段上建立分区,会明显提高查询存储效率

位图索引,是对于一些在离散值上有查询关联条件的时候,比较适合用位图索引

informatica

建模工具 ERWIN 熟练使用 POWERDISINGER 了解
ETL工具 POWERCENTER 熟练使用 DATASTAGE 一般使用
前端展现工具,BI-OFFICE,ESSBASE 熟练使用 BO 一般使用
OLAP Server ESSBASE 熟练使用
数据库、 ORACLE 熟练使用 DB2 熟练使用 MS SQL 一般使用


4.请用C++或其他高级程序语言,写一段程序,功能是生成2000年至2010年的全部日期数及该日期是星期几,写入一逗号分割的文本文件,也可用PL/SQL将数据插入到一张临时表中。(上机,或将代码直接写下)


好久没有关注了,我用sql写了一下,感觉写sql都已经没有感觉了,各位大侠见笑了
declare @Temp table
(
mydate smalldatetime
)
insert into @Temp
select convert(datetime,'20000101',102)

set @i=1
while @i <(select datediff(day,convert(smalldatetime,'20000101',102),convert(smalldatetime,'20091231',102))+1)
begin
insert into @Temp(mydate) values (dateadd(day,@i,convert(smalldatetime,'20000101',102)))
set @i=@i+1
end
select mydate,datepart(weekday,mydate) from @Temp
在sql 2000 中已测试通过


Pivot可以翻译为:枢轴表,似乎比旋转报表更好理解,也符合字面意思(spss):


行、列、层可自由互换,达到从各个
角度观察数据的目的

fwd: By Pass Windows Genuine Validation Process In Xp

By Pass Windows Genuine Validation Process In Xp
1 st : Include All Updates
2 nd : You Will Get A message You May Be Victim Of Software Counterfetting or Piracy .
3 rd : Go to Task Manager and ENd the Process WgaTray.exe
3 th : go to System32 folder there locate
WgaLogon.dll
WgaTray.exe
LegitCheckControl.dll
5 th : Delete all the above files ; If you are unable to delete them just rename and delete .
6 th : Now go to x:\Documents and Settings\All Users\Application Data\Windows Genuine Advantage\data folder
7 th : delete the file data.dat
8 th : Open Note Pad Write Anything You Want To Write Just Write Now Save it as data.dat in the x:\Documents and Settings\All Users\Application Data\Windows Genuine Advantage\data folder
9 th : Set The Arrtibute Of File As Read Only and Hidden .
10 th : Restart the Pc
Your Probelm Is Solved Just Downlaod Anything From Microsoft Without Any Probelm !!! Enjoy .

Posted by sillibinzz at 9:39:00 AM 0 comments

fwd: 数据仓库 及 ETL

Kimball and Inmon

Raugh Kimball自下而上,Bill Inmon's approach is to introduce a fully normalized data warehouse into which all the data for a corporation is loaded, before flowing out into dependant data marts or data marts for specific purposes. This approach was previously known as Enterprise Data Warehouse, but more recently has become known by the somewhat awkward term Corporate Information Factory or CIF.

MS的经验是Kimball更合适:it's difficult to justify the effort and expense of creating and maintaining an additional normalized data warehouse, especially because of the difficulty of tying concrete returns on the investment back to this central data warehouse


主要term:
ODS (operational data store)
EDW (enterprise data warehouse)
Staging area
Presentation area
Data warehouse
Data mart

ROLAP/MOLAP传统:MOLAP只适用于低维,小数据量。用batch curve和query curve的曲线之和在processor requirements/degree of compilation坐标上比较得出:见书:Dw and decision support Vol2 Spiral Books (Inmon, also likes inverted index,克服b-tree or hashed inexing:以西部作为key,指向记录号1,3,12作)

2005:用缓慢变化维来抓dimension表

j2ee的模型都是beans,比如MVC设计模式中MailingBeans的实例,由MailingBeanFactory.newInstance()

Dimension tables are the context of a business’ measurements.
The chapter clearly illustrates how to:
Assign surrogate keys
Load Type 1, 2 and 3 slowly changing dimensions
Populate bridge tables for multivalued and complex hierarchical
dimensions
Flatten hierarchies and selectively snowflake dimensions

Fact tables hold the measurements of the business. In most data warehouses,
fact tables are overwhelmingly larger than dimension tables, but at the same
time they are simpler.

Chapter 9 defines the three types of metadata—business, technical,
and process—

Atomic and Aggregate Fact Tables按时间段partition事实表,可以减少可能的查询扫描

The grain of a fact table isis the definition of what constitutes a unique
fact table record. I


The preceding example illustrates the need to make all ETL jobs reentrant so
that the job can be run a second time, either deliberately or in error, without
updating the target database incorrectly.

如今的olap已经可以含和生产数据库一样粒度
维度表与事实表区别:事实表的每列就是一个维度

事实表由表的粒度grain定义

所有事实表都有外键连到纬度,以确定其衡量dimension
one or more numerical measurement fields, which we call facts.

事实表通常有3个及以上facts.early retail databases usually had only three or four dimensions (usually product, market, time, and promotion).几乎每个事实表都有由几个字段组成的pk

We will see that this grain can then later be expressed in terms of the dimension
foreign keys and possibly other fields in the fact table,

维度表It is a superbly flexible, symmetric framework suitable for all classes of queries。Similarly, the best dimensions are verbose descriptions of the dimensional
entities.
Dimensional attributes are mostly textual or are numbers that take on discrete
values. Dimension tables should always be built with a single primary
key field that is a simple meaningless integer assigned by the ETL process.
These keys are called surrogate(替换) keys.


The primary surrogate keys in each dimension are paired with corresponding
foreign keys in the fact table. When this primary-to-foreign key
relationship is adhered to, we say that the tables obey referential integrity.


数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看W.H.Inmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
  “面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
  “与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
  “不可修改”:数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
  数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋。
  补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
  1.效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。
  2.数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
  3.扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,客户不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了。


Specifically, the ETL system:
Removes mistakes and corrects missing data
Provides documented measures of confidence in data
Captures the flow of transactional data for safekeeping
Adjusts data from multiple sources to be used together
Structures data to be usable by end-user tools

分为plan&designing stream(需求-〉设计-〉实现-〉测试,部署)和data flow stream(extraction, clean, conform, deliver)

The extract step includes:
Reading source-data models
Connecting to and accessing data
Scheduling the source system, intercepting notifications and
daemons
Capturing changed data
Staging the extracted data to disk
The clean step involves:
Enforcing column properties
Enforcing structure
Enforcing data and value rules
Enforcing complex business rules
Building a metadata foundation to describe data quality
Staging the cleaned data to disk
This step is followed closely by the conform step, which includes:
Conforming business labels (in dimensions)
Conforming business metrics and performance indicators (in fact
tables)
Deduplicating
Householding
Internationalizing
Staging the conformed data to disk

Data delivery from the ETL system includes:
Loading flat and snowflaked dimensions
Generating time dimensions
Loading degenerate dimensions
Loading subdimensions
Loading types 1, 2, and 3 slowly changing dimensions
Conforming dimensions and conforming facts
Handling late-arriving dimensions and late-arriving facts
Loading multi-valued dimensions
Loading ragged hierarchy dimensions
Loading text facts in dimensions
Running the surrogate key pipeline for fact tables
Loading three fundamental fact table grains
Loading and updating aggregations
Staging the delivered data to disk

如果只有一个巨大monster维度表(比如上亿用户),仍有可能快速插入fact。秘密:对维度表的lookup table和插入数据都提前派序 (用natuaral key)。

查找表:含natual key 和surrogate key

为每个维度维护一个special surrogate key lookup table,这样加快查找。每个dimension entity建立或者type 2变化发生时更新

但如果fact纪录迟到,则无法用查找表

type1 没有历史

fwd: BI in china

接下来,我来介绍一下我们具有中国特色的BI解决方案的几个特征:
1. ETL
ETL是以前我们所不太在意的部分,然而,实际当中,ETL已占用了我们70%的工作量。国内客户的源数据各式各样,甚至会有很多Excel文档和纸质的报表,这些源数据并没有严格的业务规则来限制它们,所以数据的准确性存在很大的隐患。并且很多隐患是客户也不了解的,往往只有在最后报表中才能发现数据存在问题。这些问题只能通过调整ETL来解决。ETL的调整是往复的,一般都要经过几十次的变动,而每一次对错误数据的追根求源却变得极其困难。所以,我们将花大量的时间来建立严格的源数据的业务规则。
2. 动态报表
前面讲到,客户对OLAP很感兴趣,但在实际的工作中却极少使用它,那么,客户究竟需要的是什么?传统的报表客户基本已经实现了,我认为,他们需要一套新型的报表系统,这种报表系统将介于OLAP与传统报表之间,兼顾两者的优势,即可以实现传统报表的格式要求,也会有OLAP的一部分的灵活性,这就是动态报表。
目前Reporting Services正可以完成这种报表,我们还通过二次开发,给Reporting Services增加了更多的可操作功能,使客户在同一张报表内可以看到更多的信息。
我们在前端展示方面,90%以上的工作是制作报表,而OLAP功能只占了很少的份额。我们还是希望将这种功能推荐给我们的客户,一方面这样更容易拿下项目,另外一方面,我们也希望通过OLAP产品来推动客户思维的提升,我们相信,不久的将来客户一定会接受这种全新的分析方式。
3. 漂亮的外观
曾经我不认为漂亮的外观是重要的,因为我觉得在数据分析中数据是最重要的,然而我的客户并不这样认为。在实际的项目中,漂亮的外观变得尤为重要,所以我们经常要引用一些第三方的控件,来增强整个系统的美观性。
现在可以毫不犹豫的说,漂亮的外观已经变成我们拿下客户的一个杀手锏。
4. B/S与C/S相结合
目前所有的系统都流行使用B/S架构,而我们却在系统中将B/S与C/S相结合,客户中的大部分使用者会使用B/S架构,而关键的决策者(一般是领导)却使用C/S架构,因为C/S可以提供更强大的功能,更多的向导,更漂亮的外观,甚至是更傻瓜,但这正是领导所喜欢的

,没有一家的业务是完全一样的,我认为对个性化主题的持续开发是bi在一个企业持续发展的关键。这些是不可能靠干几个月,上个平台能解决的问题。往往在项目开始的时候,用户对bi还是蒙蒙糊糊,可是他们的口号比任何人喊得都响,最后,你发现他们需要的是仅仅是为了做报表,我建议对这种用户最好不要费劲推荐他们采用olap,因为,对用户的扫盲是个痛苦的过程,如果用户口头上认同你的观点,实际上它关注还是报表,我觉得实在是得不偿失,还不如推荐用户买个润乾,做那些用户津津乐道的不规则表格,建议商家对那些有钱但理念达不到的客户,不要硬推给他们olap,不要什么钱都赚

我听过金老师几次视频讲座,感觉受益匪浅。金老师在此说的,一语道破olap成功的关键,值得每个用户仔细思考。我在此引用金老师在msdn讲座中的对olap的三个主要功能:报表、钻取、挖掘的精辟解释与大家分享。1、报表:反映目前的状况(企业是否存在问题)。2、钻取:能帮助我们追踪问题产生的原因;3、挖掘:可以预测未来或未知的规律。 我理解金老师强调的是olap发挥它巨大作用是在钻取和挖掘方面,而前几年国内很多银行上数据仓库,投资巨大仅仅实现了报表功能,我认为根本原因正如金老师所说的,业务部门对它的认识不到位。



OLAP真的是报表的替代品吗?我重新开始思考这个问题,也开始真正接触Reporting Services,我惊奇的发现,客户那些非常规的需求在Reporting Services中奇迹般的都被解决了。至此,我终于明白:OLAP并不是报表的替代品,OLAP与报表需要相辅相成,来解决客户不同的需求

是我们就开始在OLAP系统中去做客户已经制定好的报表,但我们却发现,客户的报表总会或多或少的有一些不规则的地方,例如突然在表格中多出了一个小计,或者有这样或那样的特殊的表格线。而这些不规则的地方在OLAP系统中几乎都无法实现,因为为了实现钻取,OLAP的表格必须是规则的。
矛盾就这样产生了。
我们无法理解客户为什么一定要求那些特殊的表格线而不看重那些优秀的分析功能,客户则无法理解为什么我们的软件连几条表格线都加不上去,因为这些表格线对他们来讲太平常不过了,他们以前都是在Excel表中把它们画出来的。

fwd: SQL 2000 tips

SQL2000 tip
--地宝原创,转贴请注明出自微软BI开拓者www.windbi.com


1.建立索引
create [UNIQUE or CLUSTERED or NONCLUSTERED] index index_name on table(column,...)

2.建立unique,clustered,nonclustered,primary key 约束
alter table tablename add
constraint constraint_name [unique or clustered or nonclustered or primary key] (conlumn,...)
注:primary key 约束,默认为索引

3.建立Foreign key约束
alter table tablename (with nochek) add
constraint constraint_name foreign key(conlumn,...) references anothertable(conlumn,...)

anothertable(conlumn)为参照的主键

4.建立check约束/default约束
alter table tablename add
constraint constraint_name Check(condition)

alter table tablename add
constraint constraint_name default 'default_value' for conlumn_name

5.删除约束
sp_helpconstraint table_name 查看一个表中的约束情况
alter table table_name drop constraint constraint_name 删除约束

6.删除索引
sp_helpindex table_name 查看表中索引情况
drop index table_name.index_name 删除索引

7.恢复备份
restore database putonrecord from disk= 'f:\putonrecord(完全).dat' with norecovery
restore database putonrecord from disk= 'f:\putonrecord.dat' with recovery
restore database DBname from disk= 'c:\DBname.bak'
WITH recoverty,
MOVE 'OnSouth_Data' TO 'd:\DBname.mdf',
MOVE 'OnSouth_Log' TO 'e:\DBname.ldf'

RESTORE LOG MyNwind FROM MyNwindLog1 WITH NORECOVERY
RESTORE LOG MyNwind FROM MyNwindLog2 WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'
--追加备份的恢复方法
restore HEADERONLY from disk='c:\bak\bak.dat' --记录一下position的值
restore database from disk='c:\bak\bak.dat' with file=Position的值

8.察看备份文件信息
restore FILELISTONLY from disk='f:\stat\stat'
restore HEADERONLY from disk='f:\stat\stat'
restore LABELONLY from disk='f:\stat\stat'
restore VERIFYONLY from disk='f:\stat\stat'
--验证备份但不还原备份。检查备份集是否完整以及所有卷是否都可读。但是,RESTORE VERIFYONLY 不尝试验证备份卷中的数据结--构。如果备份有效,则返回"该备份集有效"。

9.导入/导出
BULK INSERT DB..TableName FROM 'd:\trvca.txt' with (fieldterminator='|',rowterminator='|\n')

--Output to XLS
exec master..xp_cmdshell 'bcp gtdjgl.dbo.gtdj out c:\a.xls -c -q -S"(local)" -U"sa" -P"sunny"'

--Output to XLS with queryout
exec master..xp_cmdshell 'bcp "select qymc from sydjgl.dbo.qydj" queryout c:\a.xls -c -q -S"(local)" -U"sa" -P"sunny"'

--Input from XLS
exec master..xp_cmdshell 'bcp gtdjgl.dbo.gtdj in c:\a.xls -c -q -S"(local)" -U"sa" -P"sunny"'

SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\xyz.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheetname$

--读取txt文件
SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Text;Database=E:\;' , 'SELECT * FROM aa#txt')

--将sql文件导入
osql -U 用户名 -P 密码 -i c:\**1.sql

10.查看索引情况
select table_Name=sysobjects.Name ,
index_Name=sysindexes.Name,
Type=sysobjects.type,
分配索引页=sysindexes.reserved,
使用索引页=sysindexes.used,
叶子层页=sysindexes.Dpages,
非叶子层页=sysindexes.used-sysindexes.Dpages,
rows=sysindexes.rowcnt
from sysindexes left outer join sysobjects on sysindexes.id=sysobjects.id
where sysindexes.indid>0 and sysindexes.indid<255 and sysindexes.status & 64=0
--若发现非叶子层的页数为负数,最好是运行DBCC UPDATEUSAGE ('dbname','tbname','ixname')来更新一下sysindexes的信息

注意indid列的取值
1 = 聚集索引
>1 = 非聚集
255 = 具有 text 或 image 数据的表条目


11.查看表锁情况
if object_id('tempdb..#lock')>0
drop table #lock
go

create table #lock(
spid int,
dbid int,
ObjId int,
IndID int,
Type varchar(10),
Resource varchar(100),
Mode varchar(10),
Status varchar(10)
)

insert into #lock exec sp_lock
select dbName=d.Name,ObjName=o.Name,l.* from master..sysdatabases D,#lock L,sysobjects O
where D.dbid=L.dbid and O.ID=L.ObjID

12.消除孤立用户
exec sp_addlogin 'LoginUser'
use db
go
exec sp_grantdbaccess 'LoginUser','db_User' --在当前数据库中添加帐户(public)
use db
go
exec sp_revokedbaccess 'LoginUser' --从数据库中删除帐户
use db
go
exec sp_grantdbaccess 'LoginUser' --重新为数据库添加账号

或者
use db
go
sp_change_users_login 'Report' --显示存在孤立用户的数据库帐号
sp_change_users_login 'Auto_Fix','sameName' --将数据库帐号='sameName'与登陆帐号='sameName'的建立连接
sp_change_users_login 'Update_One', 'dbUser', 'LoginUser' --将db数据库帐号dbUser与登陆帐号LoginUser建立连接

或者
用dts来导入帐号信息:
[在源数据库上新建一个包
然后将“传输登陆任务”从左边工具栏的 拖到右边框里
在弹出的框中设置相应的登录信息,最后运行包即可]

或者
bcp master..syslogins out localpath\syslogins.dat /N /S current_primary_servername /U sa /P sa_password
EXEC xp_cmdshell 'copy localpath\syslogins.dat destination_share'
EXEC sp_resolve_logins
@dest_db = 'dbname',
@dest_path = 'destination_path',
@filename = 'filename'
GO

注意:使用dts或sp_resolve_logins最后还都是要作一遍sp_change_user_login才能将登陆帐号与db帐号连接起来

可以用sp_helpuser来察看数据库账号情况
可以用sp_helplogins来查看登陆账号情况

13.添加帐号
exec sp_addlogin 'sys_accounts','pass','default db'
use db
go
exec sp_grantdbaccess 'sys_accounts','db_accounts' --添加到当前数据库下
sp_addrolemember 'db_owner','db_accounts' --调整数据库登陆角色为db_owner

或者
(1).exec sp_addlogin 'sys_accounts','pass','default db' --sp_droplogin 为删除登陆帐号
(2).sp_addsrvrolemember 'sys_accounts',sysadmin --调整系统登陆角色为administrator

--更改默认数据库
sp_defaultdb 'sa','newdb'

14.更改数据所有者
use db
go
sp_changedbowner 'newLogin' --将db库dbo默认的系统登陆帐号(sa)更改为新系统登陆帐号newLogin,也就是说newlogin账号有了db数据库的db_owner权限
--说得再白一些,newLogin登陆账号,将拥有db数据库的db_owner权限,但他却不需要在db中添加新的数据库账号(也就是
--说在db数据库中没有newLogin这个帐号,而是将dbo帐号与newLogin系统帐号连接起来了)
--因为,它直接利用dbo这个数据库账号。

use db
go
exec sp_changeobjectowner 'gsscowner.sp_tjbm_sci','dbo' --更改表、存储、试图对象的所有者,'dbo'处可以使用其他的数据库账号,但非系统账号

15.分布连接
SELECT * FROM Opendatasource('SQLOLEDB','Data Source=ServerName;User ID=MyUID;Password=MyPass').Northwind.dbo.Categories

16.查询表使用情况
EXEC sp_MSforeachtable @command1='sp_spaceused ''?''',@command2='sp_mstablespace ''?'''

17.测试T-SQL的执行效率
dbcc DropCleanBuffers --清除缓冲区
dbcc FreeProcCache --清除过程高速缓存

set statistics io on
select count(*) from one --报告查询中包含的每个表所进行的I/O活动信息,包含扫描的行数和读取的次数。
set statistics io off

set statistics time on
select count(*) from one --报告关于CPU和查询的全部执行时间及其查询结果而运行的其他系统过程(如:编译和存储查询的过程)的信息
set statistics time off

set showplan_all on
go
select count(*) from one --以文本的形式报告查询执行的详细计划
go
set showplan_all off

18.整理索引
dbcc showcontig(tbName,ixName) --with ALL_INDEXES

- 扫描页数.....................................: 3 --总的分页数目
- 扫描扩展盘区数...............................: 2 --一个扩展分区相当于8个连续的分页
- 扩展盘区开关数...............................: 1 --当dbcc顺着分页指针浏览整个结构时,扩展分区间切换了的次数。说的白一点就是在 --扫描中一个页与前一页位于不同盘区的次数
- 每个扩展盘区上的平均页数.....................: 1.5--用 扩展分区数(2)/扫描页数(3) 得出的数据
- 扫描密度[最佳值:实际值]....................: 50.00%[1:2]--最佳值:3个分页应该是在一个扩展分区中;实际值:扩展盘区更改的
--实际次数。2的由来实际是由盘区开关数+1得出的。
- 逻辑扫描碎片.................................: 0.00%--Out of order pages/扫描页数(3) .
Out of order pages 含义:本来按照分页的连续性,数据分布的分页应该是
紧紧挨着的,但由于数据的修改、删除而整页的搬移,造成了数据分布的不连
续性,不连续的页就是out of orders pages .
--在这里没有任何一个分页不连续,因此为0
- 扩展盘区扫描碎片.............................: 0.00%--与上面的意思基本一致,仅仅是将分页换成了扩展分区
- 每页上的平均可用字节数.......................: 246.7--代表每页空下来未放数据的字节数(平均值)
- 平均页密度(完整)...........................: 96.95%--代表分页填满的程度(平均值)

backup log logname to disk='D:\log\db.log'

alter database dbName set recovery simple /*set recovery bulk_logged*/set recovery full

dbcc DBReIndex ('db.owner.tbName','ixName','Fill Factor')

--DBCC INDEXDEFRAG (dbName, tbName, ixName)

alter database dbName set recovery full

backup database dbname to disk='D:\db\db.bak'

19.sp_server_info 用来察看数据库系统状态

20.alter database northwind set MULTI_USER /single_user --设置数据库为单用户/多用户访问模式
sp_dboption 'pubs', 'single user' --判断数据库是单用户还是多用户
sp_helpdb --也可判断
SELECT DATABASEPROPERTY('master',IsSingleUser)

21.alter database northwind ... WITH ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
--...为数据库设置操作
--回滚未完成的事务

22.exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','10.50.80.11' --添加连接服务器
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','suntting'
sp_dropserver 'srv_lnk', 'droplogins'--删除登陆信息
sp_helpserver

23.DBCC UPDATEUSAGE/sp_refreshview/sp_recompile/sp_spaceused objectName,true/false
DBCC UPDATEUSAGE --报告和更正 sysindexes 表的不正确内容,可能会导致 sp_spaceused 产生不正确的空间使用报表。
sp_refreshview --解决重建视图的问题,还可以通过重建,发现系统中视图的语法错误。
sp_recompile --使存储过程和触发器在下次运行时重新编译,若调整了表结构,发现存储过程运行很慢,可以用这个来解决
sp_spaceused objectName,true/false --但每次更新表或索引时,sysindexes表中的数据并不立刻更新,因此sp_spaceused输出的结果不能反映表或索引的空间总数,需要加参数 --true强制更新

24.修改默认的数据文件组
ALTER DATABASE dbName MODIFY FILEGROUP dbGroupName/[PRIMARY] DEFAULT

25.如何把20060126转成2006-01-26
select convert(varchar(10),cast('20060126' as datetime),120)

26.随机选出数据
select top 1 * from table order by newid()

27.怎样删除sa
(1).sa可以删除但不建议你删除,其实只要设置好密码不用它既可
删除办法:
先获取修改系统表的权限
sp_configure ’allow updates’, 1
go
RECONFIGURE WITH OVERRIDE
go

update sysxlogins set name='modify' where sid=0x01
update sysxlogins set sid=0x1823BA32F3E6F84EBD5EA43973D810AC where name='modify'

sp_droplogin 'modify'删除刚刚修改的账号即可

28.删除/添加扩展存储过程
(1).exec master..sp_dropextendedproc 'xp_cmdshell' --删除
(2).exec master..sp_addextendedproc xp_cmdshell, 'xplog70.dll'
(3).exec master..sp_helpextendedproc [exprocname]

29.select CAST('Aug 1 1996 12:00AM' AS datetime)出错
设置默认语言即可
SET LANGUAGE us_english
select CAST('Aug 1 1996 12:00AM' AS datetime)

30.强制使用索引
with(index(索引名))

31.跳过被锁定的行
select * from tb with(READPAST)
强制跳过聚集索引的索引页和索引叶节点页(数据页)中行锁定的部分。
select * from test with(FASTFIRSTROW) where c1<>1

32.dts包转移
先打开dts包,选择“另存为”,在位置处选择“结构化存储文件”,将包导出
导入时,右键点“数据转换服务”,选择“打开包”,将刚刚导出的包导入即可

33.更新系统表
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go

34.获取字节长度
select DATALENGTH('str')

35.使用自定义的索引
select count(*) from equipment with (index(PK_equipment))

36.目前登陆名、数据帐号
select SYSTEM_USER
select user
select suser_sname

37.查询语言支持
SELECT * FROM ::fn_helpcollations() --系统所支持的所有的语言
select DATABASEPROPERTYEX( 'dbname','Collation') --查询当前某库使用的语言
sp_helpsort --查看服务器默认的排序情况
要看表中的排序情况,请参看syscolumns 或者 sp_help 'tbname'

39.DBCC check修复步骤
USE master
go
--EXEC sp_dboption 'equipment', 'single user', 'TRUE'
alter database equipment set single_user with ROLLBACK IMMEDIATE
go
--dbcc checkdb(equipment,REPAIR_REBUILD)
dbcc checkdb(equipment,REPAIR_ALLOW_DATA_LOSS)
go
alter database equipment set MULTI_USER with ROLLBACK IMMEDIATE
go

40.查询磁盘使用空间
EXECUTE master..xp_fixeddrives

41.快速查询表的行数
SELECT @num_rows=rowcnt,@min_indid=indid FROM sysindexes WHERE id=OBJECT_ID(@qualified_table_name)and indid < 2

42.检验两个表是否相同
select sum (convert(numeric, binary_checksum(*/colname) ) ) from tbname

43.获取一个错误的返回值方法
(1).declare @ret int
EXEC @ret = sp_addlinkedserver 'srv_lnk2','','SQLOLEDB','10.50.80.14'
select @ret
(2).用@@error来判断

44.怎么获得所有的odbc数据源名称?
xp_enumdsn

44.获取类似sysobjects的属性
exec sp_tables @table_type="'TABLE'"
exec sp_tables
select * from INFORMATION_SCHEMA.TABLES where table_type='Base TABLE' and table_name<>'dtproperties'

45.sysprocesses的应用
select spid,uid,syslogins.name,login_time,net_address from sysprocesses,syslogins where sysprocesses.sid=syslogins.sid

46.使用索引服务
sp_addlinkedserver filesystem,'indexing service','MSIDXS','doc'
select * from openquery(filesystem,'select directory,filename,docauthor,size,create from scope() where contains(contents,''模块'')')

47.ISNUMERIC 确定表达式是否为一个有效的数字类型。

48.len(trim()) 判断是否为空

49.让自动编号的ID从1开始
truncate table tablename --清表后会自动回到原始
dbcc checkident('tablename',reseed,1) --重新设置为1
SET IDENTITY_INSERT Tablename ON --设置这个选项后就可以insert自定义的id值了

alter table t_b add newcol int identity(1,1) not null

50.汉字排序问题
--按笔划排序
select * from sheet2 order by col1 collate Chinese_PRC_Stroke_CS_AS_KS_WS
Select * From sheet2 Order By col1 Collate Chinese_PRC_Stroke_ci_as
--按拼音排序
select * from sheet2 order by col1 collate Chinese_PRC_CS_AS_KS_WS

SQL基本
In the search string following LIKE
% matches any sequence of characters (possibly zero characters).
_ (underscore) matches any single character.
Any other character matches itself providing no "escape" clause is specified.
An escape clause makes it possible to match the characters % and _ themselves by preceding
them with an "escape" character. For example
WHERE CITY LIKE ’\%%\_A%’ ESCAPE ’\’

fwd: MS BI design


package最终该发布到sql server/filesystem上,发布前可能要修改某些变量,通常存在sql server表中

to reuse existing configurations, you must use the same names for the connection managers, including case,

Tip: Transforming Logic into Additive Measures(是否准时,在olap中,就加一维)especially true for logic that needs to be evaluated for every record at the detailed, fact-record level.

实例:CASE WHEN ShipDateKey <= DueDateKey THEN 1 ELSE 0 END AS OnTime
此处performance penalty不是问题, query will only be executed to load the data into the Analysis Services database.

An alternative approach to modeling this is to add a new On Time Category dimension that has two records, On Time and Late.好处是可以选维成员,只分析落入此类的shipment

不能加和的,则在cube里工作不好Analysis Services 2005 has some other ways of aggregating numbers beyond a simple sum such as Max or Min, and even supports some advanced scenarios for dealing with data that behaves strangely over time; by and large, however, most measures are summed

具体实行AS:1. Logical data model: You can select the parts of the source database that will be used for analysis by defining a logical view of the database called a data source view (DSV),

2. we need to create the relationships between Fact table和维度表 (especiall if they are view not table,没有主键),2个表也可可能有多重关系aka "role playing dimension

3.build the initial cube The wizard 根据前述dsv关系自动推断哪个适合fact,dimension
最常见只用1个cube 可以含多个不同粒度的fact table.
每个事实表既一个measure group, with a corresponding set of measures based on the numeric fact columns.

4。先deploy结构,再被提示process数据
??为何wizard要选time dimension table
金立钢原创,转贴请注明出自微软BI开拓者www.windbi.com

目录
微软BI架构设计(一)----总体架构设计
微软BI架构设计(二)-----构建多维数据集
微软BI架构设计(三)-----多维数据集验证及数据仓库生成

BI已成为微软产品线中不可或缺的一部分。从2005年到2007年,微软在其BI产品线中增加了大量的产品,本文将介绍微软BI产品线的各款产品及其系统架构。
从下图中可以看到,微软BI产品线已经涵盖了所有BI功能点,具体如下:
1. ETL:SQL Server 2005 Integration Services
2. 数据仓库:SQL Server 2005 Database Engine
3. OLAP:SQL Server 2005 Analysis Services
4. 数据挖掘模型:SQL Server 2005 Analysis Services
5. 多维数据分析(B/S):
Ø Proclarity(2007年12月之前)
Ø OWC
Ø Performance Point Server Analystic(2007年12月之后)
6. 多维数据分析(C/S):Excel 2007
7. 计划分析(C/S):Performance Point Server Planning
8. 平衡计分卡:Performance Point Server ScoreCard
9. 报表:SQL Server 2005 Reporting Services + Dundas
10. Data Mining Viewer(C/S):Excel Data Mining Add-in
11. Data Mining Viewer(B/S):自定义开发
12. BI Portal:SharePoint Server 2007
涉及的语言:
1. MDX
2. DMX
3. T-SQL
4. VB Script
5. ASP.NET
6. C#


微软BI架构设计(一)----总体架构设计
微软BI架构设计(二)-----构建多维数据集
微软BI架构设计(三)-----多维数据集验证及数据仓库生成


在前一篇文章中已经介绍了微软BI系统的架构,接下来我将分不同的文章来介绍构建微软BI架构的每一个步骤。
今天我们来介绍第一步:创建Analysis Services数据库。
我相信很多朋友都会问,为什么每一步不是创建数据仓库,关于这个原因,请参见我的另一个帖子“搭建OLAP系统新方法”(http://www.windbi.com/showtopic-389.aspx)。
构建Analysis Services数据库是整个过程中最困难的一步,并不在于它要求多高的技术水平,而是它需要对客户需求准确的理解。作为一个开发人员来讲,理解客户需求是非常困难的,这也就意味着你很难去设定哪些是维度,哪些是量度,以及它们的属性。而这些也是客户无法帮助我们的,因为他们根本不懂什么是维度和量度。
这时,一个既懂开发技术,又能够清楚了解客户业务的人就难得可贵了。
Analysis Services数据库的建设是后面工作的基础,因为它将直接决定数据仓库、前端展现和ETL的设计。所以对它的设计一定要全方面的进行考虑,尤其是以后客户额外需求所带来的影响,即可扩展性,这也是我发现目前大多数Analysis Services数据库设计所欠缺的考虑。
Analysis Services数据库的设计需要注意以下几个方面:
1.尽量保证量度不包含任何实际的意义。
这一点怎样理解,例如,有时我们会将收入、成本、费用设置为不同的量度,这在以后的扩展方面会存在一定的问题。而应该将设置一个维度称为指标(其中包括这三个成员),而设置一个量度称为金额。关于这种设计的优势我会在以后的帖子中详细说明。
2.尽量将KPI和计算成员设置在Analysis Services数据库中,而不要设置在前端展现软件中,这样可以减少计算成员的设置数量,同时也易于维护。
3.在尽可能的应用脚本功能。在Analysis Services数据库中你可以使用脚本功能实现很多强大的功能,包括计算成员的设置、聚合的函数、度量的汇总和格式的设置等等。
4.创建标准的维度。每一个维度都要按照要求创建成标准的维度,例如主键必须为整型、包括排序键以及自定义汇总列等等,这样在后期扩展功能时会非常方便。
5.首先创建一个大而全的多维数据集,然后再通过透视图切分成小的多维数据集,这样可以减少存储和维护量。
更多的技巧我们以后会在多维分析专区中详细介绍。
完成Analysis Services数据库的开发之后,我们就可以根据这个数据库来生成数据仓库,请参考下一篇帖子。

suntt - 2007-8-28 9:19:00
顶!
tumu - 2007-9-5 10:08:00
1.尽量保证量度不包含任何实际的意义。
这点不太明白。这么做有什么好处?能否把数量也和收入、成本等量度放入到一个度量中。



引用:
原帖由 jinligang 于 2007-8-27 17:34:00 发表
--金立钢原创,转贴请注明出自微软BI开拓者www.windbi.com

[font=Times New Roma......
Administrator - 2007-9-5 10:23:00



引用:
原帖由 tumu 于 2007-9-5 10:08:00 发表
1.尽量保证量度不包含任何实际的意义。
这点不太明白。这么做有什么好处?能否把数量也和收入、成本等量度放入到......


度量值:金额
维度:金额类型(收入,成本,费用)

[measures].[收入金额] = ([金额类型].[收入],[measures].[金额])

...

类似的还有
度量值:用户行为次数
维度:用户行为类型(定制,退定)

[measures].[定制数] = ([measures].[用户行为次数],[用户行为类型].[定制])
tumu - 2007-9-5 11:29:00
但是,如果离开[金额类型]这个维度,在别的维度组合上观察数据时,金额的聚合值就没有任何意义?



引用:
原帖由 Administrator 于 2007-9-5 10:23:00 发表
[quote] 原帖由 tumu 于 2007-9-5 10:08:00 发表
1.尽量保证量度不包含任何实际的意义。
这点不太明白。......
Administrator - 2007-9-5 11:48:00



引用:
原帖由 tumu 于 2007-9-5 11:29:00 发表
但是,如果离开[金额类型]这个维度,在别的维度组合上观察数据时,金额的聚合值就没有任何意义?
[quote] 原帖由 Administrator 于 2007-9-5 10:23:00 发表
[quote] 原帖由 tumu 于 2007-9-5 10:08:......


1.将这个度量值与维度的成员简单地结合使用;
2.将这个度量值与维度结合使用,生成新的业务概念,
比如在计算每天的纯收入时,
[measures].[纯收入] =
([measures].[金额],[金额类型].[收入]) - ([measures].[金额],[金额类型].[成本]) - ([measures].[金额],[金额类型].[费用])
或者直接在[金额类型]维度里做一个[纯收益]的计算成员.

不少时候不照此做的话,不能直观并简易地扩展业务模型.

3.有些时候原始的度量值也有意义,
不如上面提到的[measures].[用户行为次数],
就能在一定程度表征用户对该产品的关注程度,而不管他是正面关注还是负面关注

在上一篇帖子中,介绍了如何构建多维数据集及创建过程中的注意事项,在完成多维数据集的创建之后,我们需要根据多维数据集生成数据仓库,具体创建的方法请参考我的另一个帖子----创建OLAP系统新方法。可能这种方法很少有人使用过,但却是创建OLAP系统最快的一种方法。
在生成数据仓库之后,我们需要在数据仓库中填充测试数据,来实现对多维数据集的测试。
测试数据的生成我想每个人都有各自的方法,我个人比较喜欢利用现有的一些数据,而不会使用程序生成数据,因为我觉得这样的数据不具有规律性,有时候更容易发现一些问题。
在填充测试数据之后,我们就可以处理已经创建的多维数据集,并且对多维数据集进行验证。
多维数据集的验证是一个痛苦的过程,因为你需要尽可能的考虑到客户的需求,这时候考虑得越详细,日后的工作量就会越少,如果这时只是简单的测试一下,那么日后引发的修改量将会非常大。
在验证的过程中,同时要考虑到OLAP查询和报表的需求,因为这两种展现形式对多维数据集的结构要求是有一定区别的



老师在此说的,一语道破olap成功的关键,值得每个用户仔细思考。我在此引用金老师在msdn讲座中的对olap的三个主要功能:报表、钻取、挖掘的精辟解释与大家分享。1、报表:反映目前的状况(企业是否存在问题)。2、钻取:能帮助我们追踪问题产生的原因;3、挖掘:可以预测未来或未知的规律。 我理解金老师强调的是olap发挥它巨大作用是在钻取和挖掘方面,而前几年国内很多银行上数据仓库,投资巨大仅仅实现了报表功能,我认为根本原因正如金老师所说的,业务部门对它的认识不到位。


据Gartner的定义,业务流程管理包括管理和IT两个层面的技术,管理层面主要解决业务流程的分析策略以及业务流程的设计、监控和仿真优化等问题,典型代表是IDS Scheer公司的ARIS软件;而IT层面,则涵盖了业务流程执行和集成,包括中间件、EAI、工作流管理等相关技术,典型代表是IBM的WebSphere、BEA的WebLogic、Ultimus的BPM组件和Webmethods的EAI系统等。在IT层面,BPM市场的供应商从以下四个不同方面提供解决方案:

◆ 业务流程模块化和分析——集中在获得业务流程详细信息和变化对流程的潜在影响;

◆ 工作流自动化——集中在自动化以人为中心的流程上;

◆ 企业程序集成——集中在不同系统之间的信息交换;

◆ 业务活动监控——集中在分析业务流程和活动的效率及效力。

一个完整的BPM解决方案必须提供所有这些方面的能力。但目前来说,只有少数几家供应商可以提供完整的BPM解决方案,大多数的厂商侧重于某一个方面,因此也就有了各自强调与专注的重点,这也就造成了很多企业在应用了BPM软件以后,却产生了各种BPM系统的集成问题。

Analysis Services uses an "attribute-based" model, meaning that all the columns in the underlying data source can be made available for analysis if required, instead of having to go back to the relational data for detail data.


http://blog.vsharing.com/sibin/

Thursday, January 03, 2008

统计显著(p value)是什么

http://www.statsoft.com/textbook/esc.html

p值越低,我们对某个变量间关系的样本观测值出错的可能性就越小

看spss的简单解释:

提出原假设和备择假设,H0和H1
2、确定适当的检验H0的统计量
3、规定显著性水平α
4、计算检验统计量的值
5、根据这个实现值计算p值
6、作出统计决策
(如果p值小于或等于a,就拒绝零假设,这时犯错误的概
率最多为a;如果p值大于a,就不拒绝零假设,因为证
据不足)

The higher the p-value, the less we can believe that the observed relation between variables in the sample is a reliable indicator of the relation between the respective variables in the population. Specifically, the p-value represents the probability of error that is involved in accepting our observed result as valid, that is, as "representative of the population." For example, a p-value of .05 (i.e.,1/20) indicates that there is a 5% probability that the relation between the variables found in our sample is a "fluke." In other words, assuming that in the population there was no relation between those variables whatsoever, and we were repeating experiments like ours one after another, we could expect that approximately in every 20 replications of the experiment there would be one in which the relation between the variables in question would be equal or stronger than in ours

题外话:观察100个随机变量(45对correlation关系),也有机会发现2个“相关关系“的显著度p<0.05

小关系只能在大量样本中才可能被证实显著

Consider the following additional illustration. If a coin is slightly asymmetrical, and when tossed is somewhat more likely to produce heads than tails (e.g., 60% vs. 40%), then ten tosses would not be sufficient to convince anyone that the coin is asymmetrical, even if the outcome obtained (six heads and four tails) was perfectly representative of the bias of the coin. However, is it so that 10 tosses is not enough to prove anything? No, if the effect in question were large enough, then ten tosses could be quite enough. For instance, imagine now that the coin is so asymmetrical that no matter how you toss it, the outcome will be heads. If you tossed such a coin ten times and each toss produced heads, most people would consider it sufficient evidence that something is "wrong" with the coin. In other words, it would be considered convincing evidence that in the theoretical population of an infinite number of tosses of this coin there would be more heads than tails. Thus, if a relation is large, then it can be found to be significant even in a small sample.

what time does Windows like


A boring test:

The graphic interface (Time and Date in Control Panel): it only accept input within 1981 and 2080, but can display 8907

cmd.exe dos window: accept input after 1981 and before 8906 (inclusive), but can continue running to 8907.

so you need to wait another 1093 years to see how windows cope with year 9999+1!

Tuesday, January 01, 2008

一百万美元等你来挖

http://www.netflixprize.com//community/viewtopic.php?id=147

该公司出100万美元,悬赏能突破cinematch电影推荐算法,或5万美元的年度进步奖

有人推理出是因为 choicestream(如今该公司用的程序)的授权费每年超过100万美元 :P

以下是几个有趣的技术讨论
>

Because MySQL is basically a file-system and not a true database, it is faster

Like MySQL and PostGres it's free. Except Oracle XE is crippled in that it will only allow databases up to 4GB, will only use 1GB of RAM, and will only use 1 processor (if you have more than one). If your application fits within those limits then it *might* be faster than MySQL, but probably only if you're using it in a transactional sense. MySQK with MyISAM tables should be very, very fast. Especially if you have a machine with specs that exceed the limitations placed on Oracle XE

Labels:

好书读后:People skills

有效交流技巧 People skills by Robert Bolton

1.确认他人想表达的内容(包括弦外之音) reflective

2.不要试图猜测想法,永远不说“我知道你的感受”

3.当自己空间受到侵犯时,要利用有效的三段论,就事论事地向对方表达,对方基本都能认识到并且改进
(多数情况下,既不submissive压抑自己,也不agreesive,而是assert)

When you [did some facts], I feel [bad feeling] because [it has some tangible consequences]

4.不能因为这种侵犯很小,而压抑自己感情,或侧重说更大的后果(比如对方借了工具没还,你却强调后果是你感到受轻视了,而不是耽误了你使用)。前者会损害关系,后者则无效且牵强。
说出来是对关系的坦诚和修复,否则压抑了自己的感情,会造成更大的损害。

表达负面关系,苦水吐完之后,人也自然会交流正面的内容

assert你请求之后,沉默,给对方开口时间

assertation之后,对方多数会反击或反问以避开满足要求。这时务必只用reflective listening skill,不要回答对方任何问题或沉不住气把自己拖向争论,而非要求对方的solution

例:女儿:你是姑娘时每次都洗碗么?
母:You double that I lived up to the standard I expect of you

5. 简单地回应诉苦中的对方,让他知道你在听

6. 注意road-blocker

7. 如何用door opener来开启谈话(当对方有某种感情表现)

身体语言描述+do you want to talk about it

you look like not feeling right. you know you can talk to me if you want

Labels:

支持紫薇

作了很多有价值新闻报导,敢于在强权下尽量说话,有理有节的奇女子



包子

海尔

联通

本次无能的央视的小丑闻,bbc和cnn等都不屑于任何报道,只有小报如每日电传telegraph做了报道。这确实是家事,老外没什么可关心的,可是中国人自己要不要关注,要不要抗争,这是我们自己的问题。


〉〉〉社会的确有阴暗的一面 我们都有责任去与这些黑暗的事情作斗争 但奥运盛典是值得我们全民骄傲的事情 如果所有人都像胡这样 那我们中国在世界上将以什么立足 口口声声是揭露黑暗事实 可又没有想到对社会将使更不好的导向 ,,,说真话谁不会说 但要有技巧的说 莽撞行事 不会有什么好的结果
假如人人都将中国08年的奥运从心底视为群民骄傲的事情 根本就不会有这样的事发生
自家破鞋捅上电视----超级泼妇
国家阴暗面,大家都心知肚明就她敢上电视台说-----超级愤青

泼妇+愤青有什么可崇拜的

智者应该很快的适应游戏规则并玩弄与股长之中,亏她这么高学历,把事情处理到鱼死网破

你们骂我,但这是不是事实


作者: 无法受伤 2007-12-31 03:52   回复此发言

--------------------------------------------------------------------------------

6 回复:事情是这样的,别骂紫薇了
这是紫薇反抗的重点。
支持紫薇。
自马教在中国横行,中国就成了一个谎言遍地的可怕国度。
我们不要让我们的国家沉沦!!!


胡根本不是因为包子事件被扯下来的,是海尔事件。对于这次的事情只能说是风水轮流转,原来种的因今天得的果。既然清楚自己是怎么得到这个男人的,就不该为别人以类似手法得到这个男人而如此介怀