Generate a Time Dimension Based On a Lunar Year Example
This example creates a new model, adds a data
source, and generates a time dimension based on a lunar year.
Sub Example26()
Dim objTransApp As Object
Dim objModel As Object
Dim objDataSource As Object
Dim objColumn As Object
Dim objDateWizard As Object
Dim objDateDim As Object
Dim objDrillDown As Object
Dim objDateLevel As Object
Dim strIBMCognos10Location As String
Dim strDataSource As String
Dim strDataPath As String
'Change these paths to match your installation
strIBMCognos10Location = "C:\Program Files\IBM\Cognos\c10\"
strDataSource = "NATIONAL.ASC"
strDataPath = strIBMCognos10Location & _
"webcontent\samples\datasources\cubes\PowerCubes\EN\National\"
& _
strDataSource
objTransApp = CreateObject("IBMCognosTransformer.ApplicationCtrl.1")
objModel = objTransApp.NewModel
objDataSource = objModel.DataSources.Add()
With objDataSource
.LocalPath = strDataPath
.Name = "National"
.SourceType = xtrSourceType.trFlatFileColumnNames
.Update()
End With
objColumn = objDataSource.Columns.Item("Date")
objDateWizard = objModel.DateWizard
With objDateWizard
.DimensionName = "Dates"
.DimensionAssociateWith(objColumn, xtrAssociationRole.trAssociationSource)
.EarliestDate = 19900101
.EnableTimePeriod(xtrTimeType.trTimeTypeMonth) = True
.EnableTimePeriod(xtrTimeType.trTimeTypeQuarter) = True
.EnableTimePeriod(xtrTimeType.trTimeTypeYear) = True
.LatestDate = 20101231
.WorkingDays = xtrWeekDay.trMonday + xtrWeekDay.trTuesday
+ _
xtrWeekDay.trWednesday + xtrWeekDay.trThursday
+ _
xtrWeekDay.trFriday
End With
objDateDim = objDateWizard.CreateDateDimension()
objDateDim.Update()
objDrillDown = objDateDim.DrillDowns(1)
With objDrillDown
.DrillCode = "By Order Date"
.DrillInclusion = xtrInclusion.trInclusionSuppress
.Lunar = True
.WeekAdd = xtrWeekAdd.trWeekAddDays4
.WeekStart = xtrWeekDay.trMonday
.YearStartDay = 19900101
.Update()
End With
objDateLevel = objDateDim.DimensionLevels(1)
objDateLevel.DateFunction = xtrSpecialFunction.trSpecialFunctionLunarYear
objDateLevel.Update()
objDateLevel = objModel.Dimensions("Dates").DimensionLevels(2)
objDateLevel.DateFunction = xtrSpecialFunction.trSpecialFunctionLunarQuarter
objDateLevel.Update()
objDateLevel = objModel.Dimensions("Dates").DimensionLevels(3)
objDateLevel.DateFunction = xtrSpecialFunction.trSpecialFunctionLunarMonth445
objDateLevel.Update()
With objModel
.GenerateCategories()
.SaveAs("NationalX.mdl")
.Close()
End With
objDateLevel = Nothing
objDrillDown = Nothing
objDateDim = Nothing
objDateWizard = Nothing
objColumn = Nothing
objDataSource = Nothing
objModel = Nothing
objTransApp = Nothing
End Sub