过渡到SSAS之一:简单模型认识
本文主要是转载的,但有些地方,原作者没有说的够详细,我加以补充发到这里。
-----------------------------------------------------------------------------------------------------------------------------
在许多不需要实时而具有海量或需要足够灵活的分析模型中,ssas比传统的sql有很大的优势,比如性能和用户可定制性。性能上的优势体现在mdx语句对比大数据量sql聚合函数上;而可定制性,这里指的是在有对于mdx来说,开发一个适合各类用户自由分析统计数据的展示工具比用sql语句成本要小的多。
mdx的中文意思是多维表达式,从设计上就是用来做数据分析的。
如果你有项目适合上述特点的话,真的需要考虑来过度到SSAS,来OLAP一下了。下面用一个实例来展示一下他的一个简单应用,可以让没有接触过的人来简单了解一下。
今天在论坛上看到这么一个需求,是分析web日志的,比如PV之类的,还要分日期来做比较。一般此类源数据量很大,如果用sql语句的case when配合聚合函数,加上复杂的行列转换和透视语句运行起来会比较吃力,一个SSAS模型就可以轻松解决问题。
我们来做个测试的数据库环境
sTime是开始访问时间,sLeaveTime是最后访问时间,sCount是这个IP访问页面数量:
-- 建立测试环境
create database TestSSAS
go
use TestSSAS
go
-- 事实表
create table Logs( sId varchar ( 20), sWebsiteId varchar ( 20), sTime datetime ,sLeaveTime datetime , sIp varchar ( 20), sCount int )
insert into Logs select '1' , '542' , '2008-11-18 09:18:35.000' , '2008-11-18 14:51:29.000' , '61.183.248.218' , '87'
insert into Logs select '2' , '542' , '2008-11-18 09:38:36.000' , '2008-11-18 17:04:23.000' , '61.144.207.115' , '128'
insert into Logs select '3' , '543' , '2008-11-18 09:42:35.000' , '2008-11-18 10:36:46.000' , '61.183.248.218' , '5'
insert into Logs select '4' , '552' , '2008-11-18 16:45:19.000' , '2008-11-18 16:45:21.000' , '61.144.207.115' , '4'
insert into Logs select '5' , '551' , '2008-11-18 16:45:54.000' , '2008-11-18 16:45:55.000' , '61.144.207.115' , '5'
insert into Logs select '7' , '549' , '2008-11-18 16:46:58.000' , '2008-11-18 16:46:59.000' , '61.144.207.115' , '3'
insert into Logs select '8' , '548' , '2008-11-18 16:47:15.000' , '2008-11-18 16:47:16.000' , '61.144.207.115' , '4'
insert into Logs select '5' , '551' , '2008-11-19 16:45:54.000' , '2008-11-19 16:45:55.000' , '61.144.207.115' , '15'
insert into Logs select '7' , '549' , '2008-11-19 16:46:58.000' , '2008-11-19 16:46:59.000' , '61.144.207.115' , '13'
insert into Logs select '8' , '548' , '2008-11-19 16:47:15.000' , '2008-11-19 16:47:16.000' , '61.144.207.115' , '14'
go
-- 事实表对应视图
create view v_Fac_logs as
select sid, swebsiteid, convert ( varchar ( 10), stime, 120) as date, sIP, sCount fromLogs
go
-- 维度表
create table dim_datetime ( date varchar ( 10))
insert dim_datetime
select '2008-11-15' union
select '2008-11-16' union
select '2008-11-17' union
select '2008-11-18' union
select '2008-11-19'
go
-- 事实表抽取的维度,这里用视图实现
create view dim_Ip as
select distinct sip from Logs
--------------------------------------------------------------------------------------------------------------
创建完的表
-------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
对于前面的 Logs表部分是测试数据,和普通的sql环境一样,后面的事实和维度部分是为了ssas模型做准备的,说的简单点,就是把需要group by的字段拎出来,作为单独的维度表存在,他们和事实表(这里是 v_Fac_logs视图 )做主从关系。
然后我们用一些纯UI上的功夫来生成一个SSAS的多维数据集。
1、打开SQLServer2008自带的SQL Server Business Intelligence Development Studio
文件==》新建==》项目 如下图
2,在解决方案资源管理器上面,右键单击“数据源”新建数据源:
如果数据连接窗口里没有可用的,那么说明还没有发现,需要手动新建一个,新建的时候如下图,测试连接成功即可。
注意,要使用服务账户。之后点击完成即可。
3、新建一个数据源视图,选择事实表和维度表,注意这里选择了v_Fac_logs作为事实表而不是Logs。
建立维度和事实之间的逻辑关系,就是主外键关系,事实表必须制定逻辑主键。这个不需要在sqlserver的真实环境中设定,只要这里设定了就可以了。
分别在图形上点击相应的,设置主键。然后新建关系,如上图所示。
4,新建一个多维数据集,注意标题与维度值组表,与维度表,
5、配置一个角色,这个角色日后用在登录ssas服务器的认证,这里用系统管理员.注意,设置完后,要保存。
6,简单的模型建立好了,然后就是部署和数据处理,默认部署在自己的服务器Localhost。
7\处理的时候可以更改设置,并忽略错误,ssas处理会因为一些逻辑上的或者数据上的错误导致失败,如果忽略错误的话,只跳过单条记录(continue),否则整个过程就会退出(break),然后点击运行。
忽略错误的方法,点击更改设置
处理成功的结果
8\\\现在一个可用的多维数据集就做好了,我们可以用我们的建模工具来浏览数据。选择多维数据集结构===>浏览器,如下图
只要把Dim相关的维度拖到上图的对应维度区域(这里的行和列都是维度)中,然后把Measures对应的度量拖到上图的数据区,就可以看到数据了。
行列互换,拖一下就可以了,可以看到,很明了的结果,确实不错。一旦数据量大的时候,这个功能就应该体现出他的威力了。
本片文章只是我们过渡到SSAS的BI项目的第一步,一个简单
的模型,接下来我们会围绕这个模型来讨论如何部署到web服务器供其他客户端,比如SQL Server Management Studio、.Net客户端等来访问、以及如何使用Mdx语句来做分析统计,如果遇到庞大的项目、比如需要分析的数据来源复杂的,如何做资源整合以及ETL数据清理。
http://blog.csdn.net/jinjazz/article/details/4058368
根据作者的文章,终于实验成功
把多维数据集展开,在Test SSAS 上点右键"浏览",然后把相应的元素拖到界面上即可。
excel连接
过渡到SSAS之一:简单模型认识的更多相关文章
- simulink创建简单模型
创建简单模型 您可以使用 Simulink® 对系统建模,然后仿真该系统的动态行为.Simulink 允许您创建模块图,图中的各个连接模块代表系统的各个部分,信号代表这些模块之间的输入/输出关系.Si ...
- OpenStack部署的简单模型
记录下看到的openstack部署的简单模型,方便自己以后定位问题 规划网络部署节点为一个controller节点(包含网络节点),两个compute节点.controller节点有3个网卡,分别为e ...
- SSAS Tabular表格模型实现动态权限管理
最近忽然对SSAS产生了浓厚兴趣,我看博客园上也米有写关于SSAS 2016下表格模型实现动态权限管理的文章,最近鼓捣了一下微软的样例,鼓捣好了,把过程中遇到的一些问题写出来,抛砖引玉,也算给自己一个 ...
- BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析
上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...
- webots自学笔记(一)软件界面和简单模型仿真
本人是某非理工类某高校大四狗,由于毕设研究需要使用webots软件,在学习使用webots的过程花费了很多时间.由于这个软件基本没有什么中文资料,所以想把自己所学到的一些东西写下来,如有什么错误的地方 ...
- Android学习系列(5)--App布局初探之简单模型
人类科技的进步源自探索,探索来自于发现本原,当然App布局没这么先进,本文也只是一个归类总结.这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. Androi ...
- SSAS Tabular 表格模型建模(关系)及部署
一.表格建模(SSAS 表格) 表格模型是 Analysis Services 中的内存中数据库. 使用最先进的压缩算法和多线程查询处理器,xVelocity 内存中分析引擎 (VertiPaq) ...
- R语言-简单模型画图
1.回归拟合 > plot(mtcars$mpg~mtcars$disp) > lmfit<-lm(mtcars$mpg~mtcars$disp) #线性回归模型 > abli ...
- SSAS中雪花模型
上面的[销售事实表]与[门店]维度.[集团]维度就组成了一个雪花模型. 1.可以把[集团]关联到[门店]的维度上去: 2.如果要把[集团]作为一个单独的维度,先在[维度]里把Dim_Group添加进来 ...
随机推荐
- Android中使用NDK
首先用Android Studio下载NDK 这个比较简单,就不多说了 1.写调用jni的Java代码 新建一个JniUtils类 public class JniUtils { static { S ...
- ;(function($,window,undefined){})(jQuery,window)详细解析————借助B5教程解析自己整理了一下
在jquery插件中我们经常看到以下这段代码 ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,d ...
- BlokUI的使用
1.点击弹出层以外的区域关闭弹出层 $(document).ready(function() { $('#demo9').click(function() { $.blockU ...
- CentOS环境下R语言的安装和配置
最近在看数据统计和分析,想到了R语言,于是就着手在自己的CentOS环境下进行安装和配置.步骤如下: 1.前往R官网下载安装包. 2.解压压缩包:tar xvzf R-3.2.2.tar.gz 3.进 ...
- Hadoop2.6 Ha 安装
Hadoop 2.6安装文档 版本说明:hadoop 2.6 linux-64位 Zookeeper3.4.6 jdk 1.7.0_75 1. Ssh无密码 ssh-keygen vim ...
- xml校验问题
struts2使用xml校验 按照书本输入dtd约束文件 "-//OpenSymphony Group//XWork Validator 1.0.2//EN""http: ...
- 转: ajax跨域之JSONP
事件背景: 某个站点分为静态产品介绍页面(或由于某原因需要静态化),和一个独立的在线应用程序.静态产品页面属于www.a.com下,而在线应用程序作为一个相对独立的系统存在于app.a.com上. 在 ...
- C++堆和栈的比较(7个区别)
基础知识: 堆 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表.允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称 为入栈和出栈.有一组CPU指令可以实现 ...
- BZOJ 1087
var f:..,..,..] of int64; a:Array[..] of longint; count:..] of longint; ans:int64; n,m:longint; proc ...
- (3)选择元素——(2)文档对象模型(The Document Object Model)
One of the most powerful aspects of jQuery is its ability to make selecting elements in the DOM easy ...