`
bingyu
  • 浏览: 42134 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

创建时间维度表的存储过程

阅读更多

在建立BI数据仓库时,时常需要用到时间维度,通过存储过程一次性批量生成,语句如下:

 

create PROCEDURE [dbo].[Create_time_by_day_dimension]

    -- Add the parameters for the stored procedure here

AS

BEGIN

    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

SET NOCOUNT ON;

begin try

drop table [time_by_day_dimension]

end try

begin catch

end catch

CREATE TABLE [dbo].[time_by_day_dimension] (

  [time_id] [int] IDENTITY (1, 1) NOT NULL ,

  [the_date] [datetime] NULL ,

  [the_day] [nvarchar] (15) NULL ,

  [the_month] [nvarchar] (15) NULL ,

  [the_year] [smallint] NULL ,

  [day_of_month] [smallint] NULL ,

  [week_of_year] [smallint] NULL ,

  [month_of_year] [smallint] NULL ,

  [quarter] [nvarchar] (2) NULL ,

  [fiscal_period] [nvarchar] (20) NULL

) ON [PRIMARY]

DECLARE @WeekString varchar(12),

@dDate SMALLDATETIME,

@sMonth varchar(20),

@iYear smallint,

@iDayOfMonth smallint,

@iWeekOfYear smallint,

@iMonthOfYear smallint,

@sQuarter varchar(2),

@sSQL varchar(100),

@adddays int


SELECT @adddays = 1 --日期增量(可以自由设定)

SELECT @dDate = '01/01/2008' --开始日期


WHILE @dDate < '12/31/2011' --结束日期

BEGIN


  SELECT @WeekString = DATENAME (dw, @dDate)

  SELECT @sMonth=DATENAME(mm,@dDate)

  SELECT @iYear= DATENAME (yy, @dDate)

  SELECT @iDayOfMonth=DATENAME (dd, @dDate)

  SELECT @iWeekOfYear= DATENAME (week, @dDate)

  SELECT @iMonthOfYear=DATEPART(month, @dDate)

  SELECT @sQuarter = 'Q' + CAST(DATENAME (quarter, @dDate)as varchar(1))

  INSERT INTO time_by_day_dimension(the_date, the_day, the_month, the_year,

  day_of_month,

  week_of_year, month_of_year, quarter) VALUES

  (@dDate, @WeekString, @sMonth, @iYear, @iDayOfMonth, @iWeekOfYear,

  @iMonthOfYear, @sQuarter)

  SELECT @dDate = @dDate + @adddays

END

END 

 

转自:http://www.cnblogs.com/Bany/archive/2011/01/20/1940607.html

 

分享到:
评论

相关推荐

    生成时间维度表的存储过程

    使用存储过程来创建时间维度表有以下优点: - **性能优化**:预编译的代码执行速度更快。 - **代码重用**:一次编写,多次调用。 - **安全性**:可以通过权限控制限制对敏感数据的访问。 - **封装复杂逻辑**:将...

    数据仓库日期维度表创建存储过程

    创建日期维度表的存储过程是数据仓库建模过程中的一个步骤,它通过执行SQL脚本来自动填充这个表。 在提供的文件中,我们可以看到有三个不同的SQL文件,分别对应于不同的数据库管理系统: 1. `sp_dim_date.sql`: 这...

    Data Service-创建一个时间维度表.docx

    SAP Data Service 创建时间...使用 SAP Data Service 创建时间维度表需要经过多个步骤,但整个过程都是可控的和灵活的。用户可以根据自己的需求设置时间维度表的开始和结束时间、增量等属性,并添加其他属性和主键。

    时间维度生成程序

    在这个案例中,"Time_DDL.sql"很可能包含了创建时间维度表的SQL脚本,定义了表的结构、字段和约束,确保能够存储所需的各种时间格式。 文件"Time_Dim.PackageBody.sql"和"Time.Dim.Package.sql"可能涉及到PL/SQL包...

    PL_SQL生成时间维度表

    #### 二、PL/SQL创建时间维度表 根据给定的部分内容,我们可以看到一个PL/SQL脚本,该脚本用于创建一个名为`DIM_TIME`的时间维度表,并填充相应的数据。下面将对脚本中的每个部分进行详细解析: ##### 表结构定义 ...

    PL_SQL生成日期维度表

    以上过程展示了如何使用 PL/SQL 在 Oracle 数据库中创建并填充一个日期维度表。这样的维度表可以极大地简化对时间序列数据的处理和分析,提高数据仓库系统的性能和效率。通过自定义过程,可以根据具体的应用场景调整...

    BIEE 中间层创建维度

    首先,创建时间维度与创建其他普通维度的过程基本相似,都是基于逻辑表(即数据源中的表或视图)来构建。在这个例子中,我们以名为"Date Dim"的逻辑表作为基础,创建一个名为"Date"的维度对象。为了实现前端的钻取...

    图解使用ORACLE存储过程创建时间维表.doc

    总结来说,本文档展示了如何使用Oracle存储过程创建一个包含时间维度信息的表,并提供了计算日期在月份和年份中周数的函数。这为数据分析提供了强大的工具,帮助用户更好地理解和分析时间序列数据。

    cognos framework manager 创建维度和测度

    在维度建模,数据存储在两种表中。一种是 Dimension 表,一种是 Fact 表。Fact 表包含业务的衡量指标(比如本例中的 Revenue),而 Dimension 表则包含计算衡量指标所基于的维度(比如 Products、Regions 和 Year)...

    维度建模基本规则

    确保时间维度的完整性和准确性是进行时间序列分析的基础。 ### 规则4:单一事实表中的事实具有相同粒度 事实表中的所有数据项应具有相同的细节水平或粒度。例如,不应在同一事实表中混合存储月度汇总数据和日度...

    Informatica的缓慢维度变化

    缓慢维度变化的定义是指在维度表中,随着时间的推移,数据的变化是渐进的,而不是突变的。这种变化是指维度表中的数据逐渐变化,而不是突然变化。缓慢维度变化可以分为三种类型:keep most recent values in target...

    维度和多维数据集的创建

    4. **多维数据集创建**:启动多维数据集向导,选择数据源视图,自动检测事实表和维度表,映射时间维度属性,选择度量值,检查维度层次结构。 - 时间维度映射:将Year属性映射到CalendarYear列,HalfYear属性映射到...

    数据仓库-关于数据仓库维度数据处理的方法探究系列

    以上示例展示了如何创建一个简单的维度表,并通过存储过程进行数据的初始化或更新操作。需要注意的是,实际应用中可能还需要考虑到更多的细节,比如数据的有效期管理、版本控制等。 ### 总结 在数据仓库的设计和...

    数据仓库维度建模笔记

    审计维度用于跟踪数据的变化情况,包括创建时间、更新时间等,这对于数据治理和合规性非常重要。 **14. 多值维度解决方案** 对于需要表示多个值的维度属性,可以通过额外的维度表或特殊的数据结构来解决。 **15. ...

    数据仓库工具箱:维度建模的完全指南.rar

    5. **维表设计**:掌握如何创建和维护维度表,包括层次结构的构建、键值和属性的定义,以及时间维的特殊处理。 6. **事实表设计**:理解如何设计事实表,包括选择合适的事实类型(如累计事实、事务事实、时期事实等...

    Report Studio中制作基于维度模型的报表,并允许上下钻取

    假设我们正在创建一个销售报表,其中包含时间维度。如果错误地拖动了“时间”维度的顶级节点,那么在报表中将无法实现钻取至具体日期或时间区段的功能。正确的做法是,选择并拖放时间维度下的具体层级,如“年”、...

    数据仓库建模 Powerdesigner 维度建模 软件分析 建模 视频教程

    2. **定义维度表**: 维度表描述了观察事实的角度,例如时间维度、地理位置维度等。PowerDesigner提供了便捷的工具来设计这些表,并支持层次结构的建立。 3. **关系连接**: 在PowerDesigner中,可以轻松地定义事实表...

Global site tag (gtag.js) - Google Analytics