Pular para o conteúdo principal

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.
Query
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:
  • uniqArray retorna 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
Response
   ┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │                      5 │                          5 │
   └────────────────────────┴────────────────────────────┘

Veja também

Última modificação em 10 de junho de 2026