Sean's profileThe 7th (Sean Dai's Proj...BlogListsSkyDrive Tools Help

Blog


    06 December

    Extend the OLAP cube for week in Time dimension

    By default, the OLAP cube of project server does not have week in time dimension.  However, in real world, week is important.  To add week into time dimension, we need to extend the standard OLAP cube building process.
     
    In fact, the MSP_CUBE_TIME_BY_DAY table has already had week number in it.  We can use it to create a new level in time dimension.  However, to have more friendly interface, you may create additional column in MSP_CUBE_TIME_BY_DAY table as the display of the week level. 
     
    To extend the week, you need to do the following:
    1. For all physical cube, delete time dimension if used and remember all the cube name.
    2. For all virtual cube, delete time dimension if used and remember all the cube name.
    3. Delete the time dimension
    4. Create a new time dimension and create six levels of it.
    5. Add the time dimension into the physical cube of step 1.
    6. Add the time dimension into the virtual cube of step 2.
     
    There is one thing you may need to know.  When you remove or add a dimension from a physical cube, you need to reconstruct the join clause. 
     
    Here is the source code in VB6 for SQLServer 2000 database.  If your database is SQLServer 2005, it may be a little different.
     
    ' Modify the time dimension to insert week of month.
    Public Function ModifyTimeDimension(dsoDatabase As DSO.MDStore)
        Dim dsoDimension As DSO.Dimension
        Dim dsoLevelAll As DSO.DbLevel
        Dim dsoLevel As DSO.Level
        Dim strDimensionName As String
        Dim strDimensionTableName As String
        Dim dsoCube As DSO.MDStore
        Dim DicCubes As Dictionary
        Dim fSuccess As Boolean
        Dim jcJoin As JoinClauseManager
        Dim Condition As JoinClause
        Dim nPos  As Integer
       
        fSuccess = False
       
        On Error GoTo LblErrorHandler
       
        strDimensionName = "Time"
        strDimensionTableName = "MSP_CUBE_TIME_BY_DAY"
       
        Set DicCubes = New Dictionary
        Set jcJoin = New JoinClauseManager
       
        If dsoDatabase.Dimensions.Find(strDimensionName) Then
            For nPos = 1 To dsoDatabase.MDStores.Count
                Set dsoCube = dsoDatabase.MDStores(nPos)
                If dsoCube.Dimensions.Find(strDimensionName) And dsoCube.SubClassType = sbclsRegular Then
                    Call DicCubes.Add(dsoCube.Name, dsoCube.Name)
                    dsoCube.Dimensions.Remove (strDimensionName)
                   
                    Call jcJoin.LoadJoinClause(dsoCube.JoinClause)
                    Call jcJoin.RemoveJoinCondition(TrimQuate(dsoCube.SourceTable), "TIME_ID", strDimensionTableName, "TIME_ID")
                    Call jcJoin.RemoveJoinCondition(TrimQuate(dsoCube.SourceTable), "TIME_DATE", strDimensionTableName, "TIME_DATE")
                    dsoCube.JoinClause = jcJoin.GetJoinClause
                    dsoCube.Update
                    dsoCube.Process processFull
               End If
            Next nPos
           
            For nPos = 1 To dsoDatabase.MDStores.Count
                Set dsoCube = dsoDatabase.MDStores(nPos)
                If dsoCube.Dimensions.Find(strDimensionName) And dsoCube.SubClassType = sbclsVirtual Then
                    Call DicCubes.Add(dsoCube.Name, dsoCube.Name)
                    dsoCube.Dimensions.Remove (strDimensionName)
                   
                    dsoCube.Update
                    dsoCube.Process processFull
               End If
            Next nPos
            dsoDatabase.Dimensions.Remove (strDimensionName)
        End If
       
        Set dsoDimension = dsoDatabase.Dimensions.AddNew(strDimensionName, sbclsRegular)
        
        Set dsoDimension.DataSource = dsoDatabase.DataSources(1)
        dsoDimension.FromClause = """" & strDimensionTableName & """"
       
        Set dsoLevelAll = dsoDimension.Parent.Parent.CreateObject(clsDatabaseLevel)
           
        dsoLevelAll.Name = "All"
        dsoLevelAll.IsAll = True
       
        If dsoDimension.Levels.Count > 0 Then
            Call dsoDimension.Levels.Add(dsoLevelAll, , 1)
        Else
            Call dsoDimension.Levels.Add(dsoLevelAll)
        End If
         
        dsoLevelAll.MemberKeyColumn = "All Years"
        dsoLevelAll.LevelType = levAll
       
        Set dsoLevel = dsoDimension.Levels.AddNew("Year", sbclsRegular)
        dsoLevel.MemberKeyColumn = """" & strDimensionTableName & """.""" & "TIME_YEAR"""
        dsoLevel.MemberNameColumn = """" & strDimensionTableName & """.""" & "TIME_YEAR"""
        dsoLevel.LevelType = levTimeYears
        dsoLevel.columnType = adSmallInt
       
        Set dsoLevel = dsoDimension.Levels.AddNew("Quarter", sbclsRegular)
        dsoLevel.MemberKeyColumn = """" & strDimensionTableName & """.""" & "TIME_QTR"""
        dsoLevel.MemberNameColumn = """" & strDimensionTableName & """.""" & "TIME_QTR"""
        dsoLevel.LevelType = levTimeQuarters
        dsoLevel.columnType = adWChar
       
        Set dsoLevel = dsoDimension.Levels.AddNew("Month", sbclsRegular)
        dsoLevel.MemberKeyColumn = """" & strDimensionTableName & """.""" & "TIME_MONTH_OF_YEAR"""
        dsoLevel.MemberNameColumn = """" & strDimensionTableName & """.""" & "TIME_MONTH"""
        dsoLevel.LevelType = levTimeMonths
        dsoLevel.columnType = adSmallInt
        dsoLevel.Ordering = orderKey
       
        Set dsoLevel = dsoDimension.Levels.AddNew("Week", sbclsRegular)
        dsoLevel.MemberKeyColumn = """" & strDimensionTableName & """.""" & "TIME_WEEK_OF_YEAR"""
        dsoLevel.MemberNameColumn = """" & strDimensionTableName & """.""" & "TIME_WEEK"""
        dsoLevel.LevelType = levTimeWeeks
        dsoLevel.columnType = adSmallInt
        dsoLevel.Ordering = orderKey
       
        Set dsoLevel = dsoDimension.Levels.AddNew("Days", sbclsRegular)
        dsoLevel.MemberKeyColumn = """" & strDimensionTableName & """.""" & "TIME_DAY_OF_WEEK"""
        dsoLevel.MemberNameColumn = """" & strDimensionTableName & """.""" & "TIME_DAY_OF_MONTH"""
        dsoLevel.LevelType = levTimeDays
        dsoLevel.columnType = adSmallInt
        dsoLevel.Ordering = orderKey
       
        'Update and process the dimension.
        dsoDimension.Update
        dsoDimension.Process (processFull)
       
        For Each dsoCube In dsoDatabase.MDStores
            If DicCubes.Exists(dsoCube.Name) And dsoCube.SubClassType = sbclsRegular Then
                dsoCube.Dimensions.AddNew (strDimensionName)
                Call jcJoin.LoadJoinClause(dsoCube.JoinClause)
                Call jcJoin.AddJoinCondition(TrimQuate(dsoCube.SourceTable), "TIME_ID", strDimensionTableName, "TIME_ID")
                Call jcJoin.AddJoinCondition(TrimQuate(dsoCube.SourceTable), "TIME_DATE", strDimensionTableName, "TIME_DATE")
                dsoCube.JoinClause = jcJoin.GetJoinClause
                dsoCube.Update
                dsoCube.Process (processFull)
            End If
        Next dsoCube
       
        For Each dsoCube In dsoDatabase.MDStores
            If DicCubes.Exists(dsoCube.Name) And dsoCube.SubClassType = sbclsVirtual Then
                dsoCube.Dimensions.AddNew (strDimensionName)
                dsoCube.Update
                dsoCube.Process (processFull)
            End If
        Next dsoCube
       
        fSuccess = True
       
    LblErrorHandler:
      
       Set dsoDimension = Nothing
       Set dsoLevelAll = Nothing
       Set dsoLevel = Nothing
       Set dsoCube = Nothing
      
       If (Not fSuccess) Then
          Call TraceAndRaise("Error in ModifyTimeDimension.")
       End If
       
    End Function

    Comments (12)

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    storm stormwrote:

    http://www.batteryfast.com/asus/a42-w3.htm asus a42-w3 battery
    http://www.batteryfast.com/asus/w3v.htm asus w3v battery
    http://www.batteryfast.com/asus/w3000.htm asus w3000 battery
    http://www.batteryfast.com/asus/a32-f3.htm asus a32-f3 battery
    http://www.batteryfast.com/asus/a42-m6.htm asus a42-m6 battery
    http://www.batteryfast.com/asus/m6000.htm asus m6000 battery
    http://www.batteryfast.com/mitac/bp-8050.htm mitac bp-8050 battery
    http://www.batteryfast.com/sony/pcga-bp2t.htm sony pcga-bp2t battery
    http://www.batteryfast.com/asus/a42-a2.htm asus a42-a2 battery
    http://www.batteryfast.com/asus/a2000.htm asus a2000 battery
    http://www.batteryfast.com/asus/a4000.htm asus a4000 battery
    http://www.batteryfast.com/asus/a42-v6.htm asus a42-v6 battery
    http://www.batteryfast.com/asus/v6000.htm asus v6000 battery
    http://www.batteryfast.com/uniwill/un223.htm uniwill un223 battery
    http://www.batteryfast.com/uniwill/223-3s4000-f1p1.htm uniwill 223-3s4000-f1p1 battery
    http://www.batteryfast.com/uniwill/258-4s4400-s1p1.htm uniwill 258-4s4400-s1p1 battery
    http://www.batteryfast.com/uniwill/258-4s4400-s2m1.htm uniwill 258-4s4400-s2m1 battery
    http://www.batteryfast.com/hp/mini-1000.htm hp mini 1000 battery
    http://www.batteryfast.com/hp/zt3300.htm hp zt3300 battery
    http://www.batteryfast.com/acer/aspire-9300.htm acer aspire 9300 battery
    http://www.batteryfast.com/acer/travelmate.htm acer travelmate battery
    http://www.batteryfast.com/acer/5100-aspire-7000.htm acer 5100 aspire 7000 battery
    http://www.batteryfast.com/acer/aspire-7100.htm acer aspire 7100 battery
    http://www.batteryfast.com/asus/a32-f5.htm asus a32-f5 battery
    http://www.batteryfast.com/asus/90-nlf1b2000y.htm asus 90-nlf1b2000y battery
    http://www.batteryfast.com/asus/x50.htm asus x50 battery
    http://www.batteryfast.com/asus/a32-u6.htm asus a32-u6 battery
    http://www.batteryfast.com/asus/u6v.htm asus u6v battery
    http://www.batteryfast.com/asus/u6s.htm asus u6s battery
    http://www.batteryfast.com/asus/u6sg.htm asus u6sg battery
    http://www.batteryfast.com/asus/a31-s6.htm asus a31-s6 battery
    http://www.batteryfast.com/asus/a32-s6.htm asus a32-s6 battery
    http://www.batteryfast.com/asus/a33-s6.htm asus a33-s6 battery
    http://www.batteryfast.com/apple/m7426.htm apple m7426 battery
    http://www.batteryfast.com/apple/ibook-m2453.htm apple ibook m2453 battery
    http://www.batteryfast.com/toshiba/pa3366u-1brs.htm toshiba pa3366u-1brs battery
    http://www.batteryfast.com/toshiba/satellite-a30-921.htm toshiba satellite a30-921 battery
    http://www.batteryfast.com/toshiba/pa3285u-1bas.htm toshiba pa3285u-1bas battery
    http://www.batteryfast.com/toshiba/pa3285u-1brs.htm toshiba pa3285u-1brs battery
    http://www.batteryfast.com/toshiba/pa3285u-3bas.htm toshiba pa3285u-3bas battery
    http://www.batteryfast.com/acer/batcl50l4.htm acer batcl50l4 battery
    http://www.batteryfast.com/acer/travelmate-290.htm acer travelmate 290 battery
    http://www.batteryfast.com/acer/btp-550.htm acer btp-550 battery
    http://www.batteryfast.com/acer/btp-550p.htm acer btp-550p battery
    http://www.batteryfast.com/apple/a1045.htm apple a1045 battery


    17 Nov.
    storm stormwrote:

    http://www.batteryfast.com/dell/inspiron-500m-series.htm dell inspiron 500m series battery
    http://www.batteryfast.com/dell/inspiron-510m-series.htm dell inspiron 510m series battery
    http://www.batteryfast.com/dell/inspiron-600m.htm dell inspiron 600m battery
    http://www.batteryfast.com/dell/latitude-d510.htm dell latitude d510 battery
    http://www.batteryfast.com/dell/latitude-d600.htm dell latitude d600 battery
    http://www.batteryfast.com/dell/latitude-d610.htm dell latitude d610 battery
    http://www.batteryfast.com/dell/vostro-1200.htm dell vostro 1200 battery
    http://www.batteryfast.com/dell/inspiron-7000.htm dell inspiron 7000 battery
    http://www.batteryfast.com/dell/inspiron-7500.htm dell inspiron 7500 battery
    http://www.batteryfast.com/dell/inspiron-700m.htm dell inspiron 700m battery
    http://www.batteryfast.com/dell/inspiron-710m.htm dell inspiron 710m battery
    http://www.batteryfast.com/dell/inspiron-8500m-series.htm dell inspiron 8500m series battery
    http://www.batteryfast.com/dell/inspiron-8600.htm dell inspiron 8600 battery
    http://www.batteryfast.com/dell/inspiron-8600m.htm dell inspiron 8600m battery
    http://www.batteryfast.com/dell/latitude-d800.htm dell latitude d800 battery
    http://www.batteryfast.com/dell/7012p.htm dell 7012p battery
    http://www.batteryfast.com/dell/latitude-cs-series.htm dell latitude cs series battery
    http://www.batteryfast.com/dell/xps-m1530.htm dell xps m1530 battery
    http://www.batteryfast.com/hp/pavilion-dv4.htm hp pavilion dv4 battery
    http://www.batteryfast.com/hp/pavilion-dv5.htm hp pavilion dv5 battery
    http://www.batteryfast.com/hp/pavilion-dv6.htm hp pavilion dv6 battery
    http://www.batteryfast.com/hp/ks524aa.htm hp ks524aa battery
    http://www.batteryfast.com/hp/f1739a.htm hp f1739a battery
    http://www.batteryfast.com/hp/f2019a.htm hp f2019a battery
    http://www.batteryfast.com/hp/f2024.htm hp f2024 battery
    http://www.batteryfast.com/hp/f4486a.htm hp f4486a battery
    http://www.batteryfast.com/hp/f4486b.htm hp f4486b battery
    http://www.batteryfast.com/compaq/354126-001.htm compaq 354126-001 battery
    http://www.batteryfast.com/compaq/405231-001.htm compaq 405231-001 battery
    http://www.batteryfast.com/toshiba/satellite-m110.htm toshiba satellite m110 battery
    http://www.batteryfast.com/hp/pb994a.htm hp pb994a battery
    http://www.batteryfast.com/apple/a1078.htm apple a1078 battery
    http://www.batteryfast.com/dell/inspiron-630m.htm dell inspiron 630m battery
    http://www.batteryfast.com/dell/inspiron-640m.htm dell inspiron 640m battery
    http://www.batteryfast.com/dell/xps-m140.htm dell xps m140 battery
    http://www.batteryfast.com/dell/inspiron-910.htm dell inspiron 910 battery
    http://www.batteryfast.com/hp/nc6400.htm hp nc6400 battery
    http://www.batteryfast.com/hp/dv8100.htm hp dv8100 battery
    http://www.batteryfast.com/hp/m2000.htm hp m2000 battery
    http://www.batteryfast.com/toshiba/portege-m205.htm toshiba portege m205 battery
    http://www.batteryfast.com/toshiba/portege-m400.htm toshiba portege m400 battery
    http://www.batteryfast.com/toshiba/satellite-p35.htm toshiba satellite p35 battery
    http://www.batteryfast.com/toshiba/satellite-m65.htm toshiba satellite m65 battery
    http://www.batteryfast.com/acer/batcl50l.htm acer batcl50l battery
    http://www.batteryfast.com/dell/pu556.htm dell pu556 battery

    17 Nov.
    31 July
    26 June
    No namewrote:
    World of Warcraft is a game set in a fantasy world, populated by unreal but magical,characters which are divided into nine classes. Here is a very simple guide, to help the new and inexperienced player, find out just who is who in this magical world.
    Druids are warriors who can take on many guises, including that of a caster. As this, he can perform spells of different types, damage, healing, offensive and defensive. He is also able to bring players back to life after they have been killed during combat.
    27 Sept.
    27 Sept.
    27 Sept.
    27 Sept.
    27 Sept.
    Picture of Anonymous
    8 Aug.
    Picture of Anonymous
    8 Aug.
    8 July

    Trackbacks

    The trackback URL for this entry is:
    http://netsleeper.spaces.live.com/blog/cns!2D6B305EBBD50AA5!127.trak
    Weblogs that reference this entry
    • None