arrayJoin toma cada fila y genera un conjunto de filas (unfold).
Esta función toma un array como argumento y expande la fila de origen en varias filas, una por cada elemento del array.
Todos los valores de las columnas se copian sin más, excepto los de la columna en la que se aplica esta función; estos se sustituyen por el valor correspondiente del array.
Si el array está vacío,
arrayJoin no genera ninguna fila.
Para devolver una sola fila que contenga el valor predeterminado del tipo de array, puede envolverlo con emptyArrayToSingle, por ejemplo: arrayJoin(emptyArrayToSingle(...)).Query
Response
arrayJoin afecta a todas las secciones de la consulta, incluida la cláusula WHERE. Observe que el resultado de la siguiente consulta es 2, aunque la subconsulta devolvió 1 fila.
Query
Response
arrayJoin. En este caso, la transformación se realiza varias veces y las filas se multiplican.
Por ejemplo:
Query
Response
Buena práctica
arrayJoin con la misma expresión puede no producir los resultados esperados debido a la eliminación de subexpresiones comunes.
En esos casos, considere modificar las expresiones de array que se repiten con operaciones adicionales que no afecten al resultado del JOIN. Por ejemplo, arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, []))
Ejemplo:
Query
ARRAY JOIN en la consulta SELECT, que ofrece posibilidades más amplias.
ARRAY JOIN le permite convertir varias arrays con el mismo número de elementos a la vez.
Ejemplo:
Query
Response
Tuple
Ejemplo:
Query
Row
arrayJoin en ClickHouse proviene de su similitud conceptual con la operación JOIN, pero aplicada a arrays dentro de una sola fila. Mientras que los JOIN tradicionales combinan filas de distintas tablas, arrayJoin “une” cada elemento de un array en una fila, produciendo múltiples filas -una por cada elemento del array- mientras duplica los valores de las demás columnas. ClickHouse también proporciona la sintaxis de la cláusula ARRAY JOIN, lo que hace que esta relación con las operaciones JOIN tradicionales sea aún más explícita al usar la terminología familiar de SQL JOIN. Este proceso también se denomina “desplegar” el array, pero el término “join” se usa tanto en el nombre de la función como en la cláusula porque se asemeja a unir la tabla con los elementos del array, expandiendo efectivamente el conjunto de datos de una forma similar a una operación JOIN.