首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

数仓面试|四个在工作后才知道的SQL密技

2023-11-13 来源:画鸵萌宠网

Date类(日期类)、DateFormat类(对日期类转换为文本)、Calendar类(日历类)--常用类

类Date,表示特定的瞬间,精确到毫秒。

1000毫秒 = 1秒

日期和毫秒可以相互转换

日期-->毫秒:从1970年1月1日00:00:00到当前日期,一共经历了多少毫秒

毫秒-->日期:1天 = 24 x 60 x 60 = 86400秒 = 86400 x 1000 = 86400000毫秒

构造方法:
public Date()//生成当前系统到1970年1月1日00:00:00之间的毫秒数----生成当前系统的时间public Date(long date)//生成从1970年1月1日00:00:00,过了date参数毫秒的时间对象---生成特定时间,注意date类型为long 
常用成员方法:
public long getTime()//返回自1970年1月1日00:00:00的毫秒数
DateFormat类---对日期进行格式化

java.text public abstract class DateFormat extends Format 是日期/时间格式的子类的抽象父类

作用:格式化(即,日期→文本),解析(文本→日期)

成员方法:
public final String format(Date date)//将日期转化为字符串public Date parse(String source)//将字符串解析为日期

DateFormat类为一个抽象类,无法创建对象使用,需用到它的实现子类SimpleDateFormat

SimpleDateFormat类extends DateFormat

java.text.SimpleDateFormat extends DateFormat

构造方法:

public SimpleDateFormat(String pattern) /*使用给定的模式和默认的默认日期格式来创建SimpleDateFormat 对象 参数:pattern 传递指定的日期格式 格式:区分大小写 y 年 M 月 d 日 H 时 m 分 s 秒 对应的格式,会把格式替换成对应的日期和时间 "yyyy-MM--dd HH:mm:ss" 注意:模式中的字母不可更改,但连接符可更改 "yyyy年MM月dd日 HH时mm分ss秒" 也行 */

用父类DateFormat 中方法来讲文本和日期之间相互转化

public final String format(Date date)//将日期转化为字符串public Date parse(String source)//将字符串解析为日期
package commonclass;import java.text.FieldPosition;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class TestSimpleDateFormat01 { public static void main(String[] args) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒"); String format = simpleDateFormat.format(new Date()); System.out.println(format); Date parse = simpleDateFormat.parse("2020年08月08日17时01分53秒");//这儿的source格式必须与“yyyy年MM月dd日HH时mm分ss秒”格式相对应,否则会抛出ParseException System.out.println(parse); }}

练习:

package commonclass;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;//计算一个人出生了多少天/*思路* 1.计算当前时间的毫秒数* 2.计算出生时间的毫秒数* 3.两者相减,再/1000/60/60/24*/public class PracticeSimpleDateFormat01 { public static void main(String[] args) throws ParseException { Date date = new Date();//1.当前时间毫秒数 System.out.println(date.getTime()); //2.计算出生时间的毫秒数 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒"); Scanner scanner = new Scanner(System.in); System.out.println("请输入出生年月日,yyyy年MM月dd日HH时mm分ss秒"); String strDate = scanner.next(); Date birth = simpleDateFormat.parse(strDate); System.out.println(birth.getTime()); int days = (int) ((date.getTime() - birth.getTime())/1000/60/60/24); System.out.println("你从出生到现在共活了"+days+"天"); }}
Calendar类---日历类

java.until.Calendar类是一个抽象类,里面提供了许多操作日历字段的方法(如YEAR , MONTH , DAY_OF_MONTH , HOUR )

由于calendar类是一个抽象类,无法直接创建对象

但calendar类里面有一个静态方法,public static Calendar getInstance(),可以直接创建calendar类的子类对象。

Calendar类中常用的成员方法
public int get(int field)//返回给定的日历字段的值public void set(int field, int value)//设置特定的日历字段值public final void set(int year, int month, int date)//设置日历的年、月、日abstract public void add(int field, int amount)//加上或减去指定的时间到指定日历字段,amount可以是正负public final Date getTime()//将日历对象转换为日期对象 /*参数:field 是Calendar类中的静态成员变量 比如 public final static int YEAR = 1; public final static int MONTH = 2; public final static int DATE = 5; 等等等,有好多,可以在Calendar类中查找 */ 
package commonclass;import java.util.Calendar;import java.util.Date;public class TestCalendar01 { public static void main(String[] args) { //生成calendar对象 Calendar c = Calendar.getInstance(); //设置calendar字段 c.set(Calendar.YEAR,2000); //增加或减少calendar指定字段的值 c.add(Calendar.MONTH,-1);//西方月份0-11月,东方月份1-12月 System.out.println(c);//java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=6,WEEK_OF_YEAR=33,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=221,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=22,SECOND=45,MILLISECOND=446,ZONE_OFFSET=28800000,DST_OFFSET=0] //将日历对象转化为日期对象 Date date = c.getTime(); System.out.println(date);//Sat Jul 08 21:22:45 CST 2000 }}

数仓面试|四个在工作后才知道的SQL密技

标签:order by   url   osi   ida   set   图片   比较   insert   subquery   

小编还为您整理了以下内容,可能对您也有帮助:

数仓二面要考sql吗

写回答

五分钟学大数据

上帝视角看下数仓开发工程师所处的位置:

数仓的话工作中肯定以sql为主,基本不写其他代码,但是sql怎么写,为什么这样写,扩展性怎么样,后期易维护性,易用性等等,这些很重要,工作中至少有三分之一时间是在考虑这些问题。

所以数仓工作其实是分为两部分:技术和理论。技术肯定以sql为主,hive sql,spark sql,flink sql,必须熟练掌握,工作中一般分为离线数仓和实时数仓,但是面试时一般不区分,不管离线还是实时,面试官都会问到,离线的话重点掌握hadoop,hive,spark,实时的话重点掌握kafka,flink,hbase,必须会使用这些框架进行相关的开发。

理论重点掌握:数仓搭建,数仓怎么分层,每层的作用,数仓建模,包括维度建模和范式建模,实时数仓需要知道 Lambda架构和Kappa架构,每种架构的优缺点等。

总结下:

SQL就不说了,必须熟练掌握,sql中的各种窗口函数、分析函数等都要会用。

其他必须要掌握的,离线和实时我分开写:

离线数仓需要重点掌握的技能:

Hadoop(HDFS,MapRece,YARN)

Hive(重点,包括hive底层原理,hive SQL及调优)

Spark(Spark 会用及了解底层原理)

Oozie(调度工具,会用即可)

离线数仓建设(搭建数仓,数仓建模规范)

维度建模(建模方式常用的有范式建模和维度建模,重点关注维度建模)

实时数仓需要重点掌握的技能:

Hadoop(这是大数据基础,不管离线和实时都必须掌握)

Kafka(重点,大数据领域中算是唯一的消息队列)

Flink(重中之重,这个不用说了,实时计算框架中绝对王者)

HBase(会使用,了解底层原理)

Druid(会用,了解底层原理)

实时数仓架构(两种数仓架构:Lambda架构和Kappa架构)

数据仓库面试题

一般数据仓库面试会面两轮,第一轮一般是sql技术面,第二轮就是 维度建模 和 数据治理 的问题。

一轮技术面(待补充):

1、数据倾斜:

数据倾斜一般产生的原因是数据在map端hash分配到rece端时,某一个key的数量远大于其他的key,导致某一个rece的处理时间较长。

1)key分布不均匀

2)数据本身就是如此

3)数据关联时没有把握好关联键

