Esempi di funzioni Concat
La funzione CONCAT() non deve essere confusa con la parola chiave CONCATENATE che viene utilizzata negli script.
Nella sua forma più semplice la funzione Concat() viene utilizzata per collegare/unire valori/parole/selezioni in un'unica stringa. Tuttavia, è una funzione che consente di risolvere diversi problemi grazie al suo utilizzo versatile. Tutti gli esempi si basano sulla tabella seguente:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
Concatenazione di una stringa semplice
Come detto in precedenza, la funzione concat consente di unire un elenco di valori. Questi valori possono essere codificati o attivati mediante selezioni/dati.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Questa semplice istruzione concat esegue l'unione di tutti i possibili valori della colonna MyColumn. È possibile aggiungere la parola chiave DISTINCT. In questo modo ogni valore verrà visualizzato solo una volta nella stringa:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
Quando si usa un'istruzione concat semplice, è sempre possibile aggiungere un sistema di ordinamento alla funzione in modo da ordinare i valori della stringa in base a una colonna selezionata. Nell'esempio seguente, la colonna relativa alla data è stata aggiunta per ordinare i valori.
=CONCAT(MyColumn, ',', Date)
Risultato: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Concat() all'interno di un'espressione/istruzione Set
Esempio: Passaggio di valori dinamici multipli a un'espressione set analysis
In alcune occasioni, potrebbe essere necessario trasmettere una selezione dinamica di valori a un'istruzione set. Per eseguire questo passaggio, occorre aggiungere alcune virgolette singole alla stringa in modo che la funzione CONCAT() restituisca ad esempio 'JKL','VWX'. Tuttavia, non è possibile inserire le virgolette singole così come sono poiché in questo caso verrebbero interpretate al momento della valutazione di Concat invece della valutazione dell'espressione set. Utilizzare invece la funzione Chr():
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
A questo punto, sarà possibile trasmettere questa istruzione concat all'interno di un'espressione:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
Nella maggior parte delle istanze questo metodo viene utilizzato in presenza di isole di dati. Consente di trasmettere valori a un'espressione che non incideranno su nessuna parte del modello dati dato che non è stato eseguito il collegamento della tabella dell'isola di dati.
Concat() nello script
La funzione Concat può essere utilizzata anche nello script al fine di convertire più righe in un unico valore a colonna singola, proprio come qualsiasi altra aggregazione.
Tenendo presente i dati sorgente utilizzati in precedenza, il risultato dello script CONCAT sarà il seguente:
Di seguito è riportato il risultato di questa funzione di script:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Utilizzo di Rank() per condizionare Concat()
Quando si inizia a utilizzare un'altra funzione unitamente a concat(), i risultati ottenuti saranno più efficaci. In questo esempio, Rank() è stato utilizzato per raccogliere i tre esecutori principali (in base al Valore) e unirli.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Risultato: ABC,MNO,STU