Przeskocz do zawartości głównej

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:

Example string table data
Przykładowe dane tabeli ciągów
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

Example: 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):

ConcatExample:
Load Table,
Concat(MyColumn,',') as CombinedData
Resident Temp
Group By Table;

Poniżej przedstawiono wynik tej funkcji skryptu:

Przykładowe dane wyjściowe w formie tabeli
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