BUCKET
サポートされている値を、固定数のハッシュバケットのいずれかにマッピングします。BUCKET() は、0 から bucket_count - 1 までの決定的な UInt32 値を返し、PARTITION BY および CLUSTER BY 式向けに設計されています。
構文
BUCKET(<bucket_count>, <value>)
引数
いずれかの引数が NULL の場合、この関数は NULL を返します。
例
-- Returns an integer from 0 through 15.
SELECT BUCKET(16, 'customer-123');
固定のバケット数を使用して、値の種類が多いキーをパーティション分割します。
CREATE TABLE customer_events (
customer_id BIGINT,
event_time TIMESTAMP,
payload VARIANT
)
PARTITION BY (BUCKET(32, customer_id));
分散取り込みでは、評価後のパーティション値が同じ行を同じライターにルーティングできます。
CREATE TABLE customer_events_distributed (
customer_id BIGINT,
event_time TIMESTAMP
)
PARTITION BY (BUCKET(32, customer_id))
WRITE_DISTRIBUTION_MODE = 'hash';
WRITE_DISTRIBUTION_MODE = 'hash' には PARTITION BY 句が必要です。