none
Process update - Rigid attribute relations RRS feed

  • Question

  • I have cube with few dimensions having RIGID relationships. I am planning to do a ProcessUpdate on those Dims.
    First i did a ProcessFull successfully.
    next, Some data, including those rigid attribute related, updated.
    When i run ProcessUpdate on those Dims it is failing with below error

    'Rigid relationships between attributes cannot be changed during incremental processing of a dimension'

    So, what should be my approach now to do a process update?

    Thanks in advance
    Chandra

    Thursday, October 21, 2010 2:55 AM

Answers

  • After you changed the attr relationship to Flexible. Did you go to SSMS and completly delete the AS database. If not, can you delete it and then process and deploy it. Post this do some changes and process again. Let us know the behaviour.

    The dimension might have got corrupted. 


    vinu
    • Marked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Unmarked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Marked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Unmarked as answer by mcprakash Tuesday, October 26, 2010 1:35 PM
    • Marked as answer by mcprakash Thursday, October 28, 2010 5:58 AM
    Friday, October 22, 2010 11:48 AM

All replies

  • You need to either change the RelationshipType of the attribute to flexible

    Or Always do a Process Full on the dimension

    It will throw an error if you do a Full Process of dimension and it is a Regid relationship type


    vinu
    • Proposed as answer by Josh Ashwood Thursday, October 21, 2010 5:12 AM
    Thursday, October 21, 2010 3:08 AM
  • yes, thats possible solution..

    but,in case if i opt to change them to Flexible and process update, how will that effect MDX query performance ?

    Thursday, October 21, 2010 6:36 AM
  • Hi,

    Defining an aggregation to be flexible or rigid has no impact on query performance.

    When defining the attribute relationship, consider the relationship type as flexible or rigid. A flexible attribute relationship is one where members can move around during dimension updates, and a rigid attribute relationship is one where the member relationships are guaranteed to be fixed. For example, the relationship between month and year is fixed because a particular month isn’t going to change its year when the dimension is reprocessed. However, the relationship between customer and city may be flexible as customers move.

    A ProcessUpdate can handle inserts, updates, and deletions, depending on the type of attribute relationships (rigid vs. flexible) in the dimension. Note that ProcessUpdate will drop invalid aggregations and indexes, requiring you to take action to rebuild the aggregations in order to maintain query performance. However, flexible aggregations are only dropped if a change is detected.

    For more details download performance guide for SSAS 2008;

    http://www.microsoft.com/DOWNLOADS/en/details.aspx?FamilyID=3be0488d-e7aa-4078-a050-ae39912d2e43&displaylang=en


    Ani
    Thursday, October 21, 2010 7:09 AM
  • It should not affect the MDX performance. The decision to make it rigid or flexible should be driven by the business needs or how values change in the system. As ProcessUpdate will drop invalid aggregations and indexes, obviously there difference in time for cube processing. But this should not be a reason for make it rigid or flexible.
    vinu
    Thursday, October 21, 2010 11:28 AM
  • Okay, some observations processing my cube after changing all attrib relations to Flexible..

    I have written XMLA to process the cube.All processupdates written at the top and then processadd for all measure groups. After deploying and processing fully i made some changes to few dimensions and executed XMLA script to process. It updated all dims correctly but it started throwing below error for all measure groups.

    Errors in the metadata manager. The process type specified for the XYZ partition is not valid.

    Is it expecting FULL process here? if so, Is it because process update drops all related measure groups aggregations?

    in this scenario how should I proceed with incremental processing? I am assuming aggregations on few measure groups are required for good query performance.

     

    Friday, October 22, 2010 1:52 AM
  • I have written XMLA to process the cube.All processupdates written at the top and then processadd for all measure groups. Errors in the metadata manager. The process type specified for the XYZ partition is not valid.


    ProcessAdd applies only to dimensions and partitions. check this article for more details regarding Processing Options avilable for SSAS objects

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

    To achieve Incremental Process you can use ProcessAdd on Partitions.

    ProcessAdd is the name of the XMLA command, in Business Intelligence Development Studio and SQL Server Management Studio this is exposed as ProcessIncremental.


    Ani
    Friday, October 22, 2010 6:10 AM
  • Yes, I did the same. Even error shown above talks about Partition not measure group.

    Errors in the metadata manager. The process type specified for the XYZ partition is not valid.

    I generated Process ADD/INCREMENTAL script (Added below) by right clicking measure group in SSMS. thats the reason i mentioned  processadd for all measure groups.

     

    <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
     <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">
       <Object>
        <DatabaseID>MyCube</DatabaseID>
        <CubeID>Cube1</CubeID>
        <MeasureGroupID>Employee Months</MeasureGroupID>
        <PartitionID>Employee Months</PartitionID>
       </Object>
       <Type>ProcessAdd</Type>
       <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
     </Parallel>
     <Bindings>
      <Binding>
       <DatabaseID>MyCube</DatabaseID>
       <CubeID>Cube1</CubeID>
       <MeasureGroupID>Employee Months</MeasureGroupID>
       <PartitionID>Employee Months</PartitionID>
       <Source xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xsi:type="QueryBinding">
        <DataSourceID>Hs</DataSourceID>
        <QueryDefinition><<QueryDef removed>></QueryDefinition>
       </Source>
      </Binding>
     </Bindings>
    </Batch>
    
    
    

    Is it expecting FULL process here when dimensions relating to this measure group process updated? if so, Is it because process update drops all related measure groups aggregations?

    in this scenario how should I proceed with incremental processing? I am assuming aggregations on few measure groups are required for good query performance.

    Friday, October 22, 2010 6:37 AM
  • After you changed the attr relationship to Flexible. Did you go to SSMS and completly delete the AS database. If not, can you delete it and then process and deploy it. Post this do some changes and process again. Let us know the behaviour.

    The dimension might have got corrupted. 


    vinu
    • Marked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Unmarked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Marked as answer by mcprakash Tuesday, October 26, 2010 12:47 PM
    • Unmarked as answer by mcprakash Tuesday, October 26, 2010 1:35 PM
    • Marked as answer by mcprakash Thursday, October 28, 2010 5:58 AM
    Friday, October 22, 2010 11:48 AM
  • Thanks Vinu, As you said the DB was corrupted. when i deleted and restarted, one dimension failed to process as it got some duplicates (m-m relationship between Key and few of its attribs). I will get back to forum once after fixing the Dim issue and process fully.

    Monday, October 25, 2010 5:45 AM
  • Now, after modifying the Dim, I am able to process full and then incremental succesfully.

    Please correct me if i am wrong..I need to ProcessIndex only those partitions which were not part of incremental processing. right?

    And Is there any workaround (other than changing the base table design) to add columns from different tables in KeyColumns collection of a Dimension Attribute?

    Thanks

    Tuesday, October 26, 2010 12:46 PM
  • I need to ProcessIndex only those partitions which were not part of incremental processing. right?

    Correct

    And Is there any workaround (other than changing the base table design) to add columns from different tables in KeyColumns collection of a Dimension Attribute?

    You can create a named query in the DSV of As or create a View.


    vinu
    Tuesday, October 26, 2010 3:09 PM