CONCATENATE_CONCATENATEX
- Jaime Franco Jimenez

- 4 jul 2023
- 4 Min. de lectura
Empecemos hablando de la función CONCATENATE, esta función une dos cadenas, una cadena puede ser texto, y, otra puede ser número, esta función únicamente une dos cadenas, a diferencia de la función CONCATENATE en Excel, que acepta hasta 255 argumentos.
Sintaxis
CONCATENATE(<texto1>, <texto2>)
· Texto1, es la primera cadena para combinar, podemos usar referencias a columnas.
· Texto2, es la segunda cadena para combinar, podemos usar referencias a columnas.
Si vamos a concatenar directamente texto, debemos de escribirlo entre comillas dobles.
Estamos en Power BI, en la vista de datos, vamos a crear una tabla de una sola columna, que va a contener la unión de dos palabras, para ello, hacemos clic en herramientas de tablas, y, hacemos clic en nueva tabla.

En la barra de fórmulas, abrimos unas llaves, entre comillas dobles, ponemos Funcion, dejando un espacio al final, ponemos coma, entre comillas dobles, dejamos un espacio, y, ponemos la palabra CONCATENATE, cerramos las llaves, y, aceptamos.
Tenemos una tabla de una sola columna con dicha palabra.

Si queremos usar un delimitador, en vez de dejar espacios en las palabras, hacemos lo siguiente:

Tenemos cargado el modelo ventas, el que suelo usar en Excel.

Vamos a agregar una nueva columna, donde vamos a preguntar que, si la provincia es Sevilla, que concatene el centro y el producto, para ello, vamos a la pestaña herramientas de tablas, y, hacemos clic en nueva columna.

Usamos la función IF, donde preguntamos que si la columna provincia es igual a Sevilla.
Columna = IF(Ventas[Provincia]="Sevilla"
En ese caso, usamos la función CONCATENATE, como argumento texto1, es la columna centro, como argumento texto2, volvemos a poner la función CONCATENATE, como argumento texto1, entre comillas dobles, ponemos coma, y, dejamos un espacio, como argumento texto2, ponemos la columna producto.
Cerramos paréntesis.
Columna = IF(Ventas[Provincia]="Sevilla",CONCATENATE(Ventas[Centro],CONCATENATE(", ",Ventas[Producto])))
Aceptamos, y, vemos que donde la provincia es Sevilla, aparece el centro, como delimitador una coma, y, el producto.

Y si queremos que aparezca para las provincias de Sevilla y Huelva, pues, usamos la función OR, que solo acepta dos argumentos, como sigue:
Columna = IF(OR(Ventas[Provincia]="Sevilla",Ventas[Provincia]="Huelva"),CONCATENATE(Ventas[Centro],CONCATENATE(", ",Ventas[Producto])))

Vamos a agregar una nueva tabla, vamos a usar la función SELECTCOLUMNS, que nos va a devolver una tabla con las columnas seleccionadas, el primer argumento es tabla, pues, ponemos la tabla Ventas.
Tabla = SELECTCOLUMNS(Ventas
El siguiente argumento es nombre para la nueva columna, entre comillas dobles, ponemos, por ejemplo, unión.
Tabla = SELECTCOLUMNS(Ventas,"Union"
El siguiente argumento es expresión, donde vamos a concatenar, la columna devuelta debe de estar unida la provincia y el producto si la longitud de la provincia es menor a 6 caracteres, si es mayor a seis caracteres, debe de unir la provincia, el centro, y, el producto.
Entonces, como argumento expresión ponemos la función CONCATENATE, como argumento texto1, ponemos la columna provincia, ponemos el símbolo de concatenar (&), entre comillas dobles, ponemos un espacio y una coma.
Tabla = SELECTCOLUMNS(Ventas,"Union",CONCATENATE(Ventas[Provincia]&" , "
Como argumento texto2, volvemos a poner la función CONCATENATE, como argumento texto1, usamos la función IF, como argumento prueba lógica, usamos la función LEN para calcular la longitud de la columna provincia, ponemos el operador de comparación mayor, y, el número 6.
Tabla = SELECTCOLUMNS(Ventas,"Union",CONCATENATE(Ventas[Provincia]&" , ",CONCATENATE(IF(LEN(Ventas[Provincia])>6
Como argumento valor si verdadero, ponemos la columna centro, ponemos el símbolo de concatenar (&), entre comillas dobles, ponemos un espacio y una coma.
Tabla = SELECTCOLUMNS(Ventas,"Union",CONCATENATE(Ventas[Provincia]&" , ",CONCATENATE(IF(LEN(Ventas[Provincia])>6,Ventas[Centro])&" , "
Como argumento valor si falso, ponemos la columna producto y cerramos paréntesis.
Tabla = SELECTCOLUMNS(Ventas,"Union",CONCATENATE(Ventas[Provincia]&" , ",CONCATENATE(IF(LEN(Ventas[Provincia])>6,Ventas[Centro])&" , ",Ventas[Producto])))
Aceptamos, y, vemos que donde la provincia tiene menos de 6 caracteres, aparece la provincia y el producto, y, donde la provincia tiene mas de seis caracteres, aparece la provincia, el centro, y, el producto.

Ahora veamos la función CONCATENATEX, que es un iterador, esta función trabaja con cada fila de la tabla.
Sintaxis
CONCATENATEX(<table>, <expression>[, <delimiter> [, <orderBy_expression> [, <order>]]...])
· Table, es la table que contiene las filas a evaluar.
· Expresión, expresión que se debe de evaluar para cada fila.
· Delimiter, argumento opcional, separador entre las cadenas.
· orderBy_expression, argumento opcional, cualquier función que como resultado sea ordenar los valores.
· Orden, argumento opcional, indica como ordenar los valores del argumento orderBy_expression, puede ser ascendente, o, descendente, si ponemos 0, o, FALSE, ordena de forma descendente, que es el valor predeterminado si lo omitimos, y, el valor 1, o, TRUE, ordena de manera ascendente.
Esta función devuelve una cadena concatenada.
La función CONCATENATEX, lleva implícito un contexto de fila.
La función VALUES, nos devuelve los registros únicos de una columna
Creamos una nueva tabla, en la barra de fórmulas, ponemos la función VALUES, como argumento ponemos la columna provincia, obtenemos las provincias únicas.

Después del signo igual, vamos a poner la función CONCATENATEX, como argumento texto1, es la función VALUES, como argumento ponemos la columna provincia, como argumento texto2, ponemos la columna provincia sin la función VALUES.
Medida = CONCATENATEX(VALUES(Ventas[Provincia]),Ventas[Provincia])
Vamos a la vista de diagrama, creamos una tabla y nos llevamos la medida, tenemos las provincias concatenadas.

Bajamos a columnas, la columna centro.

Vemos las provincias que han vendido en cada centro.

Pero, todas las provincias salen unidas, vamos a poner un delimitador, para ello, borramos el último paréntesis, ponemos coma, como argumento delimitador, entre comillas dobles, ponemos coma.
Medida = CONCATENATEX(VALUES(Ventas[Provincia]),Ventas[Provincia]," , ")
Aceptamos.

Vamos a cambia la columna provincia por la columna producto, si como argumento delimitador, queremos un salto de línea, usamos la función unichar, donde debemos de poner el código, es igual que la función CARÁCTER en Excel, ponemos el código 10.
Medida = CONCATENATEX(VALUES(Ventas[Producto]),Ventas[Producto],UNICHAR(10))
Vemos que cada producto aparece en una línea.

Miguel Angel Franco




Comentarios