Io me ne sono accorto solo recentemente... QlikView è senza dubbio un prodotto originale, ma che lo fosse anche nell'ordinamento delle stringhe ...non me lo aspettavo !
Provate a chiedergli di ordinare questi valori:
load * inline [Stringa
002501A76
1ABAC2244
2500A7600
A BA00000
A-B000000
];
Vi aspettereste che vengnano presentati esattamente come sono scritti, o eventualmente potreste avere il dubbio se le cifre vanno prima delle lettere, oppure il contrario
Invece il risultato è questo:
Quando l'ho visto la prima volta ho pensato: "lo fa a caso"; e subito dopo "è un baco della release"
Invece la spiegazione della casa madre è stata circostanziata:
"L'ordinamento in Qlikview viene fatto sul carattere (da sinistra a destra) in base alle impostazioni locali, ma solo i caratteri alfanumerici sono interessanti per la sequenza di ordinamento: tutti gli altri caratteri non-alfanumerici vengono gestiti nello stesso modo, sullo stesso livello. Ad esempio: "A-B" verrà ordinato prima "A BA" perché "-" e "" verranno trattati in maniera uguale.
Se la stringa contiene valori numerici, QlikView ordina la parte numerica della stringa, prima di applicare l'ordinamento alfanumerico. Questo spiega il perché 1ABAC2244 viene ordinate prima di 002500A76 nell'esempio. La parte numerica di 002500A76 sarà 002500 (o 2500) che verrà confrontata con 1 (parte numerica di 1ABAC2244).
Tutti i valori numeri identici ricevono lo stesso simbolo, indifferentemente dalla loro presentazione - ad esempio 0025, 025, 25 etc. sono considerati identici ed i simboli usati per rappresentarli è semplicemente quello che appare nel primo array ("0025" in questo caso) e questo implica che questi valori vengono raggruppati condividendo uno stesso simbolo ..."
E se uno volesse l'ordinamento classico ?
Se invece provate a fare il rank(Stringa), l'ordinamento è ancora diverso....

Leave a comment