Descripción
El combinador Array
se puede aplicar a la función uniq
para calcular el número aproximado de elementos únicos en el conjunto de todos los arrays,
mediante la función de combinador de agregado uniqArray.
La función uniqArray es útil cuando necesitas contar elementos únicos en
varios arrays de un conjunto de datos. Equivale a usar uniq(arrayJoin()), donde
arrayJoin primero aplana los arrays y luego uniq cuenta los elementos únicos.
Ejemplo de uso
En este ejemplo, usaremos un conjunto de datos de ejemplo sobre los intereses de los usuarios en distintas
categorías para mostrar cómo funciona uniqArray. Lo compararemos con
uniq(arrayJoin()) para mostrar la diferencia al contar elementos únicos.
CREATE TABLE user_interests
(
user_id UInt32,
interests Array(String)
) ENGINE = Memory;
INSERT INTO user_interests VALUES
(1, ['reading', 'gaming', 'music']),
(2, ['gaming', 'sports', 'music']),
(3, ['reading', 'cooking']);
SELECT
uniqArray(interests) AS unique_interests_total,
uniq(arrayJoin(interests)) AS unique_interests_arrayJoin
FROM user_interests;La función uniqArray cuenta los elementos únicos de todas las arrays combinadas, de forma similar a uniq(arrayJoin()).
En este ejemplo:
uniqArraydevuelve 5 porque hay 5 intereses únicos entre todos los usuarios: 'reading', 'gaming', 'music', 'sports', 'cooking'uniq(arrayJoin())también devuelve 5, lo que demuestra que ambas funciones cuentan los elementos únicos de todas las arrays
┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │ 5 │ 5 │
└────────────────────────┴────────────────────────────┘