行列置换数据展现方式(多维数据集方案)

   经常看到一部分朋友在网上询问交叉表(行列置换)解决方案,一般习惯利用动态SQL或者是Case When 技巧处理,比较复杂的行列置换,用的动态SQL也比较复杂难于理解. 然而多维数据集能非常简单的处理复杂的交叉表和统计数据.
以下举一个项目管理销售的例子,来看用多维数据处理交叉表。
具备以下条件:
A、数据仓库(维度表信息、事实表信息)
B、数据库关系图
C、OLAP模型设计
D、利用AnalyZer工具做多维数据展现。

1、数据仓库建立和普通数据库差不多,以下以“ProjectManageDW"命名建立数据仓库,相关表结构如下:
    其中维度包括:城市、时间、天气、项目。指标包括:产品的销售价格。(维度和主题也是业务系统的分析主题)

-- 维度表(城市信息)
CREATE   TABLE  DimCity(CityId  INT , CityName  VARCHAR ( 200 ))
GO
INSERT   INTO  DimCity(CityID,CityName)
SELECT   1 , ' 北京 '
UNION   ALL
SELECT   2 , ' 上海 '
UNION   ALL
SELECT   3 , ' 鞍山 '
UNION   ALL
SELECT   4 , ' 常德 '
UNION   ALL
SELECT   5 , ' 武汉 '
UNION   ALL
SELECT   6 , ' 重庆 '
UNION   ALL
SELECT   7 , ' 天津 '
UNION   ALL
select   8 , ' 蚌埠 '
UNION   ALL
select   9 , ' 深圳 '
UNION   ALL
select   10 , ' 武昌 '
UNION   ALL
SELECT   11 , ' 长沙 '
GO
-- 维度表(项目信息)
CREATE   TABLE  DimProject(ProjectID  int ,ProjectName  varchar ( 20 ))
GO
INSERT   INTO  DimProject(ProjectID,ProjectName)
SELECT   1 , ' 防汛抗旱指挥系统 '
UNION   ALL
SELECT   2 , ' 水质分析评价系统 '
UNION   ALL  
SELECT   3 , ' 股票预测系统 '
UNION   ALL
SELECT   4 , ' 二维码集成系统 '
UNION   ALL  
SELECT   5 , ' 雨水情GIS查询系统 '
UNION   ALL
SELECT   6 , ' BI多维数据分析系统 '
UNION   ALL
SELECT   7 , ' 办公OA系统 '
UNION   ALL
SELECT   8 , ' 公安部网站 '
UNION   ALL
SELECT   9 , ' 爬虫软件 '
UNION   ALL
SELECT   10 , ' 鞍山诚信评价系统 '
GO

-- 维度表(销售时间)
CREATE   TABLE  DimTime(TimeID  INT ,Date  DATETIME )
GO
INSERT   INTO  DimTime(TimeID,Date)
select   1 , ' 2003-07-07 00:00:00.000 '
union   all
select   2 , ' 2003-10-20 00:00:00.000 '
union   all
select   3 , ' 2003-12-04 00:00:00.000 '
union   all
select   4 , ' 2004-01-12 00:00:00.000 '
union   all
select   5 , ' 2004-03-10 00:00:00.000 '
union   all
select   6 , ' 2004-06-12 00:00:00.000 '
union   all
select   7 , ' 2004-09-10 00:00:00.000 '
union   all
select   8 , ' 2004-11-02 00:00:00.000 '
union   all
select   9 , ' 2005-06-13 00:00:00.000 '
union   all
select   10 , ' 2005-12-05 00:00:00.000 '
union   all
select   11 , ' 2006-09-02 00:00:00.000 '
union   all
select   12 , ' 2007-01-14 00:00:00.000 '
union   all
select   13 , ' 2007-12-03 00:00:00.000 '
union   all
select   14 , ' 2008-03-21 00:00:00.000 '
GO

-- 维度表(天气信息)
CREATE   TABLE  DimWeather(WeatherID  int , WeatherDetail  VARCHAR ( 200 ))
GO
INSERT   INTO  DimWeather(WeatherID,WeatherDetail)
SELECT   1 , ' '
UNION   ALL
SELECT   2 , ' 阴天 '
UNION   ALL
SELECT   3 , ' 大风 '
UNION   ALL
SELECT   4 , ' 小雪 '
UNION   ALL
SELECT   5 , ' 沙尘暴 '
UNION   ALL
SELECT   6 , ' 多云转晴 '
UNION   ALL
SELECT   7 , ' '
UNION   ALL
SELECT   8 , ' 晴转多云 '
UNION   ALL
SELECT   9 , ' 雾有风 '
UNION   ALL
SELECT   10 , ' 大雪转雨加雪 '
UNION   ALL
SELECT   11 , ' 多云转阴 '
UNION   ALL
SELECT   12 , ' 多云 '
UNION   ALL
SELECT   13 , ' 雾转多云 '
UNION   ALL
SELECT   14 , ' 多云风力三四级 '


