摘要:
介绍 之前在去哪儿做数据RD,今年来到美团做数据RD,碰巧都是门票方向(现在去哪儿叫度假,美团叫境内),下面都是基于这两个部门的对比 相同点 都有独立的数据团队,老大都重视数据,主要开发语言都是SQL,都用jira管理任务 不同点 一、团队人数 去哪儿数据RD3-5个人,美团数据RD10-13人。去 阅读全文
摘要:
简介 一转眼在去哪儿网玩乐事业部工作快4年了,经历了数据团队的组建和发展,回顾一下整体过程,经历了很多坎坷,普通而不简单。下面是大事记 2014年(系统搭建):开发报表平台、接入HADOOP、搭建调度系统 2015年(数据集市):搭建数据集市、开发数据同步工具 2016年(数据应用):系统定价、多维 阅读全文
摘要:
Kimball建模方法的精髓,就是简单、使用,建模这四步骤是它的核心部分。用术语表达是:始终一致的四步设计维度模型,分别如下: 一、选择业务过程 业务过程是由组织完成的一系列微观活动,例如:完成下单、完成支付、发放代金券、上线产品等等。充分理解它们,有助于辨别组织中的不同业务过程,它一般具有这些特性 阅读全文
摘要:
事实表分成三种:事务事实表、周期快照事实表、累计快照事实表 事务事实表 官方定义是:发生在某个时间点上的一个事件。比如以订单为例:下单是一个事实、付款是一个事实、退款是一个事实,所有事实的累计就是事务事实表 周期快照事实表 如果需要对某一天或者某个月的数据进行分析,那么可以使用周期快照事实表,比如: 阅读全文
摘要:
最近打算阅读一下数据仓库相关的书籍,百度了一下,有两本必读书《数据仓库工具箱》和《数据仓库》。简单介绍一下,《数据仓库》这本书更像是一本教材,里面的内容很经典;《数据仓库工具箱》看书名是一本单纯的工具书,其实里面都是实战。两本书各有千秋,我决定主要阅读《数据仓库工具箱》,今天分享第一章的内容,以后会 阅读全文
摘要:
维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”。总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact)。 阅读全文
摘要:
一、简介 1.1 历史 搞数据仓库这么久,实践中发现首先搭建数据集市,还是清洗数据之后,直接进入数据立方体(形成维度表和实施表)形成核心数据仓库层,是个选择题... 随后发现这其实涉及到了数据仓库的历史问题,是采用Inmon建模还是采用Kimball建模?甚至有人称之为数据仓库界的宗教之争。下面我说 阅读全文
摘要:
python如何链接hadoop,并且使用hadoop的资源,这篇文章介绍了一个简单的案例! 一、python的map/reduce代码 首先认为大家已经对haoop已经有了很多的了解,那么需要建立mapper和reducer,分别代码如下: 1、mapper.py 2、reducer.py 建立了 阅读全文
摘要:
postgresql不支持last_insert_id()方法,恶心到啦; 不过还好它有其他的解决方案: 创建一个测试数据表: 一、先过去不重复的主键id,然后再插入 获取他的Sequence,select nextval('test.test18_id_seq'),然后再插入即可! 二、返回主键i 阅读全文
摘要:
今天遇到一个问题,当使用idea启动一个tomat服务的时候,报错:不能连接本地1099端口。 刚开始还以为端口被占用,换了2099依然报错 后来在网上搜索,据说是hostname被修改了,在命令行输入hostname命令,果然主机名是:bogon 担心时中毒了,后来想想自己时mac本,中毒好难啊, 阅读全文
摘要:
一、环境介绍: elasticsearch:2.3.1 hive:0.12 二、环境搭建 2.1 首先获取elasticsearc-hadoop的jar包 链接地址:http://jcenter.bintray.com/org/elasticsearch/elasticsearch-hadoop/2 阅读全文
摘要:
saiku比较吃内存,一旦人多了,那么内存可能不够,所以会考虑主从结构,分担压力。为了保证数据的稳定性,也会有类似的考虑,那么问题来了,如何实现saiku的分布式搭建哪? 我阅读了一些国内的文章,没有发现类似的经验,自己摸索了一个方案,简单粗暴,可是能用,大家参考! 首先saiku使用的jackra 阅读全文
摘要:
一、介绍 使用saiku的人一定对他的元数据存储都特别感兴趣,特别是有分布式管理需求的项目,更是迫切需要了解。其实它是使用Apache的开源项目Jackrabbit管理文件的! 二、代码跟踪 我也是使用了一段时间,希望深入了解它的元数据存储,下面是代码跟踪: 2.1 ajax 首先还是从ajax入手 阅读全文
摘要:
使用saiku的人,肯定都有这么一个经历,查询了一次多维分析数据表,第二次之后就特别快,因为它缓存了结果,可问题是过了一天,甚至几天,来源数据早都更换了,可还是这个缓存结果。问题来了,缓存不失效! 那么如何解决这个问题呐?我总结了两个办法: 一、不使用缓存 这个方案修改起来特别简单:修改mandri 阅读全文
摘要:
使用了很久的saiku,决定跟踪一下代码,看看它的执行核心过程: 一、入口controller代码 1.1、页面打开之后,会发送一个ajax请求 Request URL: http://l-tdata2.tkt.cn6.qunar.com:8080/saiku/rest/saiku/api/quer 阅读全文
摘要:
经历了前两轮优化之后,saiku由不可使用,优化到可以使用,不过在分析大量日志数据的时候,还有顿卡的感觉!继续观察背后执行的Sql,决定将注意力关注到索引上面! 日志的主要使用场景是:固定日期维度的数据分析,也就是说where条件一定跟着日期等于某一天,那么纠结的是:每个字段都建立索引,还是和日期建 阅读全文
摘要:
昨天使用hadoop跑五一的数据,发现报错: 发现是内存溢出了,遇到这种问题首先要判断是map阶段溢出还是reduce阶段溢出,然后分别设置其内存的大小,比如: 因为默认值都是:1024M,也就是一个G,如果不够就会溢出! 阅读全文
摘要:
上一篇文章介绍了添加filter可以加快查询速度。下面继续分析: 下面这个MDX语句: 查看数据查询语句,本琢磨这应该很快,执行一个sql即可 结果发现在这之前,还需要执行这条语句,且执行时间最长: 意淫原因应该是saiku对执行的结果进行format,所以才执行这条语句,而这个字段应该是维度表,所 阅读全文
摘要:
使用saiku的过程中发现一个重要问题,速度慢!下面是跟踪和优化过程 一、首先抓包,发现ajax请求:http://l-tdata2.tkt.cn6.qunar.com:8080/saiku/rest/saiku/api/query/execute 里面的参数不少,下面是截屏 二、看日志:发现了md 阅读全文
摘要:
最近使用saiku,重新编译升级之后维护困难,下面讲解一下简单的办法: 1、备份saiku-server下面的data文件夹 2、备份saiku-server下面的repository文件夹 3、升级之后,回复这个文件夹即可 参考:http://wiki.meteorite.bi/display/S 阅读全文
摘要:
经历了上几篇博客的分享,可以无密码登录 : http://www.cnblogs.com/liqiu/p/5246015.html 随着使用的深入,公司需要将现有的报表平台与saiku整合,其中最便捷的方法是嵌入iframe页面。那么就要求saiku的多维报表可以在单独页面直接打开(不含有上面的各种 阅读全文
摘要:
公司想要使用saiku,希望没有密码直接可以使用,这样可以直接以iframe的形式嵌套到其他的系统中。 在网上搜索了很多,大致类似这篇博客介绍的:http://www.cnblogs.com/avivaye/p/4877948.html 可是效果不能达到预期,没有办法只能修改代码重新编译。 先上结果 阅读全文
摘要:
saiku版本:3.7.4 下面是修改步骤,如果觉得麻烦,可以直接下载源代码:https://github.com/lihehuo/saiku 1、关闭自动执行 修改文件:saiku-ui/js/saiku/Settings.js,下面是git代码对比 ERROR_TOLERANCE: 3, QUE 阅读全文
摘要:
以前的文章介绍了如何直接安装saiku,http://www.cnblogs.com/liqiu/p/5183894.html 。这里面偷懒没有源代码编译,不过这几天也就这么用了。 最近随着使用的深入,不仅仅修改修改页面那么简单,所以需要源代码编译!下面介绍一下编译过程: 一、下载:首先github 阅读全文
摘要:
1、简介 前几篇博客已经介绍了saiku、mondrian、MDX和模式文件他们之间的关系,那么如何将它们串联起来,供产品人员使用哪?下面咱们一步一步的实现 2、建立数据表 建表语句参考:http://www.cnblogs.com/liqiu/p/5202708.html 模式图如下: 这是一个典 阅读全文
摘要:
1、前言 前面几篇文章一经介绍过saiku、模式文件和MDX的关系。通俗点说模式文件(Schema)就是一个xml,里面定义了一个虚拟立方体,共MDX查询语言使用。 2、模式文件 Schema 最顶层 Cube 立方体,以事实表为中心,围绕若干维度表 Table 事实表 Dimension 维度 H 阅读全文
摘要:
以前介绍了几个基本工具:saiku 和 Schema Workbench,算是入门级别的了解多维报表,如果要继续深入,需要深入了解如下几个概念: 1、OLAP 联机分析处理,和他对应的是OLTP(联机事务处理)。 OLTP:做为一个开发人员,OLTP是最常用的,甚至都不需要理解这个概念!比如各种门票 阅读全文
摘要:
一、前言 安装了saiku之后,每次修改schema文件,非常耗时,每次都要经历若干步骤:修改xml、上传、重启才能生效,并且非常不利于学习和理解MDX和模式文件,踌躇之际,发现了这个工具,十分小巧方便!saiku安装过程可参考上一篇博客:http://www.cnblogs.com/liqiu/p 阅读全文
摘要:
1、设置tomcat,如图: 2、添加war包 3、修改pom.xml 删除可能的选项,如果有下面的代码,删除掉 4、选择使用的resources目录 5、启动即可 阅读全文
摘要:
公司希望也开发一套多维分析系统,以解决运营/产品无休止的需求和技术人力不足的矛盾! 一、开发选型: 一、BIRT:易用性差,所以没再使用 二、JasperReport+ireport:文档收费,不支持ETL工具 三、Pentaho:在中国比较普及,文档多,报表是其中的一部分,比如数据同步和ETL也都 阅读全文
摘要:
首先输入命令:vi .bash_profile ,添加如下内容: # Mac默认 JDK 6(Mac默认自带了一个jdk6版本) export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6` # 设置 JDK 7 export JAVA_7_HOME=`/us 阅读全文
摘要:
公司分派了一个活,预测景区未来的一段时间销量,目的... 一听说做预测,很兴奋,当时真的没有太考虑目的!老大也很高兴,说让我做一个景区未来每天的销量数据,供其他项目无限使用! 第一步、站在巨人的肩膀上 对自己说:“第一次做预测,先向外看看成熟的经验,不要瞎琢磨” 推荐下面的技术参考: 美团的技术博客 阅读全文
摘要:
我在公司的数据部门工作,每天的订单类数据处理流程大致如下:删除分析数据库的历史订单数据全量更新订单数据到分析数据库。(由于订单核心数据不大,所以经受得起这么折腾)将数据简单清洗,并生成数据集市层分析处理,产出报表。当然还有其他的数据也是这么处理的(比如产品的数据、景区的数据、票种的数据、供应商的数据... 阅读全文
摘要:
列转行上一篇博客已经介绍过了。 下面介绍一下行转列的实现 假设我们有一个数据表: 显示如下: 那么我们想要将它转化为一列列的如下结果输出: 那么如何做到哪? 方法一、简单可读性强: 方法二、快速 这是pg的专有方法 select * from tmp.dim_values_20170821 limi 阅读全文
摘要:
今天被问到列转行的问题,竟然没有回答上来,回想自己也是数据开发人员,平时的积累真是不到位,下面总结一下列转行。假设咱们有一个学生得分数据表:student_scoreCREATE TABLE student_scores( user_name character varying(30) NOT N... 阅读全文
摘要:
简单方法:处理过程分为三个步骤:1、从数据库查询一条状态为为用的记录(不同的数据库写法会不一样)select*fromtable1wherestate='未用'limit12、将数据状态更新为已用,如果更新成功(影响记录数为1表示成功)则表示获取数据成功,否则这条数据已经被其他服务器或线程所抢用。u... 阅读全文
摘要:
前言:最近做数据同步,需要从PostgreSql获取数据,发现一旦数据比较多,那么读取的速度非常慢,并且内存占用特别多&GC不掉。代码样例:为了方便讲解,下面写了事例代码,从b2c_order获取数据,这个数据表6G左右。package com.synchro;import java.sql.*;/... 阅读全文
摘要:
简介很久之前就想写这篇文章了,主要是介绍一下我做数据同步的过程中遇到的一些有意思的内容,和提升效率的过程。当前在数据处理的过程中,数据同步如同血液一般充满全过程,如图:数据同步开源产品对比:DataX,是淘宝的开源项目,可惜不支持PostgresqlSqoop,Apache开源项目,同步过程中字段需... 阅读全文
摘要:
前言:最近发现hivesql的执行速度特别慢,前面我们已经说明了left和union的优化,下面咱们分析一下增加或者减少reduce的数量来提升hsql的速度。参考:http://www.cnblogs.com/liqiu/p/4873238.html分析:select s.id,o.order_i... 阅读全文
摘要:
相信在Etl的过程中不可避免的实用union all来拼装数据,那么这就涉及到是否并行处理的问题了。在hive中是否适用并行map,可以通过参数来设定:set hive.exec.parallel=true; 那么还是实用上一篇博客的数据,链接:http://www.cnblogs.com/liqi... 阅读全文