Saltar al contenido principal

Ejemplos de Funciones de Concatenación

La función CONCAT() no debería confundirse con la palabra clave de script CONCATENATE.

En su forma más simple, Concat() sirve para unir, o concatenar, valores/palabras/selecciones en una misma cadena. No obstante, también se puede utilizar de otras maneras para ayudarnos a resolver problemas. Todos los ejemplos están basados en la siguiente tabla:

Example string table data
Datos de la tabla con cadenas a modo de ejemplo
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

Concatenación simple de cadenas

Como ya se ha mencionado antes, la función concat permite concatenar una lista de valores. Estos valores pueden ser de codificación fija o derivar de selecciones/datos.

=CONCAT(MyColumn,',')

=CONCAT(DISTINCT MyColumn,',')

La sentencia concat simple concatenaría todos los valores posibles desde la columna MyColumn. Podemos añadir la palabra clave DISTINCT. Esto asegurará que cada valor se muestre una única vez en la cadena:

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

Cuando utilizamos una sentencia concat simple, tenemos la opción de añadir un criterio de ordenación a la función, para ordenar los valores de la cadena por una columna de nuestra elección. En el ejemplo a continuación, la columna de fecha se ha añadido para ordenar los valores.

=CONCAT(MyColumn, ',', Date)

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

Concat() dentro de una Expresión/Sentencia Set

Example: Trasladar múltiples valores dinámicos a una expresión de análisis de conjuntos

A veces queremos trasladar una selección dinámica de valores a una sentencia set. Para ello, necesitamos añadir unos símbolos de entrecomillado simple a la cadena, de modo que la función CONCAT() devuelva por ej. 'JKL','VWX'. Pero no podemos dejar los símbolos de entrecomillado tal cual, puesto que serían interpretados al evaluarse la función Concat, y no al evaluar la expresión set. Utilice la función Chr() en vez:

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

Ahora ya puede trasladar esta sentencia concat al interior de una expresión:

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

En la mayoría de los casos, esta técnica se utilizará cuando tenemos islas de datos. Nos permite trasladar valores al interior de una expresión sin afectar ninguna parte del modelo de datos, puesto que la tabla de islas de datos no está conectada al mismo.

Concat() en el script

Concat también puede utilizarse en el script para convertir múltiples filas en un único valor de columna, igual que cualquier otra agregación.

Recordando los datos fuente que utilizamos antes, el resultado en el script de CONCAT es el siguiente:

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

A continuación el resultado de esta función de script:

Ejemplo de resultados en forma de tabla
Table CombinedData
Data ABC,DEF,GHI,JKL
Data1 MNO,PQR,STU,WVX

Usar Rank() para influir en Concat()

Si utiliza otra función de manera conjunta con concat() obtendrá resultados interesantes. En este ejemplo, Rank() se ha utilizado para extraer los tres mejores agentes (basándose en Valor) y concatenándolos.

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

Resultado: ABC,MNO,STU