Chinaunix首页 | 论坛 | 博客
  • 博客访问: 629582
  • 博文数量: 149
  • 博客积分: 3901
  • 博客等级: 中校
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-16 14:33
文章分类

全部博文(149)

文章存档

2014年(2)

2013年(10)

2012年(32)

2011年(21)

2010年(84)

分类:

2010-08-05 11:56:34


算 产品 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";
    }
  
 }
'


阅读(571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~