How do I join a SCD in my OLAP cube?

  • I have a table in my data warehouse that has data on employees using a startdate - enddate style slowly changing dimension. I want to use this data in my OLAP cube, but i'm not entirely sure what or how to connect this in my DSV. The joins are 1-1 and you can't specify >= <= style joins.

    I know i'm missing something, but need your collective expertise. please help!

  • You will have dimension surrogate key (say DSK) in dimension and same key will be in fact also. So if you join fact and dimension on the same DSK then you will get exact one row match. No need to specify start date and end date conditions.

    Please elaborate you issue if it doesn't solve your issue.

  • amit_gupta01 (1/12/2011)


    You will have dimension surrogate key (say DSK) in dimension and same key will be in fact also. So if you join fact and dimension on the same DSK then you will get exact one row match. No need to specify start date and end date conditions.

    Please elaborate you issue if it doesn't solve your issue.

    Ok let me give you a view of the table.

    USE [csc_storage]

    GO

    /****** Object: Table [dbo].[sourceid] Script Date: 01/12/2011 13:13:19 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    SET ANSI_PADDING ON

    GO

    CREATE TABLE [dbo].[sourceid](

    [sourceid] [nvarchar](255) NOT NULL,

    [ContractHours] [numeric](5, 0) NULL,

    [Alternative1] [nvarchar](255) NULL,

    [Alternative2] [nvarchar](255) NULL,

    [AIS_AgentName] [nvarchar](255) NULL,

    [WFM_AgentName] [nvarchar](100) NULL,

    [Alternative5] [nvarchar](255) NULL,

    [Alternative6] [nvarchar](255) NULL,

    [Alternative7] [nvarchar](255) NULL,

    [Alternative8] [nvarchar](255) NULL,

    [Alternative9] [nvarchar](255) NULL,

    [DateStart] [datetime] NULL,

    [DateEnd] [datetime] NULL,

    [ActiveStatus] [varchar](50) NULL,

    CONSTRAINT [PK_sourceid] PRIMARY KEY CLUSTERED

    (

    [sourceid] ASC

    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF

    GO

    ALTER TABLE [dbo].[sourceid] WITH CHECK ADD CONSTRAINT [FK_sourceid_sourceid] FOREIGN KEY([sourceid])

    REFERENCES [dbo].[sourceid] ([sourceid])

    GO

    ALTER TABLE [dbo].[sourceid] CHECK CONSTRAINT [FK_sourceid_sourceid]

    That is for the employee table. The date dimension is

    USE [csc_storage]

    GO

    /****** Object: Table [Dim].[Time1] Script Date: 01/12/2011 13:14:28 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    CREATE TABLE [Dim].[Time1](

    [PK_Date] [datetime] NOT NULL,

    [Date_Name] [nvarchar](50) NULL,

    [Year] [datetime] NULL,

    [Year_Name] [nvarchar](50) NULL,

    [Month] [datetime] NULL,

    [Month_Name] [nvarchar](50) NULL,

    [Week] [datetime] NULL,

    [Week_Name] [nvarchar](50) NULL,

    [Day_Of_Year] [int] NULL,

    [Day_Of_Year_Name] [nvarchar](50) NULL,

    [Day_Of_Month] [int] NULL,

    [Day_Of_Month_Name] [nvarchar](50) NULL,

    [Day_Of_Week] [int] NULL,

    [Day_Of_Week_Name] [nvarchar](50) NULL,

    [Week_Of_Year] [int] NULL,

    [Week_Of_Year_Name] [nvarchar](50) NULL,

    [Month_Of_Year] [int] NULL,

    [Month_Of_Year_Name] [nvarchar](50) NULL,

    CONSTRAINT [PK_Time1] PRIMARY KEY CLUSTERED

    (

    [PK_Date] ASC

    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    ) ON [PRIMARY]

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'PK_Date'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Date' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'PK_Date'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Date_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Date_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Date_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Year' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Year_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Month' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Month_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Week' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Week_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Year' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Year_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Month'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Month' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Month'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Month_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Month_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Month_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Week'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Week' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Week'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Week_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Day_Of_Week_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Day_Of_Week_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Week_Of_Year' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Week_Of_Year_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Week_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Month_Of_Year' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Of_Year'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVColumn', @value=N'Month_Of_Year_Name' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'COLUMN',@level2name=N'Month_Of_Year_Name'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1'

    GO

    EXEC sys.sp_addextendedproperty @name=N'DSVTable', @value=N'Time' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1'

    GO

    EXEC sys.sp_addextendedproperty @name=N'Project', @value=N'7892dc61-8e47-406f-92d3-6181822a9eca' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1'

    GO

    EXEC sys.sp_addextendedproperty @name=N'AllowGen', @value=N'True' , @level0type=N'SCHEMA',@level0name=N'Dim', @level1type=N'TABLE',@level1name=N'Time1', @level2type=N'CONSTRAINT',@level2name=N'PK_Time1'

    Let's say in the DSV I link start date of sourceid table to PK_Date of the Time1 table, then that will only show records of when an employee has started. In the DSV I cannot link using, say, StartDate >= PKDate AND EndDate <= PKDate. I am quite new to this, I know lots of people use date ranged SCD's so I guess it's something simple that i'm missing, or perhaps even a design problem. I can change the design should it be required.

    Thanks for helping

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply