Identifying if a character in a field is a number or text

I have a row that contains model numbers such as:

YM103Kl - (model category would be YM and capacity is 103)

YAC24LT (YAC and 24)

NC33KLT (NC and 33)

I'm trying to figure out how to extract the initial letters (2 or 3 depending on the model) to identify the model category and the subsequent numbers (single to triple digits) to identify the capacity.

And I notice Domo doesn't appear to have an isnumeric function. Can anyone advise on how to do this?

Best Answer

  • GrantSmith
    GrantSmith Coach
    Answer ✓

    You can use a formula tile in a magic ETL to extract the first X letters and then the following numbers with the REGEXP_REPLACE function:

    Model Category

    REGEXP_REPLACE(`field`, '^(\D+).*$', '$1')
    

    Capacity:

    REGEXP_REPLACE(`field`, '^\D+(\d+).*$', '$1')
    

    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**

Answers

  • GrantSmith
    GrantSmith Coach
    Answer ✓

    You can use a formula tile in a magic ETL to extract the first X letters and then the following numbers with the REGEXP_REPLACE function:

    Model Category

    REGEXP_REPLACE(`field`, '^(\D+).*$', '$1')
    

    Capacity:

    REGEXP_REPLACE(`field`, '^\D+(\d+).*$', '$1')
    

    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**
  • Wow @GrantSmith ! Thanks!

  • Also, if you want to check if something is numeric you can use a regular expression here as well:

    CASE WHEN REGEXP_MATCH(`field`, '^\d+$') THEN 'Numeric' ELSE 'Non-Numeric' END
    

    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**
  • @GrantSmith now I have a request to identify the value following the Capacity (that you determined above). So for example, with "YM103Kl"

    I'd want to identify "K".

    Can you help me with that regexp formula? thanks!

  • You can use the same regular expression for all parts of your string and just use a different matching group:

    Model category:

    REGEXP_REPLACE(`field`, '^(\D+)(\d+)(\D).*$', '$1')
    
    

    Capacity:

    REGEXP_REPLACE(`field`, '^(\D+)(\d+)(\D).*$', '$2')
    
    

    Multiplier:

    REGEXP_REPLACE(`field`, '^(\D+)(\d+)(\D).*$', '$3')
    
    


    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**