5.2.3、SSAS-维度-日期维度
来源:互联网 发布:淘宝闪电付款 编辑:程序博客网 时间:2024/04/30 12:03
维度-日期维度的建立
1 日期维度
日期维度存在于几乎所有的Cube中,它是最最普遍和最重要的维度之一。
要创建日期维度,首先需要创建一个日期维度表,并编写填充数据的存储过程。
日期维度表DimDate如下:
drop table DimDate
create table DimDate
(
DateKey int primarykey,
FullDate date,
DayNumOfWeek int,
DayNameOfWeeknvarchar(100),
IsWeekEndnvarchar(100),
DayNumOfMonth int,
DayNameOfMonthnvarchar(100),
DayNumOfYear int,
DayNameOfYearnvarchar(100),
IsHolidaynvarchar(100),
DayDesc nvarchar(100),
WeekNumOfYear int,
WeekNameOfYearnvarchar(100),
MonthNumOfYear int,
MonthNameOfYearnvarchar(100),
QuarterNumOfYear int,
QuarterNameOfYearnvarchar(100),
SemesterNumOfYear int,
SemesterNameOfYearnvarchar(100),
YearNum int,
YearName nvarchar(100)
)
填充日期维度数据的存储过程如下:
declare @beginDate date
,@endDate date
set @beginDate='2013-01-01'
set @endDate='2020-01-01'
while(@beginDate<@endDate) begin
insert into DimDate(
DateKey,FullDate, DayNumOfWeek, DayNameOfWeek, IsWeekEnd, DayNumOfMonth, DayNameOfMonth
,DayNumOfYear,DayNameOfYear, WeekNumOfYear, WeekNameOfYear, MonthNumOfYear, MonthNameOfYear
,QuarterNumOfYear,QuarterNameOfYear, SemesterNumOfYear, SemesterNameOfYear, YearNum, YearName
)
selectCAST(CONVERT(VARCHAR(8),@beginDate,112) AS INT) AS DateKey
,@beginDate FullDate
,DATEPART(DW,@beginDate) AS DayNumOfWeek
,N'周'+cast(DATEPART(DW,@beginDate)as nvarchar) AS DayNameOfWeek
,case when DATEPART(DW,@beginDate) in(6,7)then N'是' else N'否' end IsWeekEnd
,DATEPART(DD,@beginDate) AS DayNumOfMonth
,cast(DATEPART(DD,@beginDate) as nvarchar)+N'日' ASDayNameOfMonth
,DATENAME(DY,@beginDate) AS DayNumOfYear
,N'第'+cast(DATENAME(DY,@beginDate)as nvarchar)+N'日' AS DayNameOfYear
,DATEPART(WW,@beginDate) AS WeekNumOfYear
,N'第'+cast(DATENAME(WW,@beginDate)as nvarchar)+N'周' AS WeekNameOfYear
,DATEPART(MM,@beginDate) AS MonthNumOfYear
,cast(DATENAME(MM,@beginDate) as nvarchar)+N'月' ASMonthNameOfYear
,DATEPART(QQ,@beginDate) AS QuarterNumOfYear
,cast(DATEPART(QQ,@beginDate) as nvarchar)+N'季度' ASQuarterNameOfYear
,case when DATENAME(MM,@beginDate) between 1and 6 then 1 else 2 end SemesterNumOfYear
,case when DATENAME(MM,@beginDate) between 1and 6 then N'上半年' else N'下半年' end SemesterNameOfYear
,DATEPART(YY,@beginDate) YearNum
,cast(DATEPART(YY,@beginDate) as nvarchar)+N'年' YearName
set@beginDate=dateadd(dd, 1, @beginDate)
end
2 创建日期维度
维度-》右键-》新建维度-》使用现有表-》数据源视图“AdventureWorksDW”-》主表“DimDate”-》键列“DateKey”-》名称列“FullDate”-》下一步-》勾选所有不带Name的属性(带Name的属性将作为NameColumn的值)-》修改维度各个属性的NameColumn-》处理-》查看数据,可以看到各个属性的成员值都变成了名称列的值
建立层次结构,由于时间可以构建非常复杂的层次结构,在此我们列出一些常用的层次结构,其它层次结构可以根据具体的情况来建立。
l 年-月-日
l 年-季-月
l 年-周
l 年-月
l 年-半年-月
l 年-月-周
l 年-半年-季
l 年-季-月
l 周-日
建立好层次结构后,就可以处理了,然后进行查看。这里为什么不建立匹配的属性关系呢?因为会报错,我也不知道为什么报错,请大神指教,为了不报错,所以我建立的是默认的星型属性关系。这样可以随意建立层次结构而不报错。
处理后,查询各个层次结构的数据。
- 5.2.3、SSAS-维度-日期维度
- 5.2、SSAS-维度-基本知识
- 5.2.1、SSAS-维度-雪花维度
- 5.2.2、SSAS-维度-父子维度
- 5.2.2.1、SSAS-维度-父子维度改宽表维度
- SSAS维度设计技巧
- SSAS建立父子维度
- SSAS日期维度部署出错, 出现重复属性键
- SSAS对称维度与非对称维度
- 5.2.4、SSAS-维度-多对多维度
- 维度
- Oracle生成日期维度表
- SSAS事实表和维度表数据类型必须一致
- SSAS SCDS:没有数据显示活跃的维度成员
- SSAS中是否可以使用度量值作为维度?
- SSAS维度成员中的非法XML字符[转]
- oracle_日期维度表插入数据
- Sqlserver存储过程生成日期维度
- 5.2.2、SSAS-维度-父子维度
- 浅析Java中的final关键字
- MondoDB介绍 Python与MongoDB用法,安装PyMongo
- 微信JS-SDK接口操作
- 【Codeforces Round 273 (Div 2)B】【贪心】 Random Teams n人分m组,可形成的最小朋友数和最大朋友数
- 5.2.3、SSAS-维度-日期维度
- Summary Ranges
- linux下基于TCP协议的多线程聊天室的搭建
- Cocos2d-x之可拉伸图片
- 清除行列(程序员面试金典)
- 年末盛典-点亮你心中的CSDN 2015博客之星
- adb adb devices offline 快速解决的办法,android adb 连接失败
- log count
- EXT4文件组织 - EXT4文件系统详解2