Descrição
O combinador Array
pode ser aplicado à função uniq
para calcular o número aproximado de elementos distintos considerando todos os arrays,
usando a função de agregação com combinador uniqArray.
A função uniqArray é útil quando você precisa contar elementos distintos em
múltiplos arrays em um conjunto de dados. Ela é equivalente a usar uniq(arrayJoin()), em que
arrayJoin primeiro achata os arrays e depois uniq conta os elementos distintos.
Exemplo de uso
Neste exemplo, usaremos um conjunto de dados de exemplo com os interesses dos usuários em diferentes
categorias para demonstrar como uniqArray funciona. Vamos compará-lo com
uniq(arrayJoin()) para mostrar a diferença na contagem de elementos distintos.
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;A função uniqArray conta elementos únicos considerando todas as arrays combinadas, de forma semelhante a uniq(arrayJoin()).
Neste exemplo:
uniqArrayretorna 5 porque há 5 interesses únicos em todas as arrays de todos os usuários: 'reading', 'gaming', 'music', 'sports', 'cooking'uniq(arrayJoin())também retorna 5, mostrando que ambas as funções contam elementos únicos em todas as arrays
┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │ 5 │ 5 │
└────────────────────────┴────────────────────────────┘