Thursday, March 29, 2012
HOLAP much faster then MOLAP !?
When I process the same cube with the MOLAP (100% performance gain) storage option the same query takes forever.
I'm puzzled. Can someone explain this?
Edwin
P.S. THe cube has a DistinctCount measure in it. Does this have anything to do with the poor MOLAP performance?You are correct - that is unusual. How big are both of the cubes ? Have you tried duplicating the same behavior with the foodmart sample ? Since you are suspicious of the distinctcount - have you eliminated that measure to see how it affects performance ?|||Have you tried it under excel 2000 ?|||Thank for the reply.
Excel 2000 gives me the same problem, as well as the cube data browser in the Analysis Manager itself.
I replaced the Distinct Count by a Sum. Performance was OK in both HOLAP and MOLAP, so the Distinct Count causes the pain (but I really need it).
I couldn't reproduce the same thing in the Foodmart cubes (size perhaps?).
Maybe I stumbled on some undocumented limit.
Another thing: In HOLAP mode with 100% performance gain it still computes aggregation data in Oracle. I know this, because when I shut Oracle I get #value errors. I thougt 100% means 'all aggregations in Analysis Services'. Also I'm often exactly 1 above the exact value with the Distinct Counts, because NULL seams to count a distinct value.
I rfead somewhere that Analysis Services transform a NULL into a 0 when one of the other measures in the source table is not NULL.
Is that correct, and if so, is there a patch for that? Otherwise I must define fact-views for each Distinct Count measure with "WHERE ... IS NOT NULL".
Development Server : PIII 500, 512 MB memory
(should eat this 7.5MB cube for breakfast)
Relational database: Oracle 8.1.7.3
Analysis Services : Service Pack 2
Fact table: : 69000 rows
Measures: : 1 Distinct Count
Dimension data : 1 3000 members, 1 level
2 69000 members, divided in 7 levels
3 Price-dimension (hierarchy 1)
4 Price-dimension (hierarchy 2)
Cube in MB 7.5 MB (in both HOLAP and MOLAP mode)
Edwin
Monday, March 26, 2012
History Cube Design Question
Hi,
In SSAS 2005 - I have History cube with 2 partitions 2005 and 2006 data. Both has different tables in data source view. In cube both partitions are map to same measure group, so there is no different measure groups for 2005 and 2006 just to make it clear.
Time to time I need to add new measures in latest cube (2006 partition) data those measures don't have data for 2005 partition.
Right now when I add new measures in 2006 I have to full process the 2005 and 2006 both partitions. Is there any way or way to design my cube so that when I add new measures to cube I can only full process 2006 partition. If user selects my new measures with 2005 date they can get null/zero that's fine.
Thank you for sharing your ideas - Ashok
This is my third post, previous two different questions no one replied....I start thinking either I ask stupid questions or this site is not good for me. Fingers cross this time...Take it easy....
Are you saying you have dimesion members referenced by the later partition that do not exist for the earlier partition?
When you process the later partition you could uncheck the 'process related objects' option. And you could also process any changed dimensions seperately. I think this should work, but you'd have to try it out for yourself to determine any difficulties.
Try doing this using the impact analysis feature to get a good idea as to what will be affected before actually doing the processing.
|||Hi Ashok,
What if you create a new measure group which contains only the new measures created for the 2006 partition? To facilitate this, you could add a named query fact table to the DSV, which returns the relevant columns from the 2006 table. Then, you should only need to process this measure group, when you add a new 2006 measure.
|||Thanks Deepak and Dork,
My Dimension members are not changed for any partitions I am just adding new measures in later partition.
Let me correct one thing first my 2005 and 2006 partitions are based on same database view but I have added filter to partitions by joining with DIM_DT like YR = 2005 and YR = 2006.
Any way, Deepak your solution works fine only thing is now there is new measure group for end users and at one point I have to marge this with rest of the partitions and do full process for 2005 and 2006, may be end of the year will be good time.
Because I also have a cube with different linked cubes (like virtual cube in 2000) I created a new calculated measures in virtual cube for each new measures in new measure group and made it new measures visible false so at least users don't see new measure group they see new calculated measures. I think is looks more complex finally keeping new measure group for current year is good idea.
Let's see how it goes. Thanks again - Ashok
|||Guys How about if I keep 10 extra user defined fields in fact table and map them when I have new measures and make them visible?
-Ashok
sqlFriday, March 9, 2012
high Availability cubes: During Cube metadata updates + ProClarity
Hi,
This is a kind of solution design issue.
Scenario: We have a web page that displays information from a Oracle data warehouse. We collect the required information in the page and have used AMO to create cubes and other related objects from this information. The source for the cubes in SSAS 2005 would point to Oracle. This is modelled as a web service and used within the web page. Once the Cube gets created in SSAS, we model ProClarity graphs on them.
The problem: The users can invoke the AMO web service from the web page, to add a new MeasureGroup to an existing cube. Once this is done the Cube becomes non-browsable. because we are adding a new MeasureGroup and thus modifying the cube metadata.
In detail, If the new MeasureGroup that is added, uses dimensions that are already cube-dimensions then- only the newly added MeasureGroup will be UnProcessed and the exsiting MeasureGroups will be processed. (cube is UnProcessed state).
otherwise, if the new MeasureGroup that is added, adds a new cube-dimension to the cube then- all the MeasureGroups will be in the UnProcessed state including the newly added MeasureGroup.
Now, until the user invokes a 'process' request, for the cube that is modified and the processing is complete, that paticular cube is not accesible. All the Proclarity graphs that are linked to that cube, show error messages!
How can we keep the Proclarity graphs / users pointed to a old copy of the cube, at least until the newly modified cube is processed and online?
If not, are there any other approaches to get high availability for the cubes or for the ProClarity Graphs?
Can we create a offline cube that can be used temporarily? if so how to dynamically switch between the offline cube and the online cube?
Regards
If you do all the AMO operations including creating and processing the cube within transaction, then the previous version of the cube will be available until transaction commits. After transaction commited, the new version of the cube will be immediatelly avaiable.|||Hi Mosha,
Thanks for the tip.
Since this operation is used in a J2EE web site using a AMO web service.
If I include the processing task with it then it would take a huge time for large cubes.
Currently we are using the 'Ascmd' to do the processing. This is scheduled using a scheduler.
We planned to somehow call Ascmd Asynchronously from the web page and intimate users using an email after the processing completes.
can we include the processing also in the previous transaction while using Ascmd?
Apart from this, any other mechanism that we can use like Raid/mirroring, Failover clustering. etc?
Or temporary local cubes?
:-) Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
Thanks and Regards
|||Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
No need to wait for the next version. SSAS2005 already supports Sync functionality, where you can build and process cube on one server and then sync it to another server.
|||You might consider using AS 2005's "synchronize database" capability. This would require (I think) two servers. The first would be the "modify and process" server (call it ServerA) while the second would be the "presentation" server (call it ServerB).
In your application, you would have the users always browsing the cube(s) on ServerB. As they make changes to the design of the cube (adding measure groups, cube dimensions, etc.), you'd direct those changes to the cube(s) on ServerA. You could then asynchronously use ascmd to reprocess part or all of a modified cube on ServerA (while they continue to use the cube on ServerB). Once the processing is complete, you could execute an XMLA script on ServerB, requesting that the database on ServerB be sychronized from ServerA. The nice thing about this is that the synchronization occurs within a transaction, so the cube on ServerB is still usable while the sychronization occurs and the updated version of the cube is then available to users immediately once it is complete.
Take a look at the following link in BOL for the XMLA element for the synchronize command:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/xmla9/html/9401323c-feff-409a-a9da-94aee47e0563.htm
HTH,
Dave Fackler
|||Hi,
Wow!
Thanks a lot for that.
I am going to implement the "Sync Database", This will solve my problem!
although I would take some time to complete this , I will let you know when I start.
Regards
high Availability cubes: During Cube metadata updates + ProClarity
Hi,
This is a kind of solution design issue.
Scenario: We have a web page that displays information from a Oracle data warehouse. We collect the required information in the page and have used AMO to create cubes and other related objects from this information. The source for the cubes in SSAS 2005 would point to Oracle. This is modelled as a web service and used within the web page. Once the Cube gets created in SSAS, we model ProClarity graphs on them.
The problem: The users can invoke the AMO web service from the web page, to add a new MeasureGroup to an existing cube. Once this is done the Cube becomes non-browsable. because we are adding a new MeasureGroup and thus modifying the cube metadata.
In detail, If the new MeasureGroup that is added, uses dimensions that are already cube-dimensions then- only the newly added MeasureGroup will be UnProcessed and the exsiting MeasureGroups will be processed. (cube is UnProcessed state).
otherwise, if the new MeasureGroup that is added, adds a new cube-dimension to the cube then- all the MeasureGroups will be in the UnProcessed state including the newly added MeasureGroup.
Now, until the user invokes a 'process' request, for the cube that is modified and the processing is complete, that paticular cube is not accesible. All the Proclarity graphs that are linked to that cube, show error messages!
How can we keep the Proclarity graphs / users pointed to a old copy of the cube, at least until the newly modified cube is processed and online?
If not, are there any other approaches to get high availability for the cubes or for the ProClarity Graphs?
Can we create a offline cube that can be used temporarily? if so how to dynamically switch between the offline cube and the online cube?
Regards
If you do all the AMO operations including creating and processing the cube within transaction, then the previous version of the cube will be available until transaction commits. After transaction commited, the new version of the cube will be immediatelly avaiable.|||Hi Mosha,
Thanks for the tip.
Since this operation is used in a J2EE web site using a AMO web service.
If I include the processing task with it then it would take a huge time for large cubes.
Currently we are using the 'Ascmd' to do the processing. This is scheduled using a scheduler.
We planned to somehow call Ascmd Asynchronously from the web page and intimate users using an email after the processing completes.
can we include the processing also in the previous transaction while using Ascmd?
Apart from this, any other mechanism that we can use like Raid/mirroring, Failover clustering. etc?
Or temporary local cubes?
:-) Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
Thanks and Regards
|||Just a wild shot: Probably the next version of SSAS needs to include something similary "shadow-copy-cube".
No need to wait for the next version. SSAS2005 already supports Sync functionality, where you can build and process cube on one server and then sync it to another server.
|||You might consider using AS 2005's "synchronize database" capability. This would require (I think) two servers. The first would be the "modify and process" server (call it ServerA) while the second would be the "presentation" server (call it ServerB).
In your application, you would have the users always browsing the cube(s) on ServerB. As they make changes to the design of the cube (adding measure groups, cube dimensions, etc.), you'd direct those changes to the cube(s) on ServerA. You could then asynchronously use ascmd to reprocess part or all of a modified cube on ServerA (while they continue to use the cube on ServerB). Once the processing is complete, you could execute an XMLA script on ServerB, requesting that the database on ServerB be sychronized from ServerA. The nice thing about this is that the synchronization occurs within a transaction, so the cube on ServerB is still usable while the sychronization occurs and the updated version of the cube is then available to users immediately once it is complete.
Take a look at the following link in BOL for the XMLA element for the synchronize command:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/xmla9/html/9401323c-feff-409a-a9da-94aee47e0563.htm
HTH,
Dave Fackler
|||Hi,
Wow!
Thanks a lot for that.
I am going to implement the "Sync Database", This will solve my problem!
although I would take some time to complete this , I will let you know when I start.
Regards
Hierarchy - Measure question
Hi,
In the cube, i'm using one fact table (I will call just A) as a fact (A) and dimension (A1).
From this table(A) , I created hierarchy ( division - department with primary key from this fact) in the dimension(A1).
And we have another fact table(B) which is not related to the fact (A) and dimension(A1) fisically.
Here is the fact table (B) as under:
Plan Fact : ID(pk), Item_key, Plan_Sales , Date_key
I can join this fact (B) with product dimension which has item_key (pk) and this product dimension has division and deparment key.
My question is that is there anyway to see plan sales measure with the hierarchy I created?
Please let me know.
Thanks in advance.
Hi there,
AFAIK, you could achieve this with Analysis Services 2005.
Your data source view would consist of your department dimension, linked to both of your fact tables. When creating your cube in Analysis Services 2005, the cube creation wizard should pick up that you have two fact tables and a single dimension (you may need to point it in the right direction though!).
This should generate you a cube schema, with a single dimension (department) and two measure groups. One measure group would contain measures from fact table A, and the other measure group would contain measures from fact table B. One use of a measure group is that it can group measures from a single fact table.
Using the cube browser you should be able to drag on your division-department hierarchy, along with the relevant measures from each measure group.
Hope that helps.
Cheers,
Jonathon
|||Actually you can create what is called a referenced relationship in AS2005 where one dimension is joined to a fact table through another dimension. So you could relate the A1 dimension to the Plan fact table through the Item dimension.|||
Hi Darren,
Sorry for the late response and thanks for your reply.
I've tried to make a referenced relationship but it seems it does not give a right value.
if I select the reference dimension attribute : divdep ( which includes all attributes in divdep dimension) and intermediate dimension attribute : item_key ( pk in product dimension) which I join the fact table with, then the total is fine but in each division level and department level , the numbers are not correct.
If I select reference dimension attribute : division name and intermediate dimension attribute: division name , then I can see the right number only in division level. ( My question is do i need to select lowest level in reference dimension attribute? in this case , department name is the lowest in hierarchy. But it gives an error since this dimension does not have some attributes which appears in fact table.)
I need to view the data with division- department hierarchy and I've tried to do every single possible thing but I don't have any clue yet.
I appreciate if you can give me any comments.
Thanks.
|||
I'm not sure I'm completely understanding how you have things setup.
If you have a product dimension which includes an attribute for the department, you should be able to join the department dimension at it's key to the department attribute in the product dimension.
There is an example of a reference relationship in the Adventure Works cube, have a look at the Geography dimension and you should be able to find an example.
Wednesday, March 7, 2012
Hierarchy - Measure question
Hi,
In the cube, i'm using one fact table (I will call just A) as a fact (A) and dimension (A1).
From this table(A) , I created hierarchy ( division - department with primary key from this fact) in the dimension(A1).
And we have another fact table(B) which is not related to the fact (A) and dimension(A1) fisically.
Here is the fact table (B) as under:
Plan Fact : ID(pk), Item_key, Plan_Sales , Date_key
I can join this fact (B) with product dimension which has item_key (pk) and this product dimension has division and deparment key.
My question is that is there anyway to see plan sales measure with the hierarchy I created?
Please let me know.
Thanks in advance.
Hi there,
AFAIK, you could achieve this with Analysis Services 2005.
Your data source view would consist of your department dimension, linked to both of your fact tables. When creating your cube in Analysis Services 2005, the cube creation wizard should pick up that you have two fact tables and a single dimension (you may need to point it in the right direction though!).
This should generate you a cube schema, with a single dimension (department) and two measure groups. One measure group would contain measures from fact table A, and the other measure group would contain measures from fact table B. One use of a measure group is that it can group measures from a single fact table.
Using the cube browser you should be able to drag on your division-department hierarchy, along with the relevant measures from each measure group.
Hope that helps.
Cheers,
Jonathon
|||Actually you can create what is called a referenced relationship in AS2005 where one dimension is joined to a fact table through another dimension. So you could relate the A1 dimension to the Plan fact table through the Item dimension.|||
Hi Darren,
Sorry for the late response and thanks for your reply.
I've tried to make a referenced relationship but it seems it does not give a right value.
if I select the reference dimension attribute : divdep ( which includes all attributes in divdep dimension) and intermediate dimension attribute : item_key ( pk in product dimension) which I join the fact table with, then the total is fine but in each division level and department level , the numbers are not correct.
If I select reference dimension attribute : division name and intermediate dimension attribute: division name , then I can see the right number only in division level. ( My question is do i need to select lowest level in reference dimension attribute? in this case , department name is the lowest in hierarchy. But it gives an error since this dimension does not have some attributes which appears in fact table.)
I need to view the data with division- department hierarchy and I've tried to do every single possible thing but I don't have any clue yet.
I appreciate if you can give me any comments.
Thanks.
|||
I'm not sure I'm completely understanding how you have things setup.
If you have a product dimension which includes an attribute for the department, you should be able to join the department dimension at it's key to the department attribute in the product dimension.
There is an example of a reference relationship in the Adventure Works cube, have a look at the Geography dimension and you should be able to find an example.
Hierarchy - Measure question
Hi,
In the cube, i'm using one fact table (I will call just A) as a fact (A) and dimension (A1).
From this table(A) , I created hierarchy ( division - department with primary key from this fact) in the dimension(A1).
And we have another fact table(B) which is not related to the fact (A) and dimension(A1) fisically.
Here is the fact table (B) as under:
Plan Fact : ID(pk), Item_key, Plan_Sales , Date_key
I can join this fact (B) with product dimension which has item_key (pk) and this product dimension has division and deparment key.
My question is that is there anyway to see plan sales measure with the hierarchy I created?
Please let me know.
Thanks in advance.
Hi there,
AFAIK, you could achieve this with Analysis Services 2005.
Your data source view would consist of your department dimension, linked to both of your fact tables. When creating your cube in Analysis Services 2005, the cube creation wizard should pick up that you have two fact tables and a single dimension (you may need to point it in the right direction though!).
This should generate you a cube schema, with a single dimension (department) and two measure groups. One measure group would contain measures from fact table A, and the other measure group would contain measures from fact table B. One use of a measure group is that it can group measures from a single fact table.
Using the cube browser you should be able to drag on your division-department hierarchy, along with the relevant measures from each measure group.
Hope that helps.
Cheers,
Jonathon
|||Actually you can create what is called a referenced relationship in AS2005 where one dimension is joined to a fact table through another dimension. So you could relate the A1 dimension to the Plan fact table through the Item dimension.|||Hi Darren,
Sorry for the late response and thanks for your reply.
I've tried to make a referenced relationship but it seems it does not give a right value.
if I select the reference dimension attribute : divdep ( which includes all attributes in divdep dimension) and intermediate dimension attribute : item_key ( pk in product dimension) which I join the fact table with, then the total is fine but in each division level and department level , the numbers are not correct.
If I select reference dimension attribute : division name and intermediate dimension attribute: division name , then I can see the right number only in division level. ( My question is do i need to select lowest level in reference dimension attribute? in this case , department name is the lowest in hierarchy. But it gives an error since this dimension does not have some attributes which appears in fact table.)
I need to view the data with division- department hierarchy and I've tried to do every single possible thing but I don't have any clue yet.
I appreciate if you can give me any comments.
Thanks.
|||I'm not sure I'm completely understanding how you have things setup.
If you have a product dimension which includes an attribute for the department, you should be able to join the department dimension at it's key to the department attribute in the product dimension.
There is an example of a reference relationship in the Adventure Works cube, have a look at the Geography dimension and you should be able to find an example.
hierarchy
hi All,
i am facing a problem while creating a simple product hierarchy in SSAS.
i am able to create the hierarchy and deploy the cube,but in the browser while analysing i drag and drop the hierarchy .but only the key are displayed not the caption.
Please do help me with this
thanks in advance
Lalitha
You need to post this to the SQL Server Analysis Services forum.|||There shouldn't be any secrets to getting this to work, so I would just double check what you've done. Check the definition of the hierarchy/level/attribute and ensure that you are browsing the correct object. If you are still having troubles, please provide more info such as what version of SSAS you are using (2000 or 2005), what browser you are using, and more details about just what the problematic hierarchy looks like (key columns, name columns, etc).
Hope this helps
|||hi,
i am using SSAS 2005 . and i am using the browser tab which is available when the cube is proccessed.
i'll give the steps what i have done
i created a dimension of product consisting of attribute
productid
productname
producttypeid
priducttypename
productcategoryid
productcategoryname
then i am creating the heirarchy in the dimension Structure tab available.
the level were automatically identified and there was no caption avaliable
i draged and dropped the captions to the appropriate levels
and the caption didnot appear while browsing the cube..
This what is did
please do help me as soon as possible
Thanks in advances
Lalitha
|||
What exactly are you doing when you "drag and drop captions" to appropriate levels? I'm guessing you're dragging attributes onto the hierahcy panel and dropping them under levels which creates attribute relationships (and thus Member Properties), but is not related to the caption of the level.
Levels are based on attributes and get their members from the values of the attribute on which they are based. Each attribute contains a KeyColumns property that determines how members are uniquely identified by the server and a NameColumn property that determines how the members are displayed. If the NameColumn is not specified, then the KeyColumn will also be used as the name. (If multiple key columns are specified, then a name column must be specified.) (In addition to names, translations can also be specified in the translations tab but as long as you've not changed anything in the translations tab it should have no impact.)
|||hi Matt Carroll
Thanks , I solved it. You'r information help me a lot
Regards
Lalitha
Friday, February 24, 2012
Hiding measures above Country level
I have the following problem I would appreciate your help with:
I am designing a cube “Cost Benchmarking” using Analysis Server 2000 with the following structure (simplified for the sake of this post):
Dimensions: Countries (levels: (All), Regions, Countries)
Clients (levels: Client)
Media (levels: TV Station)
Months (levels: Years, Quarters, Months)
Measures:
Cost (amount of money the clients spent on advertising, in local currency),
Cost in USD (Cost converted to USD at the fact record level),
Impressions (raw number of impressions the ad campaign achieved, in thousands),
CPM (Cost Per Thousand impressions, calculated = Cost/Impressions)
The problem is that several measures do not make business sense to aggregate above the country level, namely Cost, Impressions and CPM. Users don’t even want to see those measures until a country is specified (we are planning on using Excel Pivot Table as a client).‘Cost in USD’ however can be aggregated at the Region and (All) levels.
Is there a way to hide those measures above the Country level?
Thanks
Kliment
If you're using AS 2000 Enterprise Edition, you could use the calculated cell feature, to clear cells with the relevant measures above the country level:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/olapdmad/agmeasures_2ttf.asp
>>
Calculated Cells
Calculated cells are cells whose value is calculated at run time using a Multidimensional Expressions (MDX) expression that you specify when you define the calculated cells. Additionally, the expression can be conditionally applied to specific cells, based on an MDX logical expression also specified when you define the calculated cells.
...
>>
Sunday, February 19, 2012
hididng calculated measures in the cube browser window
hi i am currenly using analysis serivces 2005 for making cubes.
my problems are 2 fold
1)the list of calcualted measures is around 35 so when i go to browser window in the cube they actually give a very bad look.Can i make any folder within which we can keep all the calculated measures and then drill down according to the requirement. OR if i can divide all the calculated measures according to the need-- say "primary sales" calculated measure folder contains all the calculated measures that fall under that category and simlarly "order daily" contains all the calculated measures that fall under its category.
2)the end user will be accesing the cube using BIP now in the cube Dimension we can discriminate among the hierarchy and attributes by there default symbols but when we actually see it in the BIP window we cannot distinctly identify which is a attrribute and which is a hierarchy,which might confuse the business user.
kindly reply asapcheers
Sid
..u can mail me at sidhuvirgoster@.gmail.com(for answer and further clarification of question)
Unfortunately I don't have a lot of good news for you.
1) you can put measures into display folders, there is a button on the toolbar of the calculations tab called "Calculation Properties" which lets you set this. (the button looks like a properties window with a little yellow hand over it)
2) Unfortunately BIP uses OWC which was written before AS2005 existed and it is not aware of attributes or hierarchies, it treats them all as just dimensions. There is no way around this and MS has discontinued development of OWC so it will not change in the future. And in relation to your first point, OWC is not aware of display folders either so all your measures will still be displayed in a big long list.
All I can suggest is to have a look at some of the other 3rd party browsers, Mosha has one of the most comprehensive lists around at www.mosha.com/msolap
|||About 2.
Why is this so important for the end user to see where the attribute hierarchy is? As far as i understand the model, an attribute hierarchy is still a hierarchy, which consists of one level and represents just a plain list of members of certain entity (attribute). They are visible to the end user by default, but the designer can make them invisible, leaving just those hierarchies, which do not confuse the user.
For the cube developer - yes it is more important to see what comes from what.|||
I agree that end users should not really care about the difference between attribute hierarchies and other hierarchies. And typically if I have "Month" in a user defined hierarchy I will hide the attribute hierarchy so they don't see the same thing twice. One problem I have seen is situation where two different dimensions have attributes with the same name.
eg.
[Date].[Financial] and [Organisation].[Financial] would both show up as just Financial in OWC
or [Ship Date].[Month] and [Order Date].[Month] would both show up as Month
The only real work around if you need to use an older client (like OWC) is to make sure that the levels/attributes that the users see have unique names (eg [Ship Date].[Ship Month], [Order Date].[Order Month])