Nested(name1 Type1, Name2 Type2, …)
ネストされたデータ構造は、セルの中にあるテーブルのようなものです。ネストされたデータ構造のパラメータ (カラム名と型) は、CREATE TABLE クエリと同じ方法で指定します。テーブルの各行は、ネストされたデータ構造内の任意の数の行に対応できます。
カラム名にはドットを使用しないでくださいドットを含むカラム名、共通のドット付きプレフィックスを持つカラム、Array 型のカラムは、それぞれ flatten_nested = 1 (デフォルト) でフラット化された Nested 構造の一部として解釈される場合があります。これにより、INSERT 時に予期しない配列長の検証や、名前変更の制限が発生することがあります。可能であれば、カラム名にはドットを使用しないでください。
意図的に Nested のセマンティクスが必要な場合を除き、カラム名ではドットの代わりにアンダースコア (_) や別の区切り文字を使用してください。
例:
この例では、コンバージョン (達成したゴール) に関するデータを含む、ネストされたデータ構造 Goals を宣言しています。‘visits’ テーブルの各行は、0 件または任意の数のコンバージョンに対応できます。
flatten_nested が 0 に設定されている場合 (デフォルトではありません) 、任意のレベルのネストがサポートされます。
ほとんどの場合、ネストされたデータ構造を扱う際は、そのカラムをドット区切りのカラム名で指定します。これらのカラムは、対応する型の配列を構成します。1 つのネストされたデータ構造に属するすべてのカラム配列は、同じ長さになります。
例:
ネストされたデータ構造は、同じ長さの複数のカラム配列の集合として考えるのが最もわかりやすいでしょう。
SELECTクエリで、個々のカラムではなくネストされたデータ構造全体の名前を指定できる唯一の箇所は、ARRAY JOIN clauseです。詳しくは「ARRAY JOIN clause」を参照してください。例:
ネストされたデータ構造全体に対して SELECT を実行することはできません。明示的に指定できるのは、それに含まれる個々のカラムだけです。
INSERT クエリでは、ネストされたデータ構造を構成する各カラム配列を、それぞれ個別のカラム配列であるかのように別々に渡す必要があります。挿入時には、それらの長さが同じであることがシステムによってチェックされます。
DESCRIBE クエリでは、ネストされたデータ構造内のカラムも同様に個別に一覧表示されます。
ネストされたデータ構造内の要素に対する ALTER クエリには制限があります。