メインコンテンツへスキップ
メインコンテンツへスキップ

uniqArray

説明

Array コンビネータは、 uniq 関数に適用でき、uniqArray 集約コンビネータ関数を使用して、 すべての配列を通して一意な要素のおおよその数を計算します。

uniqArray 関数は、データセット内の複数の配列にまたがる一意な要素を数える必要がある場合に有用です。これは uniq(arrayJoin()) を使用するのと等価であり、arrayJoin が先に配列をフラット化し、その後に uniq が一意な要素を数えます。

使用例

この例では、さまざまなカテゴリにわたるユーザーの興味関心を表すサンプルデータセットを使用して、uniqArray がどのように動作するかを示します。uniq(arrayJoin()) と比較しながら、一意な要素の数え方の違いを示します。

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;

uniqArray 関数は、uniq(arrayJoin()) と同様に、すべての配列をまとめて一意な要素の数を数えます。 この例では:

  • uniqArray は 5 を返します。これは、すべてのユーザーにわたって一意な興味('reading', 'gaming', 'music', 'sports', 'cooking')が 5 つあるためです
  • uniq(arrayJoin()) も 5 を返し、どちらの関数もすべての配列にわたる一意な要素数を数えることを示しています
   ┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │                      5 │                          5 │
   └────────────────────────┴────────────────────────────┘

関連項目