Partager via


Fonction d’agrégation bitmap_construct_agg

S’applique à :coche marquée oui Databricks SQL case marquée oui Databricks Runtime 13.3 LTS et versions ultérieures

Retourne le niveau OR de bits de toutes les valeurs de positions de bits comprises entre 0 et 32767 dans un groupe en tant que BINARY.

La fonction est couramment utilisée pour compter le nombre d'un ensemble dense de nombres entiers distincts en combinaison avec les fonctions bitmap_bucket_number(), bitmap_count() et bitmap_bit_position().

Pour agréger des bitmaps sous forme de valeurs numériques intégrales, utilisez la fonction d'agrégation bit_or().

Syntaxe

bitmap_construct_agg(expr) [FILTER ( WHERE cond ) ]

Cette fonction peut également être appelée en tant que fonction de fenêtre à l’aide de la clause OVER.

Arguments

  • expr : Une expression numérique intégrale comprise entre 0 et 32767 représentant une position de bit dans une chaîne BINARY.
  • cond : expression booléenne facultative qui filtre les lignes utilisées pour l’agrégation.

Retours

Un BINARY de longueur 4096.

Exemples

> SELECT hex(trim(TRAILING X'00' FROM bitmap_construct_agg(val))) FROM VALUES(0) AS T(val);
 01

> SELECT hex(trim(TRAILING X'00' FROM bitmap_construct_agg(val))) FROM VALUES(15) AS T(val);
 0080

> SELECT hex(trim(TRAILING X'00' FROM bitmap_construct_agg(val)))
   FROM VALUES(1), (3), (7), (15), (31) AS T(val);
 8A800080

-- Count the number of distinct values
> SELECT sum(num_distinct) AS num_distinct
    FROM (SELECT bitmap_bucket_number(val),
                 bitmap_count(bitmap_construct_agg(bitmap_bit_position(val)))
            FROM VALUES(1), (2), (1), (-1), (5), (0), (5) AS t(val)
            GROUP BY ALL) AS distinct_vals_by_bucket(bucket, num_distinct)
  5