BITMAP_HASH
説明
任意の入力タイプの32ビットハッシュ値を計算し、そのハッシュ値を含むBitmapを返します。
構文
BITMAP_HASH(<expr>)
パラメータ
| Parameter | デスクリプション |
|---|---|
<expr> | 任意の値またはフィールド式 |
Return Value
パラメータ<expr>の32ビットハッシュ値を含むBitmapを返します。
- パラメータがNULL値の場合、Empty Bitmapを返します
::: note
使用されるハッシュアルゴリズムはMurMur3です。
MurMur3は高性能で衝突の少ないハッシュアルゴリズムで、ランダム分布に近い値を生成し、カイ二乗分布検定に合格することができます。計算されるハッシュ値は、異なるハードウェアプラットフォームやシード値によって異なる場合があることに注意してください。
このアルゴリズムの性能の詳細については、Smhasherベンチマークを参照してください。
:::
Examples
値の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 |
+------+
| |
+------+