Przykłady funkcji konkatenacji
Funkcji CONCAT() nie należy mylić ze słowem kluczowym skryptu CONCATENATE.
W najprostszej formie funkcja Concat() jest wykorzystywana do łączenia wartości/słów/selekcji w jeden ciąg znaków. Można ją jednak stosować na wiele sposobów przydatnych w rozwiązywaniu problemów. Wszystkie przykłady opierają się na następującej tabeli:
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 |
Prosta konkatenacja ciągu znaków
Jak wspomniano wcześniej, funkcja concat umożliwia połączenie listy wartości w ciąg znaków. Wartości te mogą być sztywno kodowane lub uzależnione od selekcji/danych.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Efektem tej prostej instrukcji concat byłoby połączenie wszystkich możliwych wartości z kolumny MyColumn. Można dodać słowo kluczowe DISTINCT. Zapewniłoby to, że każda wartość będzie wyświetlana tylko raz w ciągu:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
Korzystając z prostej funkcji concat, można dodawać do funkcji wagę sortowania, aby uporządkować wartości ciągów znaków według wybranej kolumny. W poniższym przykładzie w celu posortowania wartości dodana jest kolumna daty.
=CONCAT(MyColumn, ',', Date)
Wynik: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Funkcja Concat() w obrębie instrukcji Set/wyrażenia
Przykład: Przekazywanie wielu wartości dynamicznych do wyrażenia analizy zestawów
Istnieją sytuacje, w których pożądane jest przekazanie dynamicznej selekcji wartości do instrukcji set. W tym celu należy dodać do ciągu znaków pojedyncze cudzysłowy, aby funkcja CONCAT() zwróciła takie wartości, jak: 'JKL','VWX'. Nie można jednak po prostu dodać pojedynczych cudzysłowów, ponieważ zostałyby zinterpretowane podczas dokonywania oceny funkcji Concat, a nie podczas dokonywania oceny wyrażenia set. Zamiast tego należy użyć funkcji Chr():
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
Następnie można przekazać tę instrukcję concat do środka wyrażenia:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
W większości przypadków technika ta jest przydatna w przypadku występowania wysp danych. Umożliwia ona przekazywanie do wyrażenia wartości, które nie wpłyną na żadną część modelu danych, ponieważ tabela wyspy danych nie jest do niego dołączona.
Funkcja Concat() w skrypcie
Funkcji Concat można także użyć w skrypcie do konwertowania wielu wierszy w jedną wartość pojedynczej kolumny — tak samo jak w przypadku każdej innej agregacji.
Wynik funkcji CONCAT w skrypcie wygląda następująco (przy uwzględnieniu źródła danych, jakiego wcześniej użyto):
Poniżej przedstawiono wynik tej funkcji skryptu:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Korzystanie z funkcji Rank() celem wywarcia wpływu na funkcję Concat()
Zastosowanie innych funkcji w połączeniu z funkcją concat() zapewnia uzyskiwanie jeszcze lepszych rezultatów. W tym przypadku użyto funkcji Rank() w celu pobrania trzech pól o najwyższych wartościach (na podstawie pola Value) i połączenia ich w jeden ciąg znaków.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Wynik: ABC,MNO,STU