Upload
lanlancamp
View
390
Download
6
Embed Size (px)
DESCRIPTION
用JavaScript写数据分析任务
Citation preview
季札黄金矿工
用户行为数据是⼀一座金矿!
但是我们没有趁手的挖掘工具...
问题
• UED 访问数据的成本太高
• 自己分析?
• 需要解决数据采集、存储以及分析的⼀一系列问题
• 需要掌握专门的工具或编程语言
• 找专门的数据团队?
• 人手、资源有限,大部分需求不能得到满足
• 自定程度较低
数据流程(传统)
����
��
����� ���� � ��
� � ���
为什么不使用 JavaScript 来分析日志数据?
数据流程(黄金矿工)
����
��
����� ���� � ��
� � ���
Google V8
������������
数据流程
�� �� ��
埋点 js 黄金矿工js job
报表页面
黄金矿工 ——使用 JavaScript 写数据分析任务!
两个重要前提
• 每⼀一条采集到的日志数据都可以用 Key / Value 的形式表示
• 如 { type: 2, x: 348, y: 982, tagname: “div”, ip: “202.38.12.45”, datetime: “2012-04-26 14:05:30”, ua: “Mozilla ....”, ...}
• 后台的数据分析步骤可以分解为⼀一些基本的常用的操作
• 如 filter、map、count、distinct、group、sum ...
• 这些基本操作可以使用另⼀一种胶水语言(JavaScript)组合起来
基本架构
� ���
$�� &%�#
����
���� ���� ���
�����'���"�����(
&%!�
打点
黄金矿工
打点 JS
• goldlog.emit(id, key_value_data);
• 实际上是对 new Image(); 的⼀一个封装
• http://www.atpanel.com/ued.1.1.2?type=9&_gm:id={id}
分析
黄金矿工
新增全局对象
• log
• datetime
• GoldMiner
log 记下指定日志信息
• log(“message”);
datetime 常用时间日期方法
• datetime.yesterday()
• datetime.today()
• datetime.now()
• datetime.daysOffset(n)
• datetime.datetime(year, month, day, hour=0, minute=0, second=0)
• ...
• 也可以使用 new Date() 代替,但 datetime 更方便
GoldMiner 与后台数据的接口
• var goldminer = new GoldMiner(“global_sample”, datetime.yesterday());
• var data = goldminer.data;
• data.filter()
• data.map()
• data.group()
• data.count()
• ...
��%�%����������)$���$�%���� &#$���$�%���� (�� ����� &#��%�� ���$�� ��$���$�%���% ��)��% � ## (��)�$%�#��)��*�# �� ����
� ��$�%�$�� ��$%*���
�������
��%������ &%!&%
�� �����
�������� ������%���)���% �����$��)���)�#�� '����)�$�%���)��'��&��
�����
������
�'�#������)������&�%����� ����� &�%����$%���%���)����%�#�� ���%� ����%��#$� ����# &!���)��%��� &�%���)��% !�� �����!���$&����)������&�%���&��"&�� &�%���)�
��%��������
������
���������%���)�
��%�$
������������
�� ���#� ����$$����
��%�%���
� ��
分析 JS
����������
���������������
����� �����
����������
���
Q & A
下集预告 / to be continued...
Thanks! :-)