メインコンテンツまでスキップ

BITMAP_HASH

説明

任意の入力タイプの32ビットハッシュ値を計算し、そのハッシュ値を含むBitmapを返します。

構文

BITMAP_HASH(<expr>)

パラメータ

パラメータ説明
<expr>任意の値またはフィールド式

戻り値

パラメータ <expr> の32ビットハッシュ値を含むBitmapを返します。

  • パラメータがNULL値の場合、Empty Bitmapを返します

::: note

使用されるハッシュアルゴリズムはMurMur3です。
MurMur3は高性能で衝突の少ないハッシュアルゴリズムであり、ランダム分布に近い値を生成し、カイ二乗分布検定をパスすることができます。なお、計算されるハッシュ値は、異なるハードウェアプラットフォームやシード値によって異なる場合があります。
このアルゴリズムの性能の詳細については、Smhasherベンチマークを参照してください。

:::

値のMurMur3ハッシュを計算するには、以下のように使用できます:

select bitmap_to_array(bitmap_hash('hello'))[1];

結果は以下のようになります:

+-------------------------------------------------------------+
| %element_extract%(bitmap_to_array(bitmap_hash('hello')), 1) |
+-------------------------------------------------------------+
| 1321743225 |
+-------------------------------------------------------------+

bitmapを使用して列内の個別値をカウントするには、一部のシナリオにおいてcount distinctよりも効率的である場合があります:

select bitmap_count(bitmap_union(bitmap_hash(`word`))) from `words`;

結果は次のようになります:

+-------------------------------------------------+
| bitmap_count(bitmap_union(bitmap_hash(`word`))) |
+-------------------------------------------------+
| 33263478 |
+-------------------------------------------------+
select bitmap_to_string(bitmap_hash(NULL));

結果は以下のようになります:

+------+
| res |
+------+
| |
+------+