How to find first non-zero number in TEXT data type in DoMo ETL (Not Beast Mode)

Hi,

 

I have a business requirement where i need to find first non-zero number in a TEXT  column which has leading zeros. The position of non-zero number is not fixed in text column. 

 

Can Anyone help me to find logic for the same in Domo ETL?

 

Below is the example where i need to find whether the text begins with number 2 by ignoring leading zero's .

( Please Note - The data type is Text for below data )

 

1) 002200 

2) 000050

3) 500000

4) 020020

 

Please assist me with the same.

All your help is appreciated. 

 

Best Answers

  • GrantSmith
    GrantSmith Indiana 🔴
    Accepted Answer

    @user11651 

     

    For clarificaiton, after you convert the string to a number you'll need to convert it back to a string and then use the string operations tile to do a left substring to get the 1st character. This will get you the first number to check against.

     

    There are other options utilizing a regex which are a bit more complex but this simple one will pull the first digit it sees that's between 1 and 9 (excluding 0s). Again, this has the assumption you only have a single number in your text.

     

    RegEx (Regular Expression):

     

     

    '^[^1-9]*([1-9]).*$'

     

     

     

     

    You can use this in a Replace Text tile and skip all the intermediary steps, going straight from your dataset instead.

     

    Screen Shot 2020-08-21 at 11.01.18 AM.png

  • jaeW_at_Onyx
    jaeW_at_Onyx Budapest / Portland, OR 🟤
    Accepted Answer

    just convert your column to Numeric then back to text and take a LEFT 1.

     

     

Answers

  • GrantSmith
    GrantSmith Indiana 🔴

    Hi @user11651 

     

    Regular Expressions were made for scenarios just like this one. I'd recommend you do a Google search for regular expressions to learn more about them in depth if you're not familiar with them. Another good resource is https://www.regular-expressions.info/

     

    As for your specific case Domo does allow regular expressions to be used when doing a text replace. Before we go down regular expressions though will that be the ONLY number in your text field or is it possible to have multiple numbers in each record?

     

    If it's only ever going to be a single number the easier route would be to use the Text Formatting tile and set the "How should numbers be handled?" to "Only show numbers". That will strip out any non-numeric character. If you're wanting to then ignore any leading 0s you can use a Set Column Type tile to convert that field to an integer.  Again this only works if you can be certain that the number you're looking for will be the ONLY number in the text.

  • Thanks @GrantSmith @jaeW_at_Onyx  for your quick assistance. 

     

    I have used another logic. 

    Using "Text Formatting"  component I have extracted Number Only using (Show Only Numbers). This helped me to remove any non-numeric character. Then I type casted it from string to integer. 

    After this again i type casted integer to string (This helped me to directly remove leading zeros) by giving first non-zero number