none
Will processing the SSAS database does process update on dimension???

    Question

  • Hi all,

    I have a doubt in cube database processing.Here is it:

    If i say process full in the entire cube database how will it process the dimension? Whether it will do process update on dimension and process full on cube?

    Please reply soon.

    Thanks,

    Aish


    • Edited by IshNair Monday, July 18, 2011 6:12 AM
    Monday, July 18, 2011 5:31 AM

Answers

  • If you do a processFull on the database it will do a processFull on all the dimensions and processFull on all the cubes, but it will inherently do this all in the one trasnaction so you should not see any cube "down time" (which I presume is why you are asking this question).
    http://darren.gosbell.com - please mark correct answers
    • Proposed as answer by Philip Stephenson Monday, July 18, 2011 7:55 AM
    • Marked as answer by IshNair Monday, July 18, 2011 10:10 AM
    Monday, July 18, 2011 6:11 AM
  • Hi,

    Whenever you do ProcessFull , it discards the storage contents of the object and rebuilds them. Now if you want to do ProcessFull on a complete database then that will discard all the storage contents and rebuilds them and as Darren has already mentioned that this all happen in the one trasnaction so you should not see any cube "down time" . now if you have already dimensions which are already processed and if you just want to update them then you can use ProcessUpdate. 

     

    ProcessUpdate applies only to dimensions. It is the equivalent of incremental dimension processing in Analysis Services 2000. It sends SQL queries to read the entire dimension table and applies the changes—member updates, additions, deletions.

    Since ProcessUpdate reads the entire dimension table, it begs the question, "How is it different from ProcessFull?" The difference is that ProcessUpdate does not discard the dimension storage contents. It applies the changes in a "smart" manner that preserves the fact data in dependent partitions. ProcessFull, on the other hand, does an implicit ProcessClear on all dependent partitions. ProcessUpdate is inherently slower than ProcessFull since it is doing additional work to apply the changes.

    Depending on the nature of the changes in the dimension table, ProcessUpdate can affect dependent partitions. If only new members were added, then the partitions are not affected. But if members were deleted or if member relationships changed (e.g., a Customer moved from Redmond to Seattle), then some of the aggregation data and bitmap indexes on the partitions are dropped. The cube is still available for queries, albeit with lower performance.

    For more details you can refer;

    http://msdn.microsoft.com/en-us/library/ms345142(SQL.90).aspx#sqk2k5_asproc_topic3

    Now if you want to do Process update using VS application then you don't need to write ProcessUpdate XMLA for each dimension, instate you can use AMO (Analysis Management Objects) in your application. you will just need to reference Microsoft.AnalysisServices.dll and you can use different classes of this namespace.

    Check following sample code for doing Process Full of SSAS database using AMO.

     

    Dim objServer As Server
      Dim objDatabase As Database
    
      objServer = New Server
      objServer.Connect("localhost")
    
      objDatabase = objServer.Databases("Adventure Works DW 2008R2")
      objDatabase.Process(ProcessType.ProcessFull)
    

     

    Check following sample code for doing Process Update on dimensions using AMO.

     

     

    Dim objServer As Server
      Dim objDatabase As Database
    
      objServer = New Server
      objServer.Connect("localhost")
    
      objDatabase = objServer.Databases("Adventure Works DW 2008R2")
    
      For Each objDimension As Dimension In objDatabase.Dimensions
       objDimension.Process(ProcessType.ProcessUpdate)
      Next
    


     


    Aniruddha http://aniruddhathengadi.blogspot.com/
    • Marked as answer by IshNair Monday, July 18, 2011 10:09 AM
    Monday, July 18, 2011 6:42 AM

