这个文章是直接介绍几个实用的ga过滤设置,除了这个文章之外,如有更多时间,近期还想出另一篇文章会跟大家聊一聊ga的高级过滤功能(custom filter中的advanced filter),这个相对更加复杂一些。所以,这篇文章是初级篇,下一篇文章是高级篇。
google analytics的过滤功能简介
google analytics的过滤设置其实包含两大逻辑功能,第一种功能是我们通常意义上的过滤,即根据一定条件过滤掉一部分访问者(本质上是过滤掉一部分流量),例如过滤掉所有来自北京的访问者的流量,或是只保留网站某个子域(subdomain)的流量。 第二种功能则不是简简单单的过滤,而是类似于我们使用ms office word的“查找并替换”功能(实际上比这个功能更强大,因为实际上包括查找、替换和重组三种功能),即按照一定的条件把ga中的一部分属性的表述替换或再组合为另外一种表述。例如,把campaign报告中campaign的英文名字替换为汉语名字。
这样看来,我们可以发现google analytics的主要功能是:
1. 去除掉我们不想要的一部分流量;
2. 修改一种表述方法为另外一种,或者实现标准报告中无法实现的表述。
不过,其实还有第3、4种功能
3. 因为ga是可以不断复制的profile的,ga的filter和profile的配合可以实现分析需要的细分功能。不过这个功能在ga的advanced segments出现之后就弱化了。
4. 我们还可以利用多个filter进行组合而实现类似“解释编程”的高级功能。这种filter的组合再加上正则表达式的共同作用,能够实现一些更复杂的过滤或者更精确的属性表述。例如,我们知道se(搜索引擎)都是提供universal search(就是除了文本搜索,还提供图片、视频等)的,但我们在ga中看到的流量可能都是来自google / organic,我们如何区分流量是来自文本搜索还是图片或是视频搜索呢?这个实际上通过filter的组合能够实现(不过这个很高深了,放在以后说)。
今天要谈的这五个google analytics的过滤设置非常非常基础,不熟练正则表达式也完全没问题,只要照葫芦画瓢就行了。由于几乎是我们每个使用ga的分析师都要用到的,建议把它们牢记在心。:)
安全通告:在开始下面的尝试前,请注意!
请一定复制一个新的profile进行尝试!
原因在于,filter和advanced segmentation不同,前者是在形成报告之前的过滤,因此过滤掉的数据肯定是不可能在该profile中出现了,而advanced segmentation是在形成报告之后再进行的操作,数据不会因为你的不恰当设置而丢失。所以,切记切记!否则sidney就是害了大家。
如何复制profile,见下图所示:
图1
直接在同一个ga id(例如我的ga id是ua-4130899-1)后面点击“+ add new profile”,然后在下图(图2)中输入你想要的profile的名字,然后点击continue之后保存就行了。
图2
是不是很简单?搞定了之后,你就在刚才复制的profile下“胡作非为”吧!你以前的数据不会有任何问题了!现在,让我们开始吧!
设置一:过滤掉自己对网站的访问
你的网站最忠实的访问者是你自己,毫无疑问。但是你自己的访问数据也会混在其他用户的访问数据中,从而一定程度(程度大小取决于你网站的流量,如果你的网站流量跟新浪相差无几,那么这个小节可以直接无视)上污染了网站真实用户的访问数据。
防止这种情况的最简单的办法是通过屏蔽某些ip地址来过滤掉自己的访问,这种设置在ga中非常容易。方法如下:
1. 点击你刚刚复制好的那个profile旁边的edit按钮。
图3
2. 进入profile settings页面后点击“+ add filter”。
图4
3. 在create new filter中用如下设置,然后输入想取的filter的名字和自己的ip地址就好了。最后别忘了保存。
图5
请注意,这里我们使用的是predefined filter,也就是ga已经预制好的几类filter,主要就是解决这种类似的小问题。在这种filter中,不支持使用正则表达式。因此,ga自己的介绍:https://www.google.com/support/googleanalytics/bin/answer.py?answer=55496,其实是不正确的,因为其中应用了正则表达式。
你问我,如果是动态ip怎么办?那么你可以用自定义filter(custom filter)选取一个ip地址范围进行过滤,这个时候要用到custom filter(自定义过滤)。例如,我想要过滤掉从121.33.33.33到121.33.38.254的ip段范围,那么我的设置如下:
图6
这里,我们在filter pattern中用到了正则表达式:^121\.33\.(33\.(3[3-9]|[4-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|((3[4-7])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])))|38\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-4])))$。哈哈,可怕吧!别担心,其实你访问这个地址,就能自动生成你ip段的正则表达式了:https://www.google.com/support/googleanalytics/bin/answer.py?answer=55572&hl=en_us&utm_id=ad。google自己的这个工具很好用。
不过,这种方法可能会误伤其他合理的访问数据,所以如果要精确地去除掉你每天毫无规律变动的ip地址,那么仅靠过滤功能本身就有点儿力不从心了。我们需要利用控制cookie和filter的结合来实现,可以在这里找到一些线索:,这里不多说了。
设置二:改变content报告中top content报告uri的大小写
看看下面这个报告的情况是不是大家经常遇到?
图7
其实四个url只代表着两个页面,但是由于ga是大小写敏感(lowercase sensitive)的,因此它会认为这是不同的url,代表着不同的页面。
这可不太妙,对于page view这样的度量,我们还可以直接加总,而要把该页面的bounce rate或者avg. time on page合并起来,就有点儿麻烦了(当然其实也还是有办法,这里按下不表,大家自己研究一下就能弄通)。所以,我们要想办法让ga识别这种情况。
利用filter就能轻松解决,非常简单。filter的设置方法如下所示:
图8
请注意几点:
1. 这里利用了自定义filter(Custom filter)。
2. 选择Lowercase是全部变成小写,也就是所有的content报告中的页面URI都会变成小写,而同一个页面URI以前是大写的,就自动和小写URI的合并在一起了,这样就不会被GA记成两个不同页面了。如果你想全部变成大写,用Uppercase。
3. Filter Field是我们要施加过滤功能的某一个GA属性(dimension),Request URI指被用户访问(即用户请求)的页面的URI。URI是什么?简单理解URI是URL去掉域名后剩下的(相对路径)。除了Request URI,Filter Field还可以选取很多其他的属性,点击这里看全部属性的解释。
设置三:把Content报告中页面的URI变成页面实际的Title
GA和Omniture不同,GA中显示的网站页面名字是固定好的,就是这个页面的Request URI。而Omniture则完全可以自己定义页面的名称和目录结构。那么,如果GA不能自己定义页面名称,那么至少能够想想办法让页面名称自己显示出来吧!
没错!用Filter就可以实现,具体的设置如下图9。
图9
大家可以看到,我们现在使用了自定义过滤中的高级过滤(Advanced),现在我稍微解释一下我们这么设置的意义,因为相信有些符号大家会有点儿奇怪。
1. Field A –> Extract A和Field B –> Extract B是两个数据段,这两个并不是运算的关系,而是并列的关系。由于有两个数据段,因此我们可以合并两种不同的GA属性。这两个数据段相当于“input”,即输入数据部分。
2. Output To –> Constructor是输出部分,我们可以把A、B数据段中的数据按照一定方式修改,然后合并,在这个地方进行输出。
3. A、B数据段都是支持正则表达式输入的,上图中的(.*)就是正则表达式,表示所有的字符。具体正则表达式的解释请见这里(需要翻墙)。正则表达式最好了解一个原理,不过精通?恩,感觉不容易,反正我害怕这东西。
4. Output To这个数据段不支持正则表达式,因此你看到的“$A1”其实不是正则表达式。
5. $A1的意思是,Field A –> Extract A中的第一个变量。上图只有一个变量,那就只能是$A1。如果有两个,你要在Output To中显示第二个,那就是$A2,以此类推。同理,如果你看到$B4,你就知道是Field B中的第四个变量——说实话我还没见过这么变态的用到4个变量的filter。
6. 整个设置的意思是说,在A字段中,我们选择Page Title属性,并且把页面Page Title的所有字符(用(.*)实现),全部取出来。然后再把取出的这些字符(因为是A字段的第一个也是唯一一个变量)在Request URI中输出出来。就这么简单。
看看有什么效果?见对比图:
图10:【之前】
图11:【之后】
你会说,我们不是有Content by Title报告吗?是的,不过这个报告数据不知为何不准确,而用上面的方法,数据就是Top Content报告的数据,不会在数据上再困扰我们了。
设置四:在Content报告中显示页面完整的URL而不是URI
有时候,我们希望在我们的content报告中显示的不是页面的URI(如上图10所示),而是页面完整的URL,我们同样可以用Filter实现。
不过请注意,由于都是修改页面的URI表示,因此设置三和设置四放在一个profile中只有一个(后设置的那个)会起效果。大家在做实验的时候注意把这两个设置分别放在不同的profile中。
设置如下图12所示:
图12
有了设置三的铺垫,再看这个设置就很简单了。Field A是取出网站的host name的每一个字符,我的网站host name是www.chinawebanalytics.cn/。Field B是取出页面Request URI的每一个字符。Output To则是把A和B按照“host name”/ “Request URI”的方式进行输出。请注意,为了表明content报告的改变是我们的filter设置的结果,我有意在这里多写了一个“/”,实际上你在输出框内应该写“$A1$B1”。效果见下图13。
图13 ,现在大家可以看到我们多了一个“/”是我当时设定在输出框中的
设置五:只监测网站的某个子域或者某个具体目录的流量
有时候,我们想把网站的某一个部分单独拿出来进行分析,例如想要分析music.chinawebanalytics.cn(当然,这只是一个假设的域名)单独的表现,我们利用Advanced Segmentation或者其他方法都比较麻烦,这个时候我们可以复制一个profile,然后在这个profile中用过滤功能把我们想要的部分单独拆分出来。
同样非常简单的设置,如图14所示。
图14
同样的方法,在Include only的选项中选择traffic to the subdirectories,可以实现只保留某一个网站目录的流量。
Bonus:过滤掉不属于网站的被误记的流量
最后,给大家一个Bonus。
不知道你的网站出没出现这样的情况,你的Google Analytics的ID,被别人拿去放到他的网站中间去了!这真是让人苦笑不得的问题。但实际上,我还真就遇到了。大家访问这个网址:http://cfma.jimdo.com/,看看是不是页面上有跟我博客http://www.chinawebanalytics.cn/一样的GA ID!
因为这个网站经常好几天没有任何流量,因此一段时间后我才发现这个问题。
这个问题完全可以通过GA Filter来解决,我们排除掉访问这个域的流量即可,设置如图15。
图15
请注意,由于用的是预置过滤,因此不支持正则表达式。
好了,如果大家对Filter的一些功能有了感觉,这么长文章的辛苦也就不白费了。现在是大家的时间了,请大家留言,或者提出自己的问题,非常欢迎!