Skip to main content
Solved

DQ rule and Regular expression - Truncate


Forum|alt.badge.img+2

Hello Community 😀

I am trying to write a DQ rule using a regular expression, I have been using the “ONE Expressions” documentation to help with this but I can’t seem to get it working. Can anyone advise where I am going wrong please??

Example

Input data:

Value1 Value2 Value3
-1137.86 -5689.33 0.2

 

DQ rule I am trying to achieve:

  • Value2 * Value 3 = -1137.866
  • Take only the first 2 decimals of the above bullet WITHOUT rounding = -1137.86
  • Check if value1 equals the value in the bullet above. (i.e. -1137.86 = -1137.86 so it should show as a valid result)

How I have written this in Ataccama using a regular expression:

  • Value1 is NOT (substituteAll("(\d+\.\d{2})(\d+)","${1}",toString(Value2 * Value3)))
  • Then result is INVALID

Error I get:

  • Using the test rule feature with the example input data above, it says that the result is INVALID when I am expecting it to be VALID.
  • And only if I change Value1 to equal -1137.866 then it will show VALID which is not what I want to achieve.

Can anyone see where I am going wrong please? 😵 Thanks!

Best answer by srija piratla

Hi @Rianna ,

 

Try this expression by using “Advanced expression” in the rule .

Value1 is NOT tofloat((substr(tostring(Value2* Value3),0,lastIndexOf(tostring(Value2*Value3),'.')+3)))

The result is invalid. 

Please find the below screenshots and let me know if this still gives you invalid 

Hope this helps. 

Thanks,

Srija Piratla

View original
Did this topic help you find an answer to your question?

Forum|alt.badge.img

Hi @Rianna ,

 

Try this expression by using “Advanced expression” in the rule .

Value1 is NOT tofloat((substr(tostring(Value2* Value3),0,lastIndexOf(tostring(Value2*Value3),'.')+3)))

The result is invalid. 

Please find the below screenshots and let me know if this still gives you invalid 

Hope this helps. 

Thanks,

Srija Piratla


Forum|alt.badge.img+2
  • Data Pioneer
  • May 21, 2024

Hey @srija piratla 

Thanks for sharing your answer. I have tried this expression and it seems working correctly ! Thanks a loooot :) 

Edit**

The only thing i have found here is this formula is not working for integer values. 

For example when we have 0 or 1 for value2 or value3, the correct result must be in {0,value2,value3}. but I see here when this is the case, expression shows invalid. Trying to add some other checks here, but open for all suggests ! Thanks


Forum|alt.badge.img+2
  • Universe Traveller
  • May 21, 2024

Hello @srija piratla 

Thank you so much for helping us! 😃


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings