惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
H
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
A
Arctic Wolf
博客园_首页
S
Securelist
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
博客园 - 聂微东
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
H
Heimdal Security Blog
罗磊的独立博客
S
Security @ Cisco Blogs
B
Blog
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
S
Schneier on Security
月光博客
月光博客
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - 君之蘭

WPF打印票据 easyui plugin——etreegrid:CRUD Treegrid 【经验谈】XmlSerializer的坑 从抽象谈起(三):AOP编程和ASP.NET MVC 从抽象谈起(二):观察者模式与回调 从抽象谈起(一):工厂模式与策略模式 SQL SERVER BI 入门:(2) Analysis Service 应用 HTML5 Canvas编写五彩连珠(6):试玩 HTML5 Canvas编写五彩连珠(5):寻路 HTML5 Canvas编写五彩连珠(4):动画 HTML5 Canvas编写五彩连珠(3):设计 HTML5 Canvas编写五彩连珠(2):画图 HTML5 Canvas编写五彩连珠(1):预览 Trie树-脏词过滤应用 带你走进缓存世界(6):共享缓存 ASP.NET MVC3 Custom FormAuthorize ASP.NET MVC3 Custom ErrorPages 500/404 带你走进缓存世界(5):一显身手 带你走进缓存世界(4):缓存之缓
SQL SERVER BI 入门:(1)安装与基础概念
君之蘭 · 2012-10-21 · via 博客园 - 君之蘭

SQL SERVER BI 入门

或许有很多同学和我一样,只是听说过BI这个词汇,但如果工作不涉及到数据统计分析或数据挖掘,很难接触这方面的知识。我以前一直向往能在这方面有所历练,恰巧最近公司需要做数据统计和分析的工作,这份工作我主动提出来做,荣幸之至。写这篇文章也是对我最近工作的总结。

下载并安装

我工作选用的SqlServer 2008 R2,由于在自己电脑上写博客,所以我这里尝试使用2012版本,顺便也能看看哪里不同。 下载地址是http://www.microsoft.com/en-us/download/details.aspx?id=29066如果你的系统是中文的则选择中文版。

安装时选择功能模块如下:[配图1]

请注意右下角的Prerequisites for selected features的提示内容,需要4.0,其实还需要3.5

基本概念介绍

数据分析主要包含如下内容:

原始数据库

  原始数据库主要是用于一些数据上报的数据存储,它包含的是最原始的信息,比如一个用户在什么时间访问了什么页面或点击了哪些按钮。这些数据可以通过jsas、或后端代码进行上报。

  这种日志性的数据上报一般量非常大,一天可能就产生几亿条数据,之前我在一家广告公司呆过,广告的量大的惊人,因为广告都是在各大门户展现的,所以页面的PV就是广告的条数,用户的相关操作还会有数据产生,每天十来G的数据量都不成问题,所以原始数据库表的设计要注意几点:

    1、不能有索引(除了主键),也不需要索引,因为相关的分析统计都在数据仓库里进行。

    2、主键必须是有序的主键,如果是GUID之类的,就无法保证顺序,在这数据插入时会调整数据存储的物理顺序,这是非常恐怖的事情,影响速度。

    3、如果数据非常大,要考虑采用分区或分库存储。

    4、如果瞬间插入的太多数据库压力大,则需要考虑增加一个缓存层来缓解压力,这便需要编写服务对缓存层数据进行整理插入到数据库的工作。这样也的缺点是万一缓存服务挂掉,有可能会有数据丢失的情况,可以选用会持久化的缓存服务。总之,这些是需要权衡的。

数据仓库数据库
  数据仓库数据库,是必须的,所有的统计分析都需要以此为基础。数据仓库的表分为两种:维度表(dimension)和事实表(fact

  1. 维度表
  维度很容易理解。例如,我们想知道每天有多少用户使用了产品,那么“每天”就是一个维度,因为我们需要安装“天”来查询有多少用户。同样,年、月、周、季度、地区等都是我们最常见的维度。

  2. 事实表
  事实表的理解可能会模糊一些。一般可以理解为我们要对哪种数据做统计,这种数据事实产生了哪些记录。比如每个用户每一个操作,这是一个事实。那么我们对用户的操作行为做统计的时就需要行为的事实表。

  3. 事实表和维度表的关系
  如果我们使用时间维度对用户行为做统计,那么事实表必须要有一个时间字段。而时间字段的存储其实是时间维度表的主键ID,而不是真正的时间,如图:[配图2]

注意,我的事实表FactUserAction(用户操作行为事实)的OperateDateint类型,和维度表DimDate建立了关系,而且DimDate把日期拆成了年月日三个字段,因为统计可能需要对年和月进行统计,所以这么设计;他们之间有一个层次关系,我们后面会讲。原始表的设计如图

  细心的朋友可能会发现,事实表的UserAction也是一个int,是的,其实这也是一个查询维度,只是我们暂时只拿时间做例子。

  4. 如何设计事实表和维度表
  事实表和维度的设计主要是运维和产品人员的需求而决定的。程序员必能因为开发的复杂而拒绝他们的需求。当然,也不能无理的需求。这篇文章就以时间维度的需求做讲解吧,这个一般也是必须的需求。

  5. 事实表和维度表的数据填充
  这一项对我们程序员来讲是最为简单的,因为我们可以开发一个服务,定时从原始数据库把数据按照仓库的设计重组,并插入。SQLSERVER BI也提供了现有的工具,这种工具称之为ETLExtraction-Transformation-Loading数据提取、转换和加载),在SQLSERVERBI里叫SSISSqlServer Integration Service)。

  图片里三个方块是从一个表里读出数据,然后通过一个列的转换,最后把转换后的列映射到目标库的表里,我这里做的是把CreateTime字段转换成Year Month 和 Day,然后插入到DimDate

  使用ETL要比自己写导入程序更能方便的和Analysis Services交互。比如导入程序后执行唯独表,比如各种数据源的集成,非常方便。不过我没有做深入研究。暂时就不写这一块了,有兴趣的朋友可以慢慢摸索下。

今天就先写这么多,因为我为了截图,安装SQLServer费了好大劲,.NET Framework 3.5总是安装时下载失败。我的系统是windows8,需要单独安装3.5才行。

大家先了解这些概念,不太明白的概念,可以先百科一下。下节写关于Analysis services的使用。