Saturday, April 14, 2012

Troubleshooting OLAP Errors in OLAP Storage Engine The attribute key cannot be found when processing: Table

Dear Friends!


I have been working as part-time BI and Sharepoint Developer/Admin alongwith my routine AX development. While working with Analysis Services and Cubes Processing, I have come across several errors, In today's post, I will list down the troubleshooting steps involved to solve one such error, Hope it helps somebody out there:





Error# 1
Errors in the OLAP storage engine: The attribute key cannot be found when processing: Table: 'dbo_RR006_Inventory_x0020_Calculations', Column: 'TimeKey_FK', Value: '12/01/2012'. The attribute is 'Time Key PK'. Errors in the OLAP storage engine: The record was skipped because the attribute key was not found. Attribute: Time Key PK of Dimension: Time Dimension from Database: RR001a-RetailReporting, Cube: RR001-RetailReporting, Measure Group: Inventory Calculations, Partition: RR006 Inventory Calculations, Record: 1. Errors in the OLAP storage engine: The process operation ended because the number of errors encountered during processing reached the defined limit of allowable errors for the operation. Errors in the OLAP storage engine: An error occurred while processing the 'RR006 Inventory Calculations' partition of the 'Inventory Calculations' measure group for the 'RR001-RetailReporting' cube from the RR001a-RetailReporting database.

Solution:

Process the Dimension in question by going to Process options and change from “Process Update” to “Process Full”

Also had to reprocess the following dimensions
Dim Sales Dimensions, Time, Item Dimensions, End of Details, Customers

Note: The table names and dimensions names may differ in your scenario.

Some Additional Notes/References:

Difference between ProcessFull and ProcessUpdate

ProcessFull

ProcessFull applies to all objects. It discards the storage contents of the object and and rebuilds them. ProcessFull is recursively applied to all descendants of the object as well.

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.
http://support.microsoft.com/kb/922673 (Look at Section “Ignore the Error”)










2 comments: