Equivalent data type of Unit64 ?

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
kirannumb
Participant
Posts: 51
Joined: Fri Jun 19, 2009 2:23 pm

Equivalent data type of Unit64 ?

Post by kirannumb »

Hi Experts,

When I am running the job I am getting the following error (Warning):

Warning: "When binding output interface field "TDCID" to field "TDCID": Implicit conversion from source type "uint64" to result type "int8": Possible range limitation."

This is the last job in the sequence which is giving above warning. Can anyone please throw some light on the above warning ?

I tried converting the datatype to Numeric, Varchar

Basically TDCID is a database sequence value.

Thanks
Kiran
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

I was wondering what a "unit64" data type was. :wink:

A "uint" is an "unsigned integer" and the warning is telling you that there is a high probability that your unsigned 64bit integer source data won't all fit in your signed 8bit target integer field. You sure you have all them data types right?
-craig

"You can never have too many knives" -- Logan Nine Fingers
kirannumb
Participant
Posts: 51
Joined: Fri Jun 19, 2009 2:23 pm

Post by kirannumb »

chulett wrote:I was wondering what a "unit64" data type was. :wink:

A "uint" is an "unsigned integer" and the warning is telling you that there is a high probability that your unsigned 64bit integer source data won't all fit in your signed 8bit target integer field. You sure you have all them data types right?
Hi Chulett,

Yes all the Data Types are correct. This field has a data type "Number" in database, so I am using numeric in data stage. Also I have tried with NVarChar, but the warning still persists.
Kiran
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

So, what is your database? When you say "number" do you mean an Oracle NUMBER field with no precision (rather than something like NUMBER(10) in other words) or something else? Who decided it was a uint64?

And if your data types are correct, how were you planning on fitting everying from the source field into the target field, seeing how it holds significantly less than what you could be sending?
-craig

"You can never have too many knives" -- Logan Nine Fingers
kirannumb
Participant
Posts: 51
Joined: Fri Jun 19, 2009 2:23 pm

Post by kirannumb »

chulett wrote:So, what is your database? When you say "number" do you mean an Oracle NUMBER field with no precision (rather than something like NUMBER(10) in other words) or something else? Who decided it was a uint64?

And if your data types are correct, how were you planning on fitting everying from the source field into the target field, seeing how it holds significantly less than what you could be sending?
My DataBase is Oracle. The field has a precision I am using Numberic(19) as data type.. Well we haven't mentioned anywhere Unit64 even at the database level.. still the above error throws it.

All other fields are working fine apart from TDCID which is a sequence number and I am using a surrogate key generator to call this sequence as source name. So the columns are loaded with the precision they are assigned to.

As this filed is using a Sequence number is it a good practice to use a surrogate key generator or is there any other better approach ?
Kiran
thompsonp
Premium Member
Premium Member
Posts: 205
Joined: Tue Mar 01, 2005 8:41 am

Post by thompsonp »

What is the job that throws the warning doing?
Somewhere in there you are converting TDCID to an Integer.

What is the definition of your Oracle sequence? What's the maximum value. If that can go bigger than an Integer you need to rethink, if not you may want to align the datatype of the TDCID column to the maximum size of the sequence.

'Unit64' is in the title.
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

It's not unit - it's uint - unsigned integer.

NUMBER(19) does not fit into a regular integer (32 bits) but does fit in a 64-bit structure. That's the 64 of uint64 in the data type.

uint64 is a data type. So talk of "equivalent" is moot. Since SQL does not support unsigned data types, there's no SQL equivalent. However, for what it's worth, the SQL equivalent of int64 (signed) is BigInt.

Somewhere in your job you've mapped this into a TinyInt (int8) data type. DataStage alerts you that not all 64-bit numbers will fit in an 8-bit structure.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
Sairam
Participant
Posts: 42
Joined: Tue Nov 11, 2003 1:09 pm

Post by Sairam »

ray.wurlod wrote:It's not unit - it's uint - unsigned integer.

NUMBER(19) does not fit into a regular integer (32 bits) but does fit in a 64-bit structure. That's the 64 of uint64 in the data type.

uint64 is a ...

Try Using BigInt in the DataStage because it maps to Numeric (19) of the Database.
Maximum Field Size: 20 (leading sign character will appear when content is negative)
Mask: s###################
s = Optional Sign, will only appear for Negative Content
# = Numeric Values, Maximum of 19
Post Reply