Перейти к основному содержимому

Примеры функций Concat

Не следует путь функцию CONCAT() с ключевым словом скрипта CONCATENATE.

В простейшей форме функция Concat() используется для объединения вместе значений, слов, выборок в одну строку. Однако ее можно использовать различным образом для решения различных проблем. Все примеры основаны на следующей таблице:

Example string table data
Пример строки табличных данных
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

Простое объединение строк

Как было отмечено ранее, функция concat позволяет объединить целый ряд значений в одну строку. Эти значения могут быть жестко прописаны или определяться в зависимости от выбранных значений или данных.

=CONCAT(MyColumn,',')

=CONCAT(DISTINCT MyColumn,',')

Данное простое выражение concat объединяет в одну строку все возможные значения из столбца MyColumn. Можно также добавить ключевое слово DISTINCT. При этом каждое значение будет отображаться в строке только один раз.

ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX

При использовании простой функции concat имеется возможность добавить вес сортировки в функцию, чтобы упорядочить строковые значения по выбранному столбцу. В следующем примере добавляет столбец данных для сортировки значений.

=CONCAT(MyColumn, ',', Date)

Результат: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF

Функция Concat() внутри выражения/оператора Set

Example: Передача нескольких динамических значений в выражение анализа множеств

Иногда требуется передать в оператор set динамическую выборку значений. Для этого необходимо добавить несколько одиночных кавычек в строку, чтобы функция CONCAT() возвращала что-то наподобие 'JKL','VWX'. Однако одиночные кавычки нельзя использовать, поскольку они будут обрабатываться при оценке выражения Concat, а не во время оценки выражения множества. Вместо этого используйте функцию Chr():

=CONCAT(Chr(39)&MyColumn&Chr(39),',')

Затем можно передать этот оператор concat внутрь выражения:

=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)

В большинстве случае данный метод будет использоваться при наличии островков данных. Это позволяет передать значения в выражение, что не отразится ни на какой части модели данных, поскольку таблица островка данных не входит в нее.

Функция Concat() в скрипте

Функцию Concat также можно использовать в скрипте для преобразования нескольких строк в одно значение одного столбца, точно так же, как любое другое агрегирование.

Для исходных данных, которые применялись ранее, на стороне скрипта CONCAT результат будет следующим:

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

Далее приведен результат функции скрипта:

Пример вывода в виде таблицы
Table CombinedData
Data ABC,DEF,GHI,JKL
Data1 MNO,PQR,STU,WVX

Использование функции Rank() для воздействия на функцию Concat()

Как только вы начнете использовать другие функции вместе с функцией concat(), вы начнете получать более понятные результаты. В данном примере с помощью функции Rank() выбирались три лучших работника (на основе значения) и объединялись вместе в одну строку.

=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')

Результат: ABC,MNO,STU