• Increase font size
  • Default font size
  • Decrease font size
Home T-SQL Hoe maak ik een datumdimensie?

Hoe maak ik een datumdimensie?

E-mail Afdrukken
(5 stemmen)

coldfusion_1_zoom_128Datumdimensies zijn enorm handig. Door gebruik te maken van een datumdimensie kun je voor een datum bepalen in welke week deze datum valt, welk jaar, welke maand, of het een feestdag is, etc. Hieronder het script.

Let op; dit is een voorbeelddimensie. Je kunt hem uiteraard zelf verfraaien met velden die voor jou belangrijk zijn!

 


dd_dimdatum

Als we nu de datumdimensie aanmaken in de AdventureWorks database (dus niet het dwh van adventureworks) kun je de kracht zien. We gaan de datumdimensie joinen aan de OrderDate. Vervolgens kunnen we eenvoudig meerdere eigenschappen voor deze datum vinden!

SELECT TOP 100
 SOH.SalesOrderID,
 SOH.OrderDate,
 DD.DatumId,
 DD.WeekNummer,
 DD.MaandNummerVanJaar,
 DD.Kwartaal445Code,
 DD.Kwartaal445Nummer        
FROM Sales.SalesOrderHeader AS SOH
-- Hier zetten we de OrderDate om naar een integer en joinen hem met de Datum-dimensie DimDatum
LEFT OUTER JOIN DimDatum AS DD ON YEAR(SOH.OrderDate) * 10000 + MONTH(SOH.OrderDate) * 100 + DAY(SOH.OrderDate) = DD.DatumId

dd_adventureworks

 

Als bijlage bij dit artikel tref je een script aan om de datumdimensietabel te maken. Daarna een MS SQL Server stored procedure om de tabel te kunnen vullen.

Copyright 2008. All Rights Reserved.

Trackback(0)

TrackBack URI voor deze post

Commentaar (8)

RSS feed Commentaar
...
76
Huge script en zeer handig! Gecopied enzo voor verder gebruik smilies/smiley.gif
Mark Waterreus , februari 24, 2009
...
63
Sorry, ik kon hem niet verkleinen. Uiteraard hoef je niet alles te gebruiken maar het gaat om de opzet. En lekker in het Nederlands uiteraard. Misschien zijn er nog velden die generiek zijn die er in opgenomen kunnen worden, hoewel ik denk dat het meeste er wel inzit.smilies/wink.gif
Ronald Kraijesteijn , februari 24, 2009
...
0
Ziet er fantastisch uit! smilies/cheesy.gif Maar mis ik nou de functie Get_ISOWeekNo of zie ik hem over het hoofd?
Philippe Navarre , maart 13, 2009
...
62
Ik heb hem voor je erbij gezet, lukt het zo verder?
Administrator , maart 16, 2009
...
0
Ja, het is gelukt met de iso-weeknummers. Bedankt!
Philippe Navarre , april 24, 2009
...
0
... ziet er heel goed uit, maar ik krijg een foutmelding op de regel

INSERT INTO REF_Datum(

En dat is logisch, omdat die tabel nog niet bestaat?
Hennie Borrenbergs , maart 31, 2010
...
63
Ik heb 2 nieuwe scripts voor je klaargezet die moeten werken. Ook een die de tabel aanmaakt.
grts. Ronald
Ronald Kraijesteijn , maart 31, 2010
...
0
..Dat werkt perfect! dank je!
Ik had zelf een tijdje geleden al ergens een script gedownload en aangepast, maar die was in het engels en zonder alle vakantiedagen. Nou zijn daar ook wel weer scripts voor te vinden, maar dit is toch beter en gemakkelijker.

Overigens heb ik er nog wat kolommen aan toegevoegd die ik fijn vind om mee te werken zoals de string jaarmaand 20010M04, bij jaarkwartaal 2010Q2, dan ziet de gebtuiker in 1 oogopslag dat het een maand of kwartaal betreft, en de sortering blijft automatisch goed gaan.

En: In SQL 2008 is de functie isoww opgenomen, dus nu volstaat datepart(isoww, ), heel handig!

Nogmaals dank!
Hennie Borrenbergs , april 01, 2010

Schrijf commentaar

kleiner | groter
security image
Schrijf de volgende tekens

busy