归档数据就是归档过程中产生的数据,它被以记录的形式存储在数据库中。这些记录随后会被加载并转化成报表,最后呈现在用户面前。
从记录到报表
在之前的文章中说到记录与报表时是所区别的。记录被结构化、被优化,存储在数据库中。它对人类和其他软件来说是不可读的。
API方法不能简单读取这些归档数据并直接返回。它们必须被格式化以便呈现在报表中。
DataTable过滤器
报表会被存储在DataTable类对象中,这些对象可以以下形式进行操作:
- 遍历每一行并手工修改
- 使用DataTable过滤器
DataTable过滤器操作DataTable实例的方法是一致的。Piwik已经预定义了一些过滤器,这样你可以直接使用它们而无需为通常的操作写很多代码了。
有时候为了存储效率,需要对报表对应的记录进行一定程度改变。而呈现报表则需要将改变后的记录重新恢复。比如说,代表列的整型ID恢复成字符串类型,通过ReplaceColumnName过滤器即可完成。
$dataTable->filter(‘ReplaceColumnNames’);
暴露报表
报表由插件中定义的API类生成。这些类加载归档记录,将它们转换成可以呈现的报表,然后通过报表API提供服务。
报表API可以通过HTTP请求进行调用或直接通过PHP代码(如在控制器Controller方法中) 调用。