I have a problem with 0 bevore number in data mart (QV 11.2 SR3).
First I load from SQL a table with profit accounts. In this table there are two accounts 12345 and 0012345. Aftewards I load a table with values and join to the accounts table. The table with values has accounts 12345 and 0012345 too.
The problem: QlikView doesn't make difference between this accounts, shows in front end only 0012345 with count 2 and maps the values to both accounts cross over.
In script I define the format of the account field as Text(). Without success.
Qlikview interprets these as numbers. Use the text() function in the load to keep them in text format:
LOAD text(account) As account,
LOAD Text(ID) as NewID;
...the thing is that TEXT() is coming to help a little too late. QlikView already assumed that ID is numeric and made the transformation in SELECT section before passing it to LOAD section.
How do you mean, Text is coming to late?
LOAD UPPER(Text(KONTO.GUV.SUM.KONTO)) as KONTO.SUM.ACCOUNT,
LOAD UPPER(Text("GUV_SG")) as KONTO.SUM.ACCOUNT,
WHERE Year(GUV_DATUM) >= $(strYEAR);
SELECT * FROM table;
is a two-steps process: first the SELECT is executed and the data is imported in QlikView; second step is the LOAD part, when applying QlikView specific functions to data already loaded.
Automatic data transformation is performed in step 1.
More details: To guess the fields type, QlikView is looking into a small set of your data. In your case, in KONTO.GUV.SUM.KONTO field he sees only numbers (he is looking only in the first few records, he is not parsing everything) and he decides that it is numeric. Any future value in this field will be treated as numeric (if possible).
Now, another trick to tell QlikView the correct types of your fields is to perform an initial inline LOAD with dummy data, but each column having the right type. After that, QlikView will not try to guess the fields type because he already have them (remember autoconcatenation).
In the end, you can remove the dummy data.
Like I said, QlikView performs a check on a small set of data in the first step. In your case he didn't encountered only numeric.
That is why text() doesn't always work.