Forum Discussion

usmali's avatar
usmali
New Contributor II
3 days ago

Validation Errors mapping to placeholder

Hey Folks,

I am looking to map all validation errors that might occur during an automated load to a placeholder member in the UD1 dimension, but i am running into issues as the mask rule approach is not working. Does anyone else have any other way to make this work? Below is what i have tried but i still get kickouts in the validation step of the load process.

 

 

  • rhankey's avatar
    rhankey
    Contributor II

    Your StarToStar rule is going to do exactly that; map everything as is to the target members, even if the target members don't exist.  As such, your CatchAll rule will never trip.

    If you are trying to keep things that simple, a TransformationEventHandler might be a better option for you.  With such, you would get rid of your CatchAll rule, and in the event handler you would determine what got transformed to invalid members, and for those choose to map to a CatchAll member, auto-add the missing member, or whatever else you would like to do.

    • usmali's avatar
      usmali
      New Contributor II

      Thanks rhankey and Simon, does any one have a sample transformationEventHandler rule that they can share; which might be useful in this case? Thanks!

      • MarcusH's avatar
        MarcusH
        Valued Contributor

        The GolfStream app has an example of reading the transformation data cache and updating the target members.

  • You need to bear in mind that only one transformation rule is ever executed for each dimension source value in an imported data record. This means that you cannot have a star-to-star mapping to map your valid members as this will stop your wildcard catchall mapping from ever executing, as alluded to by the previous replies you have had. In this use case you would probably have to have a whole load of one-to-one maps just to pass through the valid values. This is probably not the best approach as it could be time consuming to setup (depending on how may members you have in your UD2 dimension) and would involve constant ongoing maintenance. Mapping by exception, if possible, will result in less map maintenance in almost all circumstances.   

    A much more streamlined solution would be to make use of OneStream Event Handlers, as suggested by rhankey, to either Bypass those records and send an alert telling the user / admin to address the missing metadata issue or in your case (where the source and target values should be the same) the optimal solution would be to create those new target members on the fly in your OneStream data model so your source data can immediately be validated and loaded to your target model. This would eliminate the need for any manual intervention / maintenance as part of that integration process.

    • usmali's avatar
      usmali
      New Contributor II

      Thanks i tried that approach but for some odd reason it won't work for me , see below the screenshot , i am using the order of operation to mask all source projects in UD2 dimension to their targets (if they exist), when something doesn't exist i am using a "CatchAll" value to map those. 

      However the validation step still kicks out when a new project comes in and it doesn't exist in the UD2/Project dimension. 

      validation error with the above mask "catchAll" rule in place for UD2 dimension 

       

      • MarcusH's avatar
        MarcusH
        Valued Contributor

        The first map (StarToStar) will assign a target value to all source records on the UD2 dimension. That means that any subsequent maps that are executed will not make a change - in effect they do not execute. In order to get this to work you need to delete the StarToStar map and then (as T_Kress says) use one to one maps or any other map. Then the CatchAll map will execute and assign a value for any source records that do not have a target value assigned ie the source record has not been matched by any of the previous maps.