ARRAY
ARRAY はデータベースの拡張型として、PostgreSQL、ClickHouse、Snowflake などのさまざまなデータベースシステムでサポートされています。ARRAY は、A/B テスト、ユーザータグ分析、ユーザープロファイリングなどのシナリオで広く使用されています。StarRocks は多次元配列のネスト、配列のスライス、比較、フィルタリングをサポートしています。
ARRAY カラムの定義
テーブルを作成する際に ARRAY カラムを定義できます。
-- 一次元配列を定義します。
ARRAY<type>
-- ネストされた配列を定義します。
ARRAY<ARRAY<type>>
-- 配列カラムを NOT NULL として定義します。
ARRAY<type> NOT NULL
type は配列内の要素のデータ型を指定します。StarRocks は次の要素型をサポートしています: BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, VARCHAR, CHAR, DATETIME, DATE, JSON, ARRAY (v3.1 以降), MAP (v3.1 以降), STRUCT (v3.1 以降)。
配列内の要素はデフォルトで NULL 可能です。例えば、[null, 1 ,2] のよう に指定できます。配列内の要素を NOT NULL として指定することはできませんが、テーブルを作成する際に ARRAY カラムを NOT NULL として指定することは可能です。以下のコードスニペットの 3 番目の例を参照してください。
例:
-- c1 を要素型が INT の一次元配列として定義します。
create table t0(
c0 INT,
c1 ARRAY<INT>
)
duplicate key(c0)
distributed by hash(c0);
-- c1 を要素型が VARCHAR のネストされた配列として定義します。
create table t1(
c0 INT,
c1 ARRAY<ARRAY<VARCHAR(10)>>
)
duplicate key(c0)
distributed by hash(c0);
-- c1 を NOT NULL の配列カラムとして定義します。
create table t2(
c0 INT,
c1 ARRAY<INT> NOT NULL
)
duplicate key(c0)
distributed by hash(c0);
制限事項
StarRocks テーブルで ARRAY カラムを作成する際には、次の制限が適用されます:
- v2.1 より前のバージョンでは、ARRAY カラムは重複キーテーブルでのみ作成できます。v2.1 以降では、他のタイプのテーブル(Primary Key、Unique Key、Aggregate)でも ARRAY カラムを作成できます。ただし、集計テーブルでは、そのカラムでデータを集計するために使用される関数が replace() または replace_if_not_null() の場合にのみ ARRAY カラムを作成できます。詳細は 集計テーブル を参照してください。
- ARRAY カラムはキー カラムとして使用できません。
- ARRAY カラムはパーティションキー(PARTITION BY に含まれる)またはバケッティングキー(DISTRIBUTED BY に含まれる)として使用できません。
- 配列は最大 14 レベルのネストが可能です。