-- 事实表(销售事实数据)

CREATE   TABLE  FacSaleSoft(SaleID  int ,CityID  Int ,ProjectID  INT ,TimeID  INT ,WeatherID  INT ,SalePrice  float )
GO
INSERT   INTO  FacSaleSoft (SaleID,CityID,ProjectID,TimeID,WeatherID,SalePrice)
SELECT   1 , 1 , 1 , 1 , 1 , 200000.00
UNION   ALL
SELECT   2 , 1 , 3 , 11 , 2 , 300000.00
UNION   ALL
SELECT   3 , 1 , 4 , 13 , 4 , 20000.00
UNION   ALL
SELECT   4 , 1 , 6 , 9 , 3 , 15000.00
UNION   ALL
SELECT   5 , 1 , 8 , 6 , 8 , 30000.00
UNION   ALL
SELECT   6 , 1 , 9 , 12 , 9 , 5000.00
UNION   ALL
SELECT   7 , 2 , 2 , 10 , 5 , 300000.00
UNION   ALL
SELECT   8 , 3 , 10 , 11 , 14 , 150000.00
UNION   ALL
SELECT   9 , 4 , 10 , 8 , 13 , 50000.00
UNION   ALL
SELECT   10 , 5 , 5 , 3 , 4 , 200000.00
UNION   ALL
SELECT   11 , 6 , 5 , 6 , 7 , 100000.00
UNION   ALL
SELECT   12 , 7 , 2 , 2 , 6 , 80000.00
UNION   ALL
SELECT   13 , 8 , 2 , 4 , 10 , 200000.00

2、数据库关系图建立
     数据库关系图主要是指维度数据和指标数据之间的关系,由于建维度和指标关系时,必须提供表的主键,所以此时,把表的主键补充完整(表的主键建立比较简单,此时略) 如下图:

    从此关系模式中,很容易看它的采用的是数据仓库中的“雪花模型”。

3、关于OLAP设计。
     a、用VS.NET 建立一个Analysis Services 项目。命名为“ProjectManageOlap“     
     b、配置数据源。成功后,如下图:

          c、配置数据源视图,一般都选择默认的事实表、维度表即可。(注意:如果分析的业务系统比较复杂,可以在关系图组织中,根据销售主题分出多个关系图。)
          如下图:

        d、建分析的维度、分析指标(度量值组)。注意:可以更改维度用法来改变维度和度量值组的关系、可以根据MDX计算方法,计算比较复杂的报表。这些用法在以后文章中介绍。
             此时OLAP设计基本上完成。

      3、AnalyZer多维数据展现。
          a、按照城市名称、项目名称,统计产品销售价格报表如下:

            b、项目名称、天气情况,统计产品销售价格情况如下:

        c、按照城市、销售时间、销售产品,各产品销售价格统计如下图:

    说明,AnalyZer工具提供报表计算、各种统计图、行列比计算、维度排序,等非常多的功能支持,有兴趣的朋友可以了解该工具。

总结:
      SQL Server 2005 中多维数据分析可以根据不同的主题,分析不同的数据结果。在做数据仓库项目中,首先必须分析需求设计的主题(包括维度、分析指标),其次就可以在OLAP中做多维数据分析。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将MiniImageNet替换为自己的数据集是一项重要的任务,可以通过以下步骤来完成: 1. 收集数据:首先,需要收集自己的数据集。这可以包括从互联网上下载图片、从摄像机或移动设备中采集照片等。 2. 数据预处理:对收集到的数据进行预处理,以便与MiniImageNet的数据格式相匹配。这可能包括将图片调整为统一尺寸、将图像转换为灰度或彩色图像等。 3. 划分数据集:将数据集划分为训练集、验证集和测试集。可以按照类别随机划分,确保每个类别在各个数据集中都有合理的表示。 4. 数据增强:为了增加数据集的多样性和鲁棒性,可以应用数据增强技术,如随机旋转、平移、翻转等,来扩充数据集。 5. 构建模型:选择适合自己数据集的模型架构,可以参考MiniImageNet使用的模型,如卷积神经网络(CNN)等。 6. 训练模型:使用训练集对模型进行训练,通过反向传播算法优化模型权重和偏置,以提高模型效果。 7. 验证和调优:使用验证集评估模型性能,并根据结果进行调整和优化。可以尝试不同的超参数和网络结构,以找到最佳的组合。 8. 模型评估:最后,使用测试集对最终模型进行评估,得到模型在自己数据集上的准确性和性能指标。 通过以上步骤,可以将MiniImageNet替换为自己的数据集,并使用自己的数据集来进行模型训练和评估。这样可以根据自己的需求和特定领域的问题来构建适合的模型,并获得更好的性能和效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值