Pogledajte određenu poruku
Staro 27. 12. 2011.   #8
BraMom
Branimir Momcilovic
Qualified
 
Datum učlanjenja: 15.02.2006
Lokacija: Beograd
Poruke: 167
Hvala: 47
25 "Hvala" u 8 poruka
BraMom is on a distinguished road
Default

Da kao što je jablan napisao, kreiraš tabelu pa je napuniš vrednostima, može i iz excela ako hoćeš. Konkretno ovo što koristim na MSSQL-u izgleda ovako:

Kôd:
CREATE TABLE [dbo].[DimDate](
	[DimDateId] [int] IDENTITY(1,1) NOT NULL,
	[Period] [int] NOT NULL,
	[Date] [date] NOT NULL,
	[Year] [int] NULL,
	[Month] [int] NULL,
	[Week] [int] NULL,
	[SundayWeek] [int] NULL,
	[DayOfMonth] [int] NULL,
	[DayOfWeek] [int] NULL,
	[Quarter] [int] NULL,
	[DayName] [nvarchar](50) NULL,
	[MonthName] [nvarchar](50) NULL,
 CONSTRAINT [PK_DimDate] PRIMARY KEY CLUSTERED 
(
	[DimDateId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
Tabela je inicijalno popunjena ovakvim nekakvim skriptom:
Kôd:
CREATE PROCEDURE [dbo].[GetDimDate]
	@startDate DATETIME,
	@endDate   DATETIME
AS
BEGIN
	DECLARE @date DATETIME = @startDate
	SET DATEFIRST 1
	
	CREATE TABLE #dateDimension(
		[Period] [int] NOT NULL,
		[Date] [date] NOT NULL,
		[Year] [int] NULL,
		[Month] [int] NULL,
		[Week] [int] NULL,		
		[DayOfMonth] [int] NULL,
		[DayOfWeek] [int] NULL
	)
	
	WHILE (@date < @endDate)
	BEGIN
		INSERT INTO #dateDimension
		VALUES
		 (DATEPART(YEAR, @date),
		 @date,		 
		 DATEPART(YEAR, @date),
		 DATEPART(MONTH, @date),
         DATEPART(WEEK, @date),
         DATEPART(DAY, @date),
         DATEPART(WEEKDAY, @date)		 
         )
	    
		SET @date = DATEADD(DAY, 1, @date)
	END 

	SELECT * FROM #dateDimension
	
	DROP TABLE #dateDimension
END
Za potrebe reportinga / analysis servisa koristim view koji čita slogove do tekućeg i eventualno proračunava još neku kolonu, čisto da se korisnicima kad gledaju reporte / kocke ne bi pojavljivali neki datumi u budućnosti. U tabeli imam datume do 2020, mada je to proizvoljna odluka.

Dobar primer dimenzionog modela za Data Warehouse je Microsoftov AdventureWorksDW, tabela se zove DimTime, možeš da skineš bazu sa codeplex-a, mislim da je skriptovana, tako da uopšte ne moraš da instaliraš MSSQL:
http://sqlserversamples.codeplex.com/
__________________
Važnije je biti ljubazan, nego biti u pravu.
BraMom je offline   Odgovorite uz citat
"Hvala" BraMom za poruku: