微软BI 之SSAS 系列 - 自定义的日期维度设计( 二 )


【微软BI 之SSAS 系列 - 自定义的日期维度设计】
不带世纪数位(yy)带世纪数位 (yyyy)输入/输出-0 或 100mon dd yyyy hh:miAM(或 PM)11011 = mm/dd/yy101 = mm/dd/yyyy
21022 = yy.mm.dd102 = yyyy.mm.dd
31033= dd/mm/yy103 = dd/mm/yyyy
41044 = dd.mm.yy104 = dd.mm.yyyy
51055 = dd-mm-yy105 = dd-mm-yyyy
61066= dd mon yy106 = dd mon yyyy
71077 = Mon dd, yy107 = Mon dd, yyyy
8108hh:mi:ss-9 或 109mon dd yyyy hh:mi:ss:mmmAM(或 PM)1011010 = mm-dd-yy110 = mm-dd-yyyy
1111111 = yy/mm/dd111 = yyyy/mm/dd
1211212= yymmdd112 = yyyymmdd
-13 或 113ddmon yyyy hh:mi:ss:mmm(24h)14114dd mon yyyy hh:mi:ss:mmm(24h)-20 或 120yyyy-mm-dd hh:mi:ss(24h)-21 或 121yyyy-mm-ddhh:mi:ss.mmm(24h)-126yyyy-mm-ddThh:mi:ss.mmm(无空格)-127yyyy-mm-ddThh:mi:ss.mmmZ(无空格)-130dd mon yyyyhh:mi:ss:mmmAM-131dd/mm/yyyy hh:mi:ss:mmmAM



=====================================================IF OBJECT_ID('vDimDate','V') IS NOT NULLDROP VIEW vDimDateGOCREATE VIEW vDimDateAS-- 可以根据需要实现一些计算列,这些计算列通常也可以在 SSAS 视图中添加 。SELECT DateKey AS 'DateKey',FullDate AS 'FullDate',[DateName] AS 'DateName',CONVERT(VARCHAR(2),DayNumberOfMonth) + ' ' + EnglishMonthName + ' ' + CONVERT(CHAR(4), CalendarYear) AS 'FullDateName', -- 1 July 2005 DayNumberOfWeek AS 'DayNumberOfWeek',DayNameOfWeek AS 'DayNameOfWeek',DayNumberOfMonth AS 'DayNumberOfMonth',DayNumberOfYear AS 'DayNumberOfYear',CASE WHEN IsWeekend = 1 THEN 'Weekend' ELSE 'Weekday'END AS 'WeekdayWeekend',IsLeapYear AS 'IsLeapYear',WeekNumberOfYear AS 'WeekNumberOfYear',EnglishMonthName AS 'EnglishMonthName',EnglishMonthName + ' ' + CONVERT(CHAR(4),CalendarYear) AS 'MonthName',-- July 2005CalendarYear * 100 + MonthNumberOfYear AS 'MonthKey', -- 200507MonthNumberOfYear AS 'MonthNumberOfYear',CalendarQuarter AS 'CalendarQuarter',CalendarSemester AS 'CalendarSemester',CalendarYear AS 'CalendarYear',CalendarYear * 100 + CalendarQuarter AS 'CalendarQuarterKey',-- 200503'CY ' + CONVERT(CHAR(4),CalendarYear) AS 'CalendarYearName', -- CY 2005'CY ' + CONVERT(CHAR(4),CalendarYear) + ' Qtr ' + CONVERT(CHAR(1), CalendarQuarter) AS 'CalendarQuarterName', -- CY 2005 Qtr 3FiscalQuarter AS 'FiscalQuarter',FiscalSemester AS 'FiscalSemester',FiscalYear AS 'FiscalYear', FiscalYear * 100 + FiscalQuarter AS 'FiscalQuarterKey', -- 200601'FY ' + CONVERT(CHAR(4), FiscalYear) AS 'FiscalYearName',-- FY 2006'FY ' + CONVERT(Char(4), FiscalYear) + ' Qtr ' + Convert(Char(1), FiscalQuarter) AS 'FiscalQuarterName' -- FY 2006 Qtr 1FROM DimDateGO
在我的这个示例中,财年是以微软的财年为例子的 。比如2008年7月是自然月,但是财年就被称为2009财年的1月,它是从每年的7月开始算的 。下面的这幅图主要是展示了各个字段上时间日期的格式是以及字段类型等 。并且在后面设计维度的时候,我们往往选择 Key 会考虑使用整形数据字段,但是在 Name的时候就会使用具体的描述内容 。Type 后面也能看得到,它的主要作用是为具体的时间日期字段指定日期属性 。日期属性的指定能够让 SSAS Cube 在内部聚合的时候知道某个字段的含义,这个字段是描述日期,还是年还是月 。在 MDX 的时间相关的层级导航或者查询中,比如说 YTD() 函数的使用就跟设置属性为 Year 相关的维度属性相关,可以参考我的这篇MDX笔记 。
新建一个 SSAS 项目并创建好数据源和数据源视图,数据源视图中就是上面创建的视图 。
创建一个简单的时间维度,选择 ,并在 Key中选择 , Name选择。实际上,这里就一个属性,但是这个属性是由两部分组成的,一个是 KEY 一个是 NAME 。