Eight Stars

## Convert String to Decimal and Error Handling

Hi All,

I want to convert Data of One of My Column which is holding Value like 7.13084E17. E is nothing but 0's. Value is like 7.13084000000000000.Now I have to Convert it to Decimal. In Output Table Column is in Number(30). Now I am converting it to Decimal Something Like This in variable Port o_row1.column.

Double.parseDouble(row1.column)==0?0ouble.parseDouble(row1.column). Now using this Same in tmap Pass and Fail Table as Var.o_row1.column>=-1.00(Pass) and Var.o_row1.column<=-1.00. But Compilation error is coming saying can't convert from Double to BigDecimal. My Pass Table of tmap o_row1.column is BigDecimal

Accepted Solutions
Nine Stars

## Re: Convert String to Decimal and Error Handling

Use the following settings in tMap.

Regards,

Veeru Boppudi

All Replies
Eight Stars

## Re: Convert String to Decimal and Error Handling

Now changing to BIGDECIMAL in the Variable Port Part getting error in the Validation Part

new BigDecimal(row1.column)=Variable Port for Validation(Big Decimal)

new BigDecimal(row1.column)==0?0:new BigDecimal(row1.column)=Output Port to Pass Table of tmap(Big Decimal)

In the expression Giving Area of Pass and Fail Table tmap

giving like this

Variable Port for Validation(Big Decimal)>=-1

Variable Port for Validation(Big Decimal)<=-1

But getting error as saying Incompatible operand types BigDecimal and int in  Output Port to Pass Table of tmap.

Sixteen Stars

## Re: Convert String to Decimal and Error Handling

You need to show us your tMap with your configuration. This is down to you not using a BigDecimal class. Now we need to know if you are getting the values as Strings with the scientific notation or numbers. We also need to know whether you are trying to use boolean logic with your pass and fail values (should you be using a boolean type or this). Take a look here https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

Something that is certainly wrong (and you've not yet realised) is this.....

`Var.o_row1.column>=-1.00(Pass) and Var.o_row1.column<=-1.00`

>= -1 and <= -1 will be true for -1. You do not want that.

Eight Stars

## Re: Convert String to Decimal and Error Handling

I have attached the settings.Fail setting is Var.v_TWEET_ID_CONVERSION<=-1

pass condition is Var.v_TWEET_ID_CONVERSION>=-1

Eight Stars

## Re: Convert String to Decimal and Error Handling

When I changed my o_TWEET_ID Datatype to Integer and gave this condition

row1.TWEET_ID==null || row1.TWEET_ID==""?0:Integer.parseInt((row1.TWEET_ID))

In my PASS Table of tmap the Port is Integer with Length 30. In Database the Column is NUMBER(30)

@rhall_2_0

Sixteen Stars

## Re: Convert String to Decimal and Error Handling

OK, you need to simplify this and show us an example of something simple that fails. There is too much for me to look at and to try and work out.

By the way, your logic ....

```Fail setting is Var.v_TWEET_ID_CONVERSION<=-1
pass condition is Var.v_TWEET_ID_CONVERSION>=-1 ```

...is still broken. if Var.v_TWEET_ID_CONVERSION is -1 it will meet BOTH of those conditions. Just remove the = from one of them.

Nine Stars

## Re: Convert String to Decimal and Error Handling

Hi Abhi,

Please provide some sample input records and expected output.

Regards,

Veeru Boppudi
Eight Stars

## Re: Convert String to Decimal and Error Handling

6.84136E+17

6.917E+17

Like this. Basically Source is String is String and in target Datatype is NUMBER(30). I want to convert it to Number as well as want to handle Error if comes which I am doing using a Variable Port.

Nine Stars

## Re: Convert String to Decimal and Error Handling

What is the error criteria? is your source is excel?

6.84136E+17 is it valid ? if valid what is the output you are expecting?

6.917E+17  is it valid ? if valid what is the output you are expecting?

Please give some sample data for invalid.

Regards,

Veeru Boppudi
Eight Stars

## Re: Convert String to Decimal and Error Handling

Yess Both are Valid.Coming from .csv and .txt. In Output Table Datatype is NUMBER(30).

InValid Record is -1.If any Value comes -1 or less than -1 then it will go ERROR Table.

6.84136E+17 output Port will be like

if row1.TWEET_ID==null?0:row1.TWEET_ID

@vboppudi

Eight Stars

## Re: Convert String to Decimal and Error Handling

Let me know if any details required. I am also trying

Nine Stars

## Re: Convert String to Decimal and Error Handling

Hi Abhi,

Are you looking for this?

Regards,

Veeru Boppudi
Eight Stars

## Re: Convert String to Decimal and Error Handling

Yes in Database ValidData should go with E. But how did u managed to do this?

Nine Stars

## Re: Convert String to Decimal and Error Handling

Use the following settings in tMap.

Regards,

Veeru Boppudi

## Tutorial

Introduction to Talend Open Studio for Data Integration.

## Definitive Guide to Data Integration

Practical steps to developing your data integration strategy.

## Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.