All replies

  • If you do a processFull on the database it will do a processFull on all the dimensions and processFull on all the cubes, but it will inherently do this all in the one trasnaction so you should not see any cube "down time" (which I presume is why you are asking this question).
    http://darren.gosbell.com - please mark correct answers
    • Proposed as answer by Philip Stephenson Monday, July 18, 2011 7:55 AM
    • Marked as answer by IshNair Monday, July 18, 2011 10:10 AM
    Monday, July 18, 2011 6:11 AM
  • Hi Darren,

    I am automating the cube processing from a VS application and i am using only the xmla command to process the entire database, i just wanted to know what is being done inside.

    So as per your answer what i understand is dimensions will be processed using the process full. So if need to do process update on dimensions then i need to include the xmla command for each dimension so that i can change the process options on each dimensions.correct?

     

    Thanks,

    Aish

    Monday, July 18, 2011 6:17 AM
  • Hi,

    Whenever you do ProcessFull , it discards the storage contents of the object and rebuilds them. Now if you want to do ProcessFull on a complete database then that will discard all the storage contents and rebuilds them and as Darren has already mentioned that this all happen in the one trasnaction so you should not see any cube "down time" . now if you have already dimensions which are already processed and if you just want to update them then you can use ProcessUpdate. 

     

    ProcessUpdate applies only to dimensions. It is the equivalent of incremental dimension processing in Analysis Services 2000. It sends SQL queries to read the entire dimension table and applies the changes—member updates, additions, deletions.

    Since ProcessUpdate reads the entire dimension table, it begs the question, "How is it different from ProcessFull?" The difference is that ProcessUpdate does not discard the dimension storage contents. It applies the changes in a "smart" manner that preserves the fact data in dependent partitions. ProcessFull, on the other hand, does an implicit ProcessClear on all dependent partitions. ProcessUpdate is inherently slower than ProcessFull since it is doing additional work to apply the changes.

    Depending on the nature of the changes in the dimension table, ProcessUpdate can affect dependent partitions. If only new members were added, then the partitions are not affected. But if members were deleted or if member relationships changed (e.g., a Customer moved from Redmond to Seattle), then some of the aggregation data and bitmap indexes on the partitions are dropped. The cube is still available for queries, albeit with lower performance.

    For more details you can refer;

    http://msdn.microsoft.com/en-us/library/ms345142(SQL.90).aspx#sqk2k5_asproc_topic3

    Now if you want to do Process update using VS application then you don't need to write ProcessUpdate XMLA for each dimension, instate you can use AMO (Analysis Management Objects) in your application. you will just need to reference Microsoft.AnalysisServices.dll and you can use different classes of this namespace.

    Check following sample code for doing Process Full of SSAS database using AMO.

     

    Dim objServer As Server
      Dim objDatabase As Database
    
      objServer = New Server
      objServer.Connect("localhost")
    
      objDatabase = objServer.Databases("Adventure Works DW 2008R2")
      objDatabase.Process(ProcessType.ProcessFull)
    

     

    Check following sample code for doing Process Update on dimensions using AMO.

     

     

    Dim objServer As Server
      Dim objDatabase As Database
    
      objServer = New Server
      objServer.Connect("localhost")
    
      objDatabase = objServer.Databases("Adventure Works DW 2008R2")
    
      For Each objDimension As Dimension In objDatabase.Dimensions
       objDimension.Process(ProcessType.ProcessUpdate)
      Next
    


     


    Aniruddha http://aniruddhathengadi.blogspot.com/
    • Marked as answer by IshNair Monday, July 18, 2011 10:09 AM
    Monday, July 18, 2011 6:42 AM
  • hi Ishnair,

    When u do the Process full on our ssas data base it automaticall do the update for all dim and fact table..

    We are not go for process full daily it will decrees the performance of u r cube. 

    Using SSIS Analysis Process task we can do the process update for dim .

    U can check this it will help to u...

     

    Monday, July 18, 2011 7:49 AM
  • Hi

    It was very useful. Thanks a lot.

    Monday, July 18, 2011 10:09 AM
  • When u do the Process full on our ssas data base it automaticall do the update for all dim and fact table..

    We are not go for process full daily it will decrees the performance of u r cube.  

    This is not correct. ProcessFull will often improve the query performance of your cube (processUpdate can introduce internal fragmentation in the dimension over time which you can only clear out by doing a processFull) and it faster at processing time than processUpdate as it does less work.

    The reason for using ProcessUpdate is that fully processing a dimension requres that you fully process all dependant obects. If you have multiple cubes or partitions that are dependant on your dimensions and you do not want to fully process those then you would use processUpdate on your dimensions. If you are fully processing all your cubes/partitions anyway then you may as well just do a processFull on the whole database it will be faster and the cube will perform better.


    http://darren.gosbell.com - please mark correct answers
    Monday, July 18, 2011 11:38 PM
  • Yes you are correct as per my analysis too i found that process full is only happening on every dimension, if i give process full on entire database.

     

    Thanks,

    Aish

    Tuesday, July 19, 2011 5:24 AM