terça-feira, 20 de dezembro de 2011

A dimensão Hora do Dia no Data Warehouse

Em determinados casos é necessário analisar a hora em que ocorrem determinados factos. Apenas o dia, pela dimensão Data, não é suficiente. Por exemplo no caso de uma venda, para saber a que horas do dia ocorrem mais vendas.
Torna-se assim criar a dimensão Hora do Dia, ou dimensão Tempo, cuja granularidade será o minuto. No inglês seria "Time-of-day" ou só "Time". Em português vou utilizar o termo Hora do Dia.

Assim a dimensão Hora do Dia terá os seguintes campos:

Continuar a ler em www.blogdorui.pt

Um comentário:


  1. DROP TABLE #DIM_HORA
    CREATE TABLE #DIM_HORA(
    ID_DIM_HORA VARCHAR(4) NOT NULL PRIMARY KEY,
    HORA smallint NOT NULL,
    MINUTO smallint NOT NULL,
    PERIODO varchar(15) NOT NULL
    )

    DECLARE @ID_DIM_HORA VARCHAR(4)
    DECLARE @HORA smallint
    DECLARE @MINUTO smallint
    DECLARE @PERIODO varchar(15)

    DECLARE @countHora SMALLINT
    DECLARE @countMinuto SMALLINT

    SET @countHora = 0
    SET @countMinuto = 0

    WHILE @countHora <= 23
    BEGIN
    SET @HORA = @countHora
    SET @countMinuto = 0
    WHILE @countMinuto < 60
    BEGIN
    SET @MINUTO = @countMinuto

    SET @ID_DIM_HORA = REPLICATE('0', 2 - LEN(CONVERT(VARCHAR(2),@HORA))) + RTrim(CONVERT(VARCHAR(2),@HORA)) + REPLICATE('0', 2 - LEN(CONVERT(VARCHAR(2),@MINUTO))) + RTrim(CONVERT(VARCHAR(2),@MINUTO))

    SET @PERIODO =
    CASE
    WHEN @HORA >= 0 AND @HORA < 6 THEN 'MADRUGADA'
    WHEN @HORA >= 6 AND @HORA < 12 THEN 'MANHÃ'
    WHEN @HORA >= 12 AND @HORA < 18 THEN 'TARDE'
    WHEN @HORA >= 18 AND @HORA < 24 THEN 'NOITE'
    END
    INSERT INTO #DIM_HORA(ID_DIM_HORA,HORA,MINUTO,PERIODO)
    SELECT @ID_DIM_HORA, @HORA, @MINUTO, @PERIODO

    SET @countMinuto = @countMinuto+1
    END
    SET @countHora = @countHora+1
    END

    INSERT INTO #DIM_HORA values ('9999', -2,-2,'NÃO CADASTRADO');
    INSERT INTO #DIM_HORA values ('9998', -1,-1,'NÃO SE APLICA');


    SELECT
    dh.ID_DIM_HORA,
    dh.HORA,
    dh.MINUTO,
    dh.PERIODO
    FROM
    #DIM_HORA dh

    ResponderExcluir