解决方案

1)参数调整:hive.map.aggr = true;hive.groupby.skewindata=true;

 当存在数据倾斜时开启负载均衡,此时会生成两个MapRece任务,第一个MR任务会将map端产生的key随机的分配到rece,先进行一次聚合,第二个MR任务会将第一个任务的预处理结果作为输入,将相同的key分配到同一个rece当中。

2)sql调整:在处理大量空值导致数据倾斜的情况下,可以先将空值附一个特殊值去处理,比如给一个随机数加字符串的方式,因为空值数据是关联不上的,不会影响后期处理。

2、order by,sort by,cluster by,distribute by的区别

1)order by是全局排序,排序过程在一个rece中进行,在数据量较大时就会很慢

2)sort by是局部排序,排序结果在同一个rece中使有序的

3)distribute by是将数据按照字段划分到一个rece中,一般与sort by连用进行分组排序的作用

4)cluster by除具有distribute by功能外还具有sort by的功能

order by优化(阿里面试):

1)开启严格模式,order by之后添加limit子句

2)利用sort by,在每个rece中先排序取出top项,再把预处理结果order by输出

3、hive中内部表和外部表的区别

1)在创建表的时候,内部表是将数据移动到数据仓库指向的路径,外部表仅记录数据所在的路径,不对数据的位置做任何改变。

2)在删除表的时候,内部表会将元数据和数据都删除,外部表只删除元数据。

4、列转行、行转列

1)列转行:lateral view explode(split('column_name',','))作为一个新表

2)行转列:concat_ws(',',collect_set(column_name))

5、maprece运行原理

6、数据仓库分层原理(阿里面试)

7、维度建模中三种事实表的应用场景(阿里面试)

二轮面试(待补充)

108如何从优化sQL人手提高数据仓库的ETL效率?

目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的数据需要通过搭建数据仓库平台才能得到科学的分析,这也是近几年数据仓库系统建设成为IT领域热门话题的原因。
数据仓库ETL过程的主要特点是:面对海量的数据进行抽取;分时段对大批量数据进行删除、更新和插入操作;面对异常的数据进行规则化的清洗;大量的分析模型重算工作;有特定的过程处理时间规律性,一般整个ETL过程需要在每天的零点开始到6点之前完成。所以,针对ETL过程的优化主要是结合数据仓库自身的特点,抓住需要优化的主要方面,针对不同的情况从如何采用高效的SQL入手来进行。
目前数据仓库建设中的后台数据库大部分采用Oracle,以下的SQL采用Oracle的语法来说明,所有的测试在Oracle9i环境中通过,但其优化的方法和原理同样适合除Oracle之外的其他数据库。
在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则:
(1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。
(2) 避免在索引列上使用函数或计算,在WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。举例:
低效: SELECT * ROM DEPT WHERE SAL * 12 > 25000;
高效: SELECT * FROM DEPT WHERE SAL > 25000/12;
(4) 索引列上用>=替代>
高效: SELECT * FROM EMP WHERE DEPTNO >=4
低效: SELECT * FROM EMP WHERE DEPTNO >3
两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。
(5) 函数的列启用索引方法,如果一定要对使用函数的列启用索引,Oracle9i以上版本新的功能:基于函数的索引
(Function-Based Index)是一个较好的方案,但该类型索引的缺点是只能针对某个函数来建立和使用该函数。
CREATE INDEX EMP_I ON EMP (UPPER( ENAME)); /*建立基于函数的索引*/
SELECT * FROM EMP WHERE UPPER(ENAME) = ‘BLACKSNAIL’; /*将使用索引*/
当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。
对数据仓库维表的数据进行维护时,因为需要保证维表ID的一致性,所以采用游标的是数据维护完整性的最好方式。由于它的效率低,如果按照普通的方式将无法处理大数据量的维表数据维护(一般是指10万条记录以上的维表),以下是处理这种情况的有效方式:
(1) 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。

108如何从优化sQL人手提高数据仓库的ETL效率?

目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的数据需要通过搭建数据仓库平台才能得到科学的分析,这也是近几年数据仓库系统建设成为IT领域热门话题的原因。
数据仓库ETL过程的主要特点是:面对海量的数据进行抽取;分时段对大批量数据进行删除、更新和插入操作;面对异常的数据进行规则化的清洗;大量的分析模型重算工作;有特定的过程处理时间规律性,一般整个ETL过程需要在每天的零点开始到6点之前完成。所以,针对ETL过程的优化主要是结合数据仓库自身的特点,抓住需要优化的主要方面,针对不同的情况从如何采用高效的SQL入手来进行。
目前数据仓库建设中的后台数据库大部分采用Oracle,以下的SQL采用Oracle的语法来说明,所有的测试在Oracle9i环境中通过,但其优化的方法和原理同样适合除Oracle之外的其他数据库。
在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则:
(1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。
(2) 避免在索引列上使用函数或计算,在WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。举例:
低效: SELECT * ROM DEPT WHERE SAL * 12 > 25000;
高效: SELECT * FROM DEPT WHERE SAL > 25000/12;
(4) 索引列上用>=替代>
高效: SELECT * FROM EMP WHERE DEPTNO >=4
低效: SELECT * FROM EMP WHERE DEPTNO >3
两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。
(5) 函数的列启用索引方法,如果一定要对使用函数的列启用索引,Oracle9i以上版本新的功能:基于函数的索引
(Function-Based Index)是一个较好的方案,但该类型索引的缺点是只能针对某个函数来建立和使用该函数。
CREATE INDEX EMP_I ON EMP (UPPER( ENAME)); /*建立基于函数的索引*/
SELECT * FROM EMP WHERE UPPER(ENAME) = ‘BLACKSNAIL’; /*将使用索引*/
当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。
对数据仓库维表的数据进行维护时,因为需要保证维表ID的一致性,所以采用游标的是数据维护完整性的最好方式。由于它的效率低,如果按照普通的方式将无法处理大数据量的维表数据维护(一般是指10万条记录以上的维表),以下是处理这种情况的有效方式:
(1) 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。

面试的技巧有哪些?

面试是求职者展示自己能力和经验的重要机会,如何通过面试获得心仪的工作是每个求职者都需要面对的问题。以下是我总结的一些面试技巧,希望对大家有所帮助。

一、提前了解公司和职位信息

在面试前,要提前了解公司的背景、文化和业务,以及所应聘职位的职责和要求。这样可以更好地回答面试官的问题,展现自己的专业素养和工作能力。同时还可以针对公司的业务和需求,提出一些有建设性的意见和建议,表现出自己的思考能力和创新精神。

二、准备充分的简历和作品集

简历和作品集是求职者展示自己能力和经验的重要材料。在准备简历和作品集时,要突出自己的工作经验和成就,用数据和案例来证明自己的能力和价值。同时还要注意简历和作品集的排版和设计,使其简洁明了、易于阅读。

三、注重语言表达和沟通能力

语言表达和沟通能力是衡量一个人经验的重要指标之一。在面试中,要注意语言表达清晰、准确、简洁,避免使用口语化或不规范的语言。同时还要注重沟通技巧,包括倾听、发问、回应等方面,表现出自己的职业素养和人际交往能力。

四、展现自己的解决问题的能力

解决问题的能力是一个人经验的重要体现之一。在面试中,可以通过举例说明自己曾经遇到的难题,并如何通过分析、思考和行动解决这些问题。这样可以表现出自己的解决问题的能力和经验,让面试官对自己产生信任和好感。

五、注意形象和仪态

形象和仪态也是衡量一个人经验的重要因素之一。在面试中,要注意穿着得体、整洁干净,保持良好的姿态和面部表情。这样可以给人留下一个专业、自信、有经验的印象,增加自己的竞争力。

六、积极回答问题

在面试过程中,面试官会问到很多问题,如个人介绍、职业规划、工作经验等。在回答问题时,要积极主动,表达清楚、简明扼要,尽量避免回避或者含糊其辞。同时还要注意语速和声音的音量,保持自信和稳定。如果遇到自己不知道的问题,可以坦诚地表示自己不清楚,但同时表达自己的学习能力和求知,让面试官看到自己的积极性和进取心。

七、注意细节

在面试过程中,还要注意一些细节问题,如面试前要充分休息,保持良好的心态和精神状态;面试时要注意时间控制,不要超时或者过早结束;面试结束后要及时发送感谢信或邮件,表现出自己的礼貌和诚意。

最后,我想说的是,面试技巧需要平时的积累和实践。希望每个求职者都能够充分利用面试的机会,展示自己的能力和经验,找到一份满意的工作。

数据仓库与数据挖掘问题

公众交流平台
1 介绍
数据仓库是面向主题的、集成的、与时间相关的、不可修改的数据集合。数据仓库技术是基于信息系统业务发展的需要,基于数据库系统技术发展而来,并逐步独立的一系列新的应用技术。数据仓库系统可以看作是基于数学及统计学严谨逻辑思维的并达成“科学的判断、有效的行为”的一个工具,也是一种达成“数据整合、知识管理”的有效手段。随着数据仓库技术应用的不断深入,越来越多的企业开始使用数据仓库技术建设自己的数据仓库系统,希望能对历史数据进行具体而又有针对性的分析与挖掘,以期从中发现新客户和客户新的需求。
目前主要的数据仓库产品供应商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收购)等。Oracle公司的数据仓库解决方案包含了业界领先的数据库平台、开发工具和应用系统,能够提供一系列的数据仓库工具集和服务,具有多用户数据仓库管理能力,多种分区方式,较强的与OLAP工具的交互能力,及快速和便捷的数据移动机制等特性;IBM公司的数据仓库产品称为DB2 Data Warehouse Edition,它结合了DB2数据服务器的长处和IBM的商业智能基础设施,集成了用于仓库管理、数据转换、数据挖掘以及OLAP分析和报告的核心组件,提供了一套基于可视数据仓库的商业智能解决方案;微软的SQL Server提供了三大服务和一个工具来实现数据仓库系统的整合,为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能,可以实现建模、ETL、建立查询分析或图表、定制KPI、建立报表和构造数据挖掘应用及发布等功能;SAS公司的数据仓库解决方案是一个由30多个专用模块构成的架构体系,适应于对企业级的数据进行重新整合,支持*、快速查询,提供服务于OLAP操作和决策支持的数据采集、管理、处理和展现功能;Teradata公司提出了可扩展数据仓库基本架构,包括数据装载、数据管理和信息访问几个部分,是高端数据仓库市场最有力竞争者,主要运行在基于Unix操作系统平台的NCR硬件设备上;Sybase提供了称为Warehouse Studio的一整套覆盖整个数据仓库建立周期的产品包,包括数据仓库的建模、数据集成和转换、数据存储和管理、元数据管理和数据可视化分析等产品;Business Objects是集查询、报表和OLAP技术为一身的智能决策支持系统,具有较好的查询和报表功能,提供*分析技术,支持多种数据库,同时它还支持基于Web浏览器的查询、报表和分析决策。
根据IDC发布的2006年数据仓库市场分析报告,上述公司占据了全球近90%的市场份额,提供的数据仓库产品的功能特性已经成为市场的主流。这些公司在推出各自的数据仓库产品的同时也提供了相应的数据仓库解决方案。本文后续内容将针对这些数据仓库产品和解决方案的主要支撑技术进行比较,并结合IDC和ChinaBI相关报告给出相应的市场情况分析。
2 支撑技术
在数据仓库系列技术中,主要的支撑技术包括数据库技术、ETL技术、OLAP技术、报表技术、数据挖掘技术。
2.1 数据库技术
数据库技术是支撑数据仓库技术的基础技术。尽管在数据仓库技术存储模型方面,基于数据库技术而发展的关系模式的理念已经被*,取而代之是各种各样的数据仓库数据模型,如星型模型,雪花模型等。然而,在已有的数据仓库实践中,关系数据库仍然是实质的数据库存储工具,只是将数据库表改称为了事实表和维表,将属性域之间的关系重新定义为维度,量度,层次,粒度等。
成熟的数据仓库后台数据库包括Oracle、DB2、SQL Server、Teradata和Sybase IQ。在查询效率方面,Sybase IQ由于采用了列存储技术,查询效率比较高;在兼容性方面,Teradata从软件到硬件都必须是专用的,因而兼容性最差;在管理平台和海量数据管理方面,Oracle、DB2和SQL Server都提供了一系列完整的工具,相对于其它产品有着明显的优势;在磁盘空间利用方面,Sybase IQ的压缩比是所有数据库中最好的,而Teradata最为浪费。
另外,SAS公司和BO公司也拥有自己的数据管理能力,但对于大型数据仓库的数据管理,仍然需要使用上述数据库产品,SAS和BO都提供了与这些数据库进行连接的专门接口。
2.2 ETL技术
数据仓库系统是集成的、与时间相关的数据集合,ETL作为数据仓库的核心,负责将分布的、异构数据源中的数据进行抽取、清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。ETL能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。要实现数据仓库中数据的自动更新运转,ETL技术是必不可少的关键技术之一。
主流数据仓库产品供应商都拥有各自的ETL能力。IBM的ETL工具称为IBM WebSphere DataStage,它为整个ETL过程提供了一个图形化的开发环境,支持对多种操作数据源的数据抽取、转换和维护,并将其输入数据集或数据仓库;Teradata的ETL工具称为ETL Automation,它利用Teradata数据库本身的并行处理能力,通过SQL语句实现数据的转换,提供对ETL流程的支持,包括前后依赖、执行和监控等;SAS的ETL工具称为ETL Studio,提供管理ETL流程和建立数据仓库、数据集市和OLAP结构的单控制点。其他几家公司则将其工具融合在大的数据仓库组件中,如Oracle的Oracle Warehouse Builder (OWB)、SQL Server的Integration Services、Sybase的Data Integration Suite、BO的可扩展数据整合平台Data Integrator。
上述各公司提供的ETL相关工具功能相近,在易用性、效率、价格等方面各有千秋,但就工具的二次开发、集成和开放性而言,与专业的数据集成平台,如Informatica公司的PowerCenter,相比还是存在一定的差距。
2.3 OLAP技术
联机分析处理(OLAP)是针对特定问题的联机数据访问和分析,通过对信息进行快速、稳定、一致和交互式的存取,对数据进行多层次、多阶段的分析处理,以获得高度归纳的分析结果。联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求,由此出现了*数据库和*分析的概念。
目前主流的OLAP产品有Oracle Express/Discoverer、SQL Server Analysis Services、DB2 OLAP Server、SAS OLAP Server等,这些产品都可以生成*数据立方体,提供*数据的快速分析,支持所有主流关系型数据库如DB2,Oracle,SQL Server,Sybase等,同时可读取关系数据库中细节数据,实现混合在线分析(HOLAP)或关系型在线分析(ROLAP)。并且,各厂商的OLAP Sever对自己的数据库产品的支持均好于其它数据库,各自的分析工具也都基于开放的OLE DB标准,可以访问支持OLE DB标准的数据立方体。
BO公司和Sybase公司则分别提供了各自的OLAP分析工具OLAP Intelligence和Power Dimension,支持标准OLAP API,如OLEDB for OLAP,能够对Microsoft、IBM等OLAP数据进行划分、钻取等处理,兼容第三方报表和展现工具。Teradata尽管不提供独立的OLAP工具,但提供了相关技术,用于提升运行于Teradata数据库上的OLAP应用系统的性能。
2.4 报表技术
报表技术主要是将集成在数据模型里的数据,按照复杂的格式、指定行列统计项,计算形成的特殊表格。一般的简单报表可以使用通用的前台展现技术实现,而复杂的报表则需要使用特定的报表技术。主流的报表技术都可以灵活的制定各种报表模版库和指标库,并根据每个区块或单元格的需要引用指标,实现一系列复杂的符合要求的报表的自动生成。
主流数据仓库厂商的报表工具中较为有影响包括IBM的Cognos ReportNet、BO的Crystal Reports、Oracle的Oracle Reports。IBM通过收购Cognos公司获得了完整的报表产品Cognos ReportNet,覆盖了各种报表需求,包括管理报表、商业报表、账单和*等;BO公司提供了一个完整的企业报表解决方案Crystal Reports Server,支持通过Web快速便捷的创建、管理和交付报表;Oracle Reports工具提供了自由的数据格式方式,可以自动生成个性化字母或矩阵风格的布局,包括动态、数据驱动的图表;SQL Server的报表功能包含在Reporting Services (SSRS)中,包括处理组件、一整套可用于创建和管理报表的工具、在自定义应用程序中集成和扩展数据和报表处理的API。与上述产品相比,Sybase的InfoMaker、Teradata的BTEQ和SAS的Report Studio等报表产品在功能、性能、二次开发等方面都还存在着一定的差距。
总的来说,这些产品在大部分通用软件领域相对国产软件都要优秀,但在有中国特色的报表领域内却是例外,在处理能力存在一定的不适应性。另外这些产品的数学模型都是基于SQL/OLAP理论设计的,在技术上也不能满足国内复杂报表的制作需求。
2.5 数据挖掘技术
当数据积累到一定数量时,某些潜在联系、分类、推导结果和待发现价值隐藏在其中,可以使用数据发掘工具帮助发现这些有价值的数据。数据挖掘就是从海量数据中,提取隐含在其中的、人们事先不知道的但又可能有用的信息和知识的过程。通过数据挖掘能找出数据库中隐藏的信息,实现用模型来拟合数据、探索型数据分析,数据驱动型的发现,演绎型学习等功能。
目前,IBM公司的IBM Intelligent Miner支持典型数据集自动生成、关联发现、序列规律发现、概念性分类和可视化呈现,可以自动实现数据选择、数据转换、数据发掘和结果呈现这一整套数据发掘操作;Oracle公司提供的数据挖掘平台称为Oracle Data Miner,它提供了的一个图形用户界面,通过简单易用的向导来指导完成数据准备、数据挖掘、模型评估和模型评价过程,根据需要自动生成将数据挖掘步骤转换成一个集成的数据挖掘/BI应用程序所需的代码;SAS公司的SAS Enterprise Miner将数据挖掘过程简单流程化,支持关联、聚类、决策树、神经元网络和经典的统计回归技术;Teradata公司的挖掘工具称为Teradata Warehouse Miner,它通过将数据挖掘技术整合到数据仓库来简化数据挖掘流程,该工具还可实现将多家厂商的数据挖掘技术嵌入Teradata企业级数据仓库环境中运行;Microsoft数据挖掘平台不同于传统数据挖掘应用程序,它支持组织中数据的整个开发生命周期,允许第三方添加自定义算法以支持特定的挖掘需求,支持实时根据挖掘的数据集进行数据验证。对比于上述公司,Sybase和BO公司并没有推出专门的数据挖掘平台或工具。
和前几项支撑技术相比,数据挖掘技术的专业性更强,与应用领域的特殊背景结合得更加紧密。上述产品除了在性能、通用性、数据展示、二次开发上有一定差异外,没有一个能够占据绝对技术和市场优势,反而是一些专门领域内的专业挖掘工具更具竞争性,如Fair Isaac公司占据了全球信用卡积分市场近7成的份额。
3 市场分析
国际权威市场分析机构IDC将数据仓库平台工具市场细分为数据仓库生成(Data Warehouse Generation)工具市场和数据仓库管理(Data Warehouse Management)工具市场两个部分,前者涵盖数据仓库的设计和ETL过程的各种工具,后者指数据仓库后台数据库的管理工具,如DBMS。根据IDC发布的《全球数据仓库平台工具2006年度供应商市场份额》分析报告,2006年该市场增长率为12.5%,规模达到57亿美元,其中数据仓库生成工具和数据仓库管理工具两个市场的比重分别为23.3%和76.7%,相对于数据仓库管理工具市场,数据仓库生成工具市场的增长进一步放缓。可以预见,整个数据仓库市场将进一步向拥有强大后台数据库系统的传统厂商倾斜。从供应商看,Oracle公司继续占据数据仓库管理领域的领先供应商地位,并且与其主要竞争者IBM之间的这种领先优势正逐渐扩大。Microsoft紧追IBM之后,与其之间的差距则在逐渐缩小。
在国内,商业智能已经成为企业信息化中最重要的组成部分,而数据仓库相关技术在其中扮演着无可替代的重要角色。据ChinaBI统计,2007年中国*地区的BI市场份额约为20亿元人民币,同比2006年增长35%,其中BI产品许可证约为9亿元人民币,BI系统集成约为11亿元人民币。现有BI厂商包括产品提供商、集成商、分销商、服务商等有近500家,在未来几年内商业智能市场需求旺盛,市场规模增长迅速。从国内数据仓库实践看,根据ChinaBI评选的2007年中国十大数据仓库的初步结果,传统数据库厂商占据7个,分别是IBM 3个、Oracle 3个、SQL Server 1个,其余3个属于NCR/Teradata公司;从数据仓库规模来看,传统数据库厂商更占有巨大优势,总数据量为536.3T,Teradata则为54T。涉及的行业包括通信、邮政、税务、证券和保险等。
在数据仓库市场快速发展的同时,市场竞争也日趋激烈,其中尤其以Oracle收购Hyperion、SAP收购BO、IBM收购Cognos具有代表意义。截至2007年底,混乱的市场已经基本明朗化,三个层次逐渐浮现出来。Oracle,IBM,Microsoft和SAP位居第一层次,能够提供全面的解决方案;第二层次是NCR Teradata和SAS等产品相对独立的供应商,可以提供解决方案中的部分应用;第三层次是只专注于单一领域的专业厂商,但其在并购的硝烟中日趋难以存活。

数据仓库与数据挖掘问题

公众交流平台
1 介绍
数据仓库是面向主题的、集成的、与时间相关的、不可修改的数据集合。数据仓库技术是基于信息系统业务发展的需要,基于数据库系统技术发展而来,并逐步独立的一系列新的应用技术。数据仓库系统可以看作是基于数学及统计学严谨逻辑思维的并达成“科学的判断、有效的行为”的一个工具,也是一种达成“数据整合、知识管理”的有效手段。随着数据仓库技术应用的不断深入,越来越多的企业开始使用数据仓库技术建设自己的数据仓库系统,希望能对历史数据进行具体而又有针对性的分析与挖掘,以期从中发现新客户和客户新的需求。
目前主要的数据仓库产品供应商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收购)等。Oracle公司的数据仓库解决方案包含了业界领先的数据库平台、开发工具和应用系统,能够提供一系列的数据仓库工具集和服务,具有多用户数据仓库管理能力,多种分区方式,较强的与OLAP工具的交互能力,及快速和便捷的数据移动机制等特性;IBM公司的数据仓库产品称为DB2 Data Warehouse Edition,它结合了DB2数据服务器的长处和IBM的商业智能基础设施,集成了用于仓库管理、数据转换、数据挖掘以及OLAP分析和报告的核心组件,提供了一套基于可视数据仓库的商业智能解决方案;微软的SQL Server提供了三大服务和一个工具来实现数据仓库系统的整合,为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能,可以实现建模、ETL、建立查询分析或图表、定制KPI、建立报表和构造数据挖掘应用及发布等功能;SAS公司的数据仓库解决方案是一个由30多个专用模块构成的架构体系,适应于对企业级的数据进行重新整合,支持*、快速查询,提供服务于OLAP操作和决策支持的数据采集、管理、处理和展现功能;Teradata公司提出了可扩展数据仓库基本架构,包括数据装载、数据管理和信息访问几个部分,是高端数据仓库市场最有力竞争者,主要运行在基于Unix操作系统平台的NCR硬件设备上;Sybase提供了称为Warehouse Studio的一整套覆盖整个数据仓库建立周期的产品包,包括数据仓库的建模、数据集成和转换、数据存储和管理、元数据管理和数据可视化分析等产品;Business Objects是集查询、报表和OLAP技术为一身的智能决策支持系统,具有较好的查询和报表功能,提供*分析技术,支持多种数据库,同时它还支持基于Web浏览器的查询、报表和分析决策。
根据IDC发布的2006年数据仓库市场分析报告,上述公司占据了全球近90%的市场份额,提供的数据仓库产品的功能特性已经成为市场的主流。这些公司在推出各自的数据仓库产品的同时也提供了相应的数据仓库解决方案。本文后续内容将针对这些数据仓库产品和解决方案的主要支撑技术进行比较,并结合IDC和ChinaBI相关报告给出相应的市场情况分析。
2 支撑技术
在数据仓库系列技术中,主要的支撑技术包括数据库技术、ETL技术、OLAP技术、报表技术、数据挖掘技术。
2.1 数据库技术
数据库技术是支撑数据仓库技术的基础技术。尽管在数据仓库技术存储模型方面,基于数据库技术而发展的关系模式的理念已经被*,取而代之是各种各样的数据仓库数据模型,如星型模型,雪花模型等。然而,在已有的数据仓库实践中,关系数据库仍然是实质的数据库存储工具,只是将数据库表改称为了事实表和维表,将属性域之间的关系重新定义为维度,量度,层次,粒度等。
成熟的数据仓库后台数据库包括Oracle、DB2、SQL Server、Teradata和Sybase IQ。在查询效率方面,Sybase IQ由于采用了列存储技术,查询效率比较高;在兼容性方面,Teradata从软件到硬件都必须是专用的,因而兼容性最差;在管理平台和海量数据管理方面,Oracle、DB2和SQL Server都提供了一系列完整的工具,相对于其它产品有着明显的优势;在磁盘空间利用方面,Sybase IQ的压缩比是所有数据库中最好的,而Teradata最为浪费。
另外,SAS公司和BO公司也拥有自己的数据管理能力,但对于大型数据仓库的数据管理,仍然需要使用上述数据库产品,SAS和BO都提供了与这些数据库进行连接的专门接口。
2.2 ETL技术
数据仓库系统是集成的、与时间相关的数据集合,ETL作为数据仓库的核心,负责将分布的、异构数据源中的数据进行抽取、清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。ETL能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。要实现数据仓库中数据的自动更新运转,ETL技术是必不可少的关键技术之一。
主流数据仓库产品供应商都拥有各自的ETL能力。IBM的ETL工具称为IBM WebSphere DataStage,它为整个ETL过程提供了一个图形化的开发环境,支持对多种操作数据源的数据抽取、转换和维护,并将其输入数据集或数据仓库;Teradata的ETL工具称为ETL Automation,它利用Teradata数据库本身的并行处理能力,通过SQL语句实现数据的转换,提供对ETL流程的支持,包括前后依赖、执行和监控等;SAS的ETL工具称为ETL Studio,提供管理ETL流程和建立数据仓库、数据集市和OLAP结构的单控制点。其他几家公司则将其工具融合在大的数据仓库组件中,如Oracle的Oracle Warehouse Builder (OWB)、SQL Server的Integration Services、Sybase的Data Integration Suite、BO的可扩展数据整合平台Data Integrator。
上述各公司提供的ETL相关工具功能相近,在易用性、效率、价格等方面各有千秋,但就工具的二次开发、集成和开放性而言,与专业的数据集成平台,如Informatica公司的PowerCenter,相比还是存在一定的差距。
2.3 OLAP技术
联机分析处理(OLAP)是针对特定问题的联机数据访问和分析,通过对信息进行快速、稳定、一致和交互式的存取,对数据进行多层次、多阶段的分析处理,以获得高度归纳的分析结果。联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求,由此出现了*数据库和*分析的概念。
目前主流的OLAP产品有Oracle Express/Discoverer、SQL Server Analysis Services、DB2 OLAP Server、SAS OLAP Server等,这些产品都可以生成*数据立方体,提供*数据的快速分析,支持所有主流关系型数据库如DB2,Oracle,SQL Server,Sybase等,同时可读取关系数据库中细节数据,实现混合在线分析(HOLAP)或关系型在线分析(ROLAP)。并且,各厂商的OLAP Sever对自己的数据库产品的支持均好于其它数据库,各自的分析工具也都基于开放的OLE DB标准,可以访问支持OLE DB标准的数据立方体。
BO公司和Sybase公司则分别提供了各自的OLAP分析工具OLAP Intelligence和Power Dimension,支持标准OLAP API,如OLEDB for OLAP,能够对Microsoft、IBM等OLAP数据进行划分、钻取等处理,兼容第三方报表和展现工具。Teradata尽管不提供独立的OLAP工具,但提供了相关技术,用于提升运行于Teradata数据库上的OLAP应用系统的性能。
2.4 报表技术
报表技术主要是将集成在数据模型里的数据,按照复杂的格式、指定行列统计项,计算形成的特殊表格。一般的简单报表可以使用通用的前台展现技术实现,而复杂的报表则需要使用特定的报表技术。主流的报表技术都可以灵活的制定各种报表模版库和指标库,并根据每个区块或单元格的需要引用指标,实现一系列复杂的符合要求的报表的自动生成。
主流数据仓库厂商的报表工具中较为有影响包括IBM的Cognos ReportNet、BO的Crystal Reports、Oracle的Oracle Reports。IBM通过收购Cognos公司获得了完整的报表产品Cognos ReportNet,覆盖了各种报表需求,包括管理报表、商业报表、账单和*等;BO公司提供了一个完整的企业报表解决方案Crystal Reports Server,支持通过Web快速便捷的创建、管理和交付报表;Oracle Reports工具提供了自由的数据格式方式,可以自动生成个性化字母或矩阵风格的布局,包括动态、数据驱动的图表;SQL Server的报表功能包含在Reporting Services (SSRS)中,包括处理组件、一整套可用于创建和管理报表的工具、在自定义应用程序中集成和扩展数据和报表处理的API。与上述产品相比,Sybase的InfoMaker、Teradata的BTEQ和SAS的Report Studio等报表产品在功能、性能、二次开发等方面都还存在着一定的差距。
总的来说,这些产品在大部分通用软件领域相对国产软件都要优秀,但在有中国特色的报表领域内却是例外,在处理能力存在一定的不适应性。另外这些产品的数学模型都是基于SQL/OLAP理论设计的,在技术上也不能满足国内复杂报表的制作需求。
2.5 数据挖掘技术
当数据积累到一定数量时,某些潜在联系、分类、推导结果和待发现价值隐藏在其中,可以使用数据发掘工具帮助发现这些有价值的数据。数据挖掘就是从海量数据中,提取隐含在其中的、人们事先不知道的但又可能有用的信息和知识的过程。通过数据挖掘能找出数据库中隐藏的信息,实现用模型来拟合数据、探索型数据分析,数据驱动型的发现,演绎型学习等功能。
目前,IBM公司的IBM Intelligent Miner支持典型数据集自动生成、关联发现、序列规律发现、概念性分类和可视化呈现,可以自动实现数据选择、数据转换、数据发掘和结果呈现这一整套数据发掘操作;Oracle公司提供的数据挖掘平台称为Oracle Data Miner,它提供了的一个图形用户界面,通过简单易用的向导来指导完成数据准备、数据挖掘、模型评估和模型评价过程,根据需要自动生成将数据挖掘步骤转换成一个集成的数据挖掘/BI应用程序所需的代码;SAS公司的SAS Enterprise Miner将数据挖掘过程简单流程化,支持关联、聚类、决策树、神经元网络和经典的统计回归技术;Teradata公司的挖掘工具称为Teradata Warehouse Miner,它通过将数据挖掘技术整合到数据仓库来简化数据挖掘流程,该工具还可实现将多家厂商的数据挖掘技术嵌入Teradata企业级数据仓库环境中运行;Microsoft数据挖掘平台不同于传统数据挖掘应用程序,它支持组织中数据的整个开发生命周期,允许第三方添加自定义算法以支持特定的挖掘需求,支持实时根据挖掘的数据集进行数据验证。对比于上述公司,Sybase和BO公司并没有推出专门的数据挖掘平台或工具。
和前几项支撑技术相比,数据挖掘技术的专业性更强,与应用领域的特殊背景结合得更加紧密。上述产品除了在性能、通用性、数据展示、二次开发上有一定差异外,没有一个能够占据绝对技术和市场优势,反而是一些专门领域内的专业挖掘工具更具竞争性,如Fair Isaac公司占据了全球信用卡积分市场近7成的份额。
3 市场分析
国际权威市场分析机构IDC将数据仓库平台工具市场细分为数据仓库生成(Data Warehouse Generation)工具市场和数据仓库管理(Data Warehouse Management)工具市场两个部分,前者涵盖数据仓库的设计和ETL过程的各种工具,后者指数据仓库后台数据库的管理工具,如DBMS。根据IDC发布的《全球数据仓库平台工具2006年度供应商市场份额》分析报告,2006年该市场增长率为12.5%,规模达到57亿美元,其中数据仓库生成工具和数据仓库管理工具两个市场的比重分别为23.3%和76.7%,相对于数据仓库管理工具市场,数据仓库生成工具市场的增长进一步放缓。可以预见,整个数据仓库市场将进一步向拥有强大后台数据库系统的传统厂商倾斜。从供应商看,Oracle公司继续占据数据仓库管理领域的领先供应商地位,并且与其主要竞争者IBM之间的这种领先优势正逐渐扩大。Microsoft紧追IBM之后,与其之间的差距则在逐渐缩小。
在国内,商业智能已经成为企业信息化中最重要的组成部分,而数据仓库相关技术在其中扮演着无可替代的重要角色。据ChinaBI统计,2007年中国*地区的BI市场份额约为20亿元人民币,同比2006年增长35%,其中BI产品许可证约为9亿元人民币,BI系统集成约为11亿元人民币。现有BI厂商包括产品提供商、集成商、分销商、服务商等有近500家,在未来几年内商业智能市场需求旺盛,市场规模增长迅速。从国内数据仓库实践看,根据ChinaBI评选的2007年中国十大数据仓库的初步结果,传统数据库厂商占据7个,分别是IBM 3个、Oracle 3个、SQL Server 1个,其余3个属于NCR/Teradata公司;从数据仓库规模来看,传统数据库厂商更占有巨大优势,总数据量为536.3T,Teradata则为54T。涉及的行业包括通信、邮政、税务、证券和保险等。
在数据仓库市场快速发展的同时,市场竞争也日趋激烈,其中尤其以Oracle收购Hyperion、SAP收购BO、IBM收购Cognos具有代表意义。截至2007年底,混乱的市场已经基本明朗化,三个层次逐渐浮现出来。Oracle,IBM,Microsoft和SAP位居第一层次,能够提供全面的解决方案;第二层次是NCR Teradata和SAS等产品相对独立的供应商,可以提供解决方案中的部分应用;第三层次是只专注于单一领域的专业厂商,但其在并购的硝烟中日趋难以存活。

数据仓库与SQL数据库有什么区别

首先,定义三个概念:数据库软件、数据库、数据仓库。

数据库软件:是一种软件,可以看得见,可以操作。用来实现数据库逻辑功能。属于物理层。

数据库:是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的美,在于能够用二维表现关系。目前市面上流行的数据库都是二维数据库。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。

数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析。

接下来,就是详细说明了。在IT的架构体系中,数据库是必须存在的。必须要有地方存放数据。比如现在的网购,淘宝,京东等等。物品的存货数量,货品的价格,用户的账户余额之类的。这些数据都是存放在后台数据库中。或者最简单理解,我们现在微博,QQ等账户的用户名和密码。在后台数据库必然有一张user表,字段起码有两个,即用户名和密码,然后我们的数据就一行一行的存在表上面。当我们登录的时候,我们填写了用户名和密码,这些数据就会被传回到后台去,去跟表上面的数据匹配,匹配成功了,你就能登录了。匹配不成功就会报错说密码错误或者没有此用户名等。这个就是数据库,数据库在生产环境就是用来干活的。凡是跟业务应用挂钩的,我们都使用数据库。

而数据仓库则是BI下的其中一种技术。由于数据库是跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如刚才那个登录的功能,这张user表上就只有这两个字段,没有别的字段了。但是这张表符合应用,没有问题。但是这张表不符合分析。比如我想知道在哪个时间段,用户登录的量最多?哪个用户一年购物最多?诸如此类的指标。那就要重新设计数据库的表结构了。对于数据分析和数据挖掘,我们引入数据仓库概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。数据仓库的数据来源于那些后台持续不停运作的数据库表。数据的搬运就牵涉到另一个技术叫ETL。这个过程就是数据从一个数据库到了数据仓库

数据分析师需要学什么

一、统计学:我看一些人推荐了不少统计学的专业书籍,直接把人吓跑了。

我自己就大学时候学过《概率论与数理统计》,其他统计相关的内容也没怎么看过。

对于互联网的数据分析来说,并不需要掌握太复杂的统计理论。

所以只要按照本科教材,学一下统计学就够了。

二、编程能力:学会一门编程语言,会让你处理数据的效率大大提升。

如果你只会在 Excel 上复制粘贴,动手能力是不可能快的。

我比较推荐 Python,上手比较快,写起来比较优雅。

三、数据库:数据分析师经常和数据库打交道,不掌握数据库的使用可不行。

学会如何建表和使用 SQL 语言进行数据处理,可以说是必不可少的技能。

四、数据仓库:许多人分不清楚数据库和数据仓库的差异,简单来说,数据仓库记录了所有历史数据,专门设计为方便数据分析人员高效使用的。

五、数据分析方法:对于互联网数据分析人员来说,可以看一下《精益创业》和《精益数据分析》,掌握常用的数据分析方法,然后再根据自己公司的产品调整,灵活组合。

六、数据分析工具:SAS、Matlab、SPSS 这些工具经常有人推荐,我要说的是在互联网公司一般都用不上。

做可视化的 Tableau,统计分析的友盟、百度统计,还有像我们神策分析等。

显示全文