1 of 1 people found this helpful
When you say you "explicitly cast those to integers" - where does this happen? Do you change type of the column via data type switcher "Number (whole)"? This will not help here as those casts are only applied to the output fields and do not impact join clauses.
Yes, it is a known issue design limitation however.
Your Oracle numbers, most likely, are stored as NUMBER(38,0) which means 38 digit number (and 0 decimal digits) which is too big of a number to represent as 64-bit integer that is used for proper integer types. In order to bring those, potentially huge, numbers in Tableau is forced to store them as floating point numbers hence the type mismatch.
To work around this please cast join keys directly in your Custom SQL: CAST( <field> as NUMBER(18,0))
You can either cast field you have or project one more copy i.e (SELECT <field> AS orig, CAST(field AS ...
The cast you suggested did the trick!
Previously I did this:
cast(C.FISCAL_YEAR_NUMBER_INT as integer) FY
even though the table I selected from stored that field as INTEGER already.
So I learned something about Oracle numeric data type today: INTEGER is just an alias of NUMBER(38,0)
Thanks for your help!
Does this require write access to either of the data sources? I can't seem to get this to work.
No, it does not.
What seems to be the issue, Gandalf?
Dmitry, Thank you for your help. Since my replies were likely only helpful to me in working this out and offer no further information for the rest of the community to benefit from, I have deleted them to keep the post above clean and useful. Many, many thanks.
I just happy we were able to figure this out.