帮
算 产品 X (产品为 给 手机下的免费软件 供用户 使用 ) 下的 -
月份、内容名称、所属栏目名称、资费、PV、访问UV、下载UV 吧 一个 产品集中分析开始了 :
我: 日志能支撑此次的数据
月份、内容名称、所属栏目名称、UV 、PV 、 下载PV
( 日志应为产品特殊原因,下载日志中没有 对于用户ID ) x兄 : 行吧 ,先出 再看看
....... 脚本编写 运行 中 (脚本-1) ............
我 : 数据出来了 , 5 ,6,7 月份的数据出来了 ,一个大大的长尾
x兄 : 哦 看看先 ...
我 : 感觉 这几个月 排行靠前的 这些产品 在这几个月 变化不大 。感觉用户 至少我们接触到的用户他们的 兴趣爱好比较稳定 .
x兄 : 来个 月份 用户登入数吧 ,对比 产品内容数 看 .
在 统计平台上 每天用户数相加 会
虚高 ( 解释: 如果1号 来了 10 个用户 ,2号 来 5个但 这几人1号也来过 ,算 1-2号 有多少人 10+5 那就
虚高 ,当然这也是 有解决办法 在数据库里)
....... 脚本编写 运行 中 (脚本-2) ............
我 : 吃饭去了
(脚本-1)
find . -type f -name "*2010-07-*" -exec cat {} \;|perl -nle '
chomp;
my $m = {};
# 由于日志 是 key=val<|>key=val<|>....
# 日志切割 到 map 里
map{ $m{$1}=$2 if /(.*)=(.*)/ } split /<\|>/ ;
next if not ($m{aop} eq "be" or $m{aop} eq "d") ;
$h{$m{bn}} { $m{pn} }{ be }{ $m{auid} } ++ ;
$h{$m{bn}} { $m{pn} }{ d }{ $m{auid} } ++ ;
END{
use List::Util qw(sum);
foreach $bn (keys %h ){
foreach $pn (keys %{$h{$bn}} ){
my $f_uv = scalar keys %{$h{$bn}{$pn}{be}};
my $f_pv = sum values %{$h{$bn}{$pn}{be}};
my $d_uv = scalar keys %{$h{$bn}{$pn}{d}};
print "$bn\t$pn\t$f_uv\t$f_pv\t$d_uv";
}
}
} ' > /tmp/2010-07.100040.txt
|
(脚本-2)
find ./login ./test_login -type f -exec cat {} \; |perl -nle '
$h{$1}{$2}++ if /at=(\d{4}-\d{2}).*?adid=(.*?)<.*/;
END{
use List::Util qw(sum);
foreach my $bn (keys %h ){
my %be = %{ $h{$bn} } ;
my $f_uv = scalar keys %be;
my $f_pv = sum(values %be);
print "$bn\t$f_uv\t$f_pv";
}
}
'
|
阅读(606) | 评论(0) | 转发(0) |