Da QlikView 9 ci sono importanti novità sui costi delle licenze. Il listino prezzi è stato completamente rivisto, unificando i tipi delle licenze presenti fino ad oggi.
Se volete un preventivo specifico per le esigenze della vostra azienda sentitevi liberi di scriverci o, in alternativa, compilate il modulo verde a destra di questa pagina.
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....

QlikView 9 ha infine raggiunto lo stato di release candidate.
Uscirà fra qualche mese, ma in Italia sarà probabilmente annunciato ufficialmente verso fine anno.
Ha così tante novità che se chiedete a più sviluppatori quali siano le cose nuove, ognuno di loro vi dirà qualcosa di diverso... e avranno tutti ragione. Provare per credere.
Ecco le innovazioni principali secondo il mio punto di vista:
- forte incentivo all'utilizzo del server (ci saranno novità per le licenze)
- client per iPhone (già disponibile nell'App Store, si può collegare a QlikView Server precedenti alla 9, ad esempio 8.50)
- tutti i client hanno ora le stesse funzionalità, mentre prima il client Java (ad esempio) era indietro rispetto al plugin per Internet Explorer; anche la grafica è stata resa omogenea
- possibilità di aprire un altro documento mantenendo le selezioni di quello attivo (le grandi aziende che analizzano tutti i loro processi con QlikView saranno con le bave alla bocca, era una funzionalità molto richiesta)
- Dynamic Data Update: ricaricamenti in background dei dati, qualcosa concettualmente simile al Partial Reload ma che potrà anche eliminare righe (era il grosso limite del Partial Reload), il Server invierà al client i dati in push (modalità asincrona, automaticamente)
- le Azioni permetteranno di implementare la maggior parte delle funzionalità che prima si creavano con le macro, in maniera decisamente più elegante
- possibilità di inserire dei link http (tramite azione collegata ad un pulsante oppure come tipo di visualizzazione dei dati di una colonna in una tabella)
- Sparklines: possibilità di inserire un grafico con una dimensione all'interno della cella di una tabella (si decide la dimensione nella rappresentazione dell'espressione)
- nuove possibilità di rappresentazione grafiche attraverso i Trellis (grafici iterati su una dimensione)
- possibilità di esportare/importare un XML con gli sheet e gli oggetti di presentazione del .qvw (ciò apre le porte a due cose: generazione programmatica di documenti QlikView; inserimento di documenti QlikView in sistemi di controllo versione, seppur in modo "manuale" esportando ed importando... Ma c'è potenziale per superare anche questo ostacolo in versioni future)
- le listbox potranno mostrare in visualizzazione ad albero i valori dei campi generati con Hierarchic Load (non solo, ad esempio analizzando i log di un webserver si potrà usare la visualizzazione ad albero col separatore / per analizzare gli URL delle richieste)
- eliminato il limite di due miliardi di righe nelle tabelle (non che io abbia mai visto qualche documento che lo raggiungesse), ora sul serio non c'è limite se non quello imposto dalla RAM del server
- non sarà più necessaria la licenza professional per creare oggetti su QlikView Server, e sarà possibile creare anche degli sheet nuovi (fino ad oggi non si poteva fare, e si aggirava il problema prevedendo già uno sheet vuoto per personalizzazioni dei singoli utenti)
- l'utente che crea oggetti in un documento sul server potrà decidere se mostrarli selettivamente agli utenti che vorrà (invece che a tutti oppure solo a sé stesso)
- nuovo tipo di oggetto: campo di ricerca, permetterà di creare una casellina che cercherà in tutti i campi del documento, oppure in determinati campi impostati nelle proprietà, mostrando i risultati dei singoli campi (utile ad esempio per cercare contemporaneamente in un campo codice e in un campo descrizione, senza doverli necessariamente concatenare in un terzo campo)
- man mano che si fa una ricerca in un campo, la stringa di testo cercato verrà evidenziata in giallo nei risultati
- wizard per creare grafici a boxplot oppure candele giapponesi (che era comunque già possibile fare a mano, si veda http://blog.querit.it/2008/03/grafici-a-candele-giapponesi.html
- eseguendo QlikView senza licenza si attiverà QlikView Personal: sarà possibile creare documenti senza alcuna limitazione, ma non potranno essere aperti da altri utenti; sarà possibile pubblicarli e scaricarli su un sito della QlikTech dedicato ad applicazioni QlikView opensource
Sto scrivendo a memoria, quindi di sicuro ho dimenticato qualcosa.
E a voi quale novità in particolare sembra innovativa?
Era metà Maggio 2007 quando HP annunciò la sua nuova piattaforma di data warehouse, Neoview. Cercava di essere una soluzione verticale e all-in-one, ideale per grandi aziende che volessero basare tutti i processi, non solo quelli decisionali, sulla Business Intelligence; chiaramente HP era ben felice di metterci sia il software che l'hardware.
Diverso approccio aveva inizialmente QlikView, apprezzato per lo più da medie aziende a causa di un limite delle tecnologie di allora più che per un design flaw, ma già mentre Neoview nasceva molte grandi aziende avevano adottato QlikView per gestire enormi moli di dati, dimostrando l'eccellenza del design lungimirante.
Il risultato? Forse perché entrambi i sistemi puntano allo sviluppo di applicazioni trasversali in tempo breve, forse perché (ora) sono entrambi ideali per grandi aziende, ma poche ore fa QlikTech ha annunciato la partnership con HP e la possibilità per QlikView di caricare dati da Neoview.
Il mio parere? Un ottimo accordo in tempi di crisi, mutua pubblicità ed un modo per HP per risollevarsi (si è aggrappata ad una scala mobile); una notizia forse meno interessante dal punto di vista puramente tecnico.
Mi riservo di cambiare idea in futuro analizzando qualche caso pratico, ma per ora mi sembra soltanto l'ennesimo custom data source.
E voi che ne pensate?
IT
Spesso sviluppando capita di avere a che fare con caricamenti molto lenti, ad esempio da viste con molte join (che sarebbe opportuno rifare a livello QlikView, ma questa è un'altra storia) oppure server o DBMS obsolescenti.
Durante la fase di sviluppo si fanno molti ricaricamenti consecutivi per provare piccole modifiche, e perdere tempo risulta inutile, inefficiente, fastidioso. Per aggirare il problema è possibile dire a QlikView di ricordarsi ciò che gli ha ritornato una load (o una select) tramite il comando buffer:
buffer (stale 8 hours) sql select * from tabella;
buffer (stale 1 hour) load id, capitalize(desc) as desc from tab2.qvd (qvd);
Così facendo QlikView la prima volta che viene eseguito crea un QVD temporaneo e, finché non "scade" (la durata viene specificata fra le parentesi) dalla seconda volta in poi carica da quello anziché dalla vera fonte dati.
E caricare da QVD significa caricare a circa 30 megabyte al secondo, mentre una vista pesante potrebbe restituire cento righe al secondo, che magari sono soltanto 2 kb.
Se dovesse essere modificato il testo della load (ad esempio viene caricato un campo in più, o viene usato capitalize() per un campo di testo) QlikView sarà sufficientemente furbo da ricaricare dalla vera fonte dati e sostituire il buffer.
EN
Quite often when developing you keep reloading your document, just to test slight changes. Having to wait slow SELECTs is really upsetting, so here is a way to tell QlikView not to reload them every single time, but rather save its content on a fast QVD when the query itself is unchanged:
buffer (stale 8 hours) sql select * from tabella;
buffer (stale 1 hour) load id, capitalize(desc) as desc from tab2.qvd (qvd);
QlikView will reuse the same data for 8 and 1 hours (in the example above).

IT
QlikView gestisce le date come il numero (decimale) di giorni passati dal 30 Dicembre 1899. Non ho mai capito perché, è una scelta abbastanza strana. Speravo che fosse un tributo a qualche evento interessante del 30 dicembre 1899, ma l'unico fatto apparentemente rilevante è la morte di un politico comunista svedese... Che delusione.
Tornando a noi, ciò significa che:
- il giorno 2 è il primo Gennaio 1900 a mezzanotte
- il giorno 2.5 è il primo Gennaio 1900 a mezzogiorno
Ne consegue un gran numero di proprietà comode per elaborare date, ma giocando con una data come se fosse un numero, la sua rappresentazione diventa numerica. Per tornare alla rappresentazione di data basta mettere attorno date() (o timestamp() se vogliamo mostrare anche l'ora; oppure impostare il formato nell'oggetto che mostra il campo con la data in questione).
Qualche esempio:
floor(now())equivale atoday(), cioè la mezzanotte di oggi (solo molto più pesante)ceil(now())è la mezzanotte di domaninow()+7è fra una settimana a quest'oradata_pagamento - data_scadenza_fatturaè il numero di giorni di ritardo di pagamentotoday() + 365*4non è oggi fra 4 anni causa anni bisestili, per quello è più furbo usareaddyears(today(), 4)today() + 30probabilmente non è lo stesso giorno del mese prossimo, per quello è più furbo usareaddmonths(today(), 1)37145 + 0.36575è circa uguale amakedate(2001, 9, 11) + maketime(8, 46, 40)che equivale a'11/09/2001 8.46.40'39739è il mio prossimo compleanno
Una piccola nota sulla funzione date(espressione [, formato]): serve per formattare il primo argomento secondo la stringa di formato, se non viene specificata viene usato il valore della variabile DateFormat (impostato ad inizio script).
Attenzione però: modifica solo la rappresentazione, ma non tocca il dato. Infatti date(makedate(2008)+maketime(12), 'DD/MM/YYYY') ci mostrerà '01/01/2008' ma conterrà anche l'ora (mezzogiorno). Per capire come mai la rappresentazione sia diversa dal valore numerico sottostante, vedere il mio vecchio post sulla rappresentazione testuale, numerica, duale. Volendo togliere ora, minuti, secondi è sufficiente approssimare per difetto con floor(), come dico più sopra.
EN
QlikView stores dates as the number of days since 30 december 1899. Thus:
2is 1 jan 1900, at midnight2.5is 1 jan 1900, at middayfloor(now())is the same astoday()(just slower)ceil(now())means tomorrownow()+7means next week at this timepayment_date - invoice_due_dateis the number of payment delay daystoday() + 365*4is not today in 4 years, which in fact isaddyears(today(), 4)today() + 30is probably not this day next month, which isaddmonths(today(), 1)37145 + 0.36575is almostmakedate(2001, 9, 11) + maketime(8, 46, 40)which is'11/09/2001 8.46.40'39739is my next birthday
Just a note: date(expression [, format]) doesn't actually modify the date, it justs shows it with a given format. Thus date(now(), 'YYYY-MM-DD') = now() yields true, even if it's not midnight.
If it seems odd to you, see my post about dual().
IT
È uscito QlikView 8.50.6206.5: nessuna funzionalità nuova, come si intuisce dal numero di versione è soltanto un hotfix della precedente 8.50.6091.
Corregge un bel po' di bug piccoli ma fastidiosi, fra cui prestazioni del client Java, piccoli dettagli del copia e incolla di oggetti QlikView dentro Office (che è una novità di QlikView 8.x), e soprattutto finalmente si riesce a ridimensionare le colonne delle tabelle senza impazzire! Per quest'ultima ragione consiglio l'aggiornamento a chiunque stia utilizzando l'8.50.6091.
EN
QlikView 8.50.6206.5 is out: no new features, just a hotfix release.
It fixes a huge number of small bugs, including the resize of columns in table objects and graphs, which was kind of broken since 8.50.6091.
Novità! Se vuoi essere contattato da un consulente Querit lascia nome e numero e Ti telefoneremo:
Recent Comments