aggregate_function_input_format
入力フォーマットがAggregateFunction 型のカラムをどのように読み取るかを指定します。
設定可能な値:
state— 出力フォーマットが書き出すのと同じ、集約関数のシリアル化された状態 (デフォルト) 。value— 集約関数の引数の値、または引数が複数ある場合はそれらのタプル。値は集約され、状態が構成されます。array— 上記のvalueオプションで説明した値の配列。配列のすべての要素が集約され、状態が構成されます。
value モードおよび array モードでは、フォーマットは対象のカラムを値の型として読み取ります。すなわち、AggregateFunction(f, T) の場合は T、AggregateFunction(f, T1, T2) の場合は Tuple(T1, T2)、array モードではそれらの Array として扱われます。値は、そのフォーマットが当該の型に用いる表現で書き込まれます。テキストフォーマットでは数値または文字列、JSON フォーマットでは JSON配列、RowBinary や Native ではその型のバイナリエンコーディング、Parquet ではその型のカラム、といった形です。これはすべての入力フォーマットに適用され、Array、Tuple、Map 内にネストされた AggregateFunction にも適用されます。
例
次の構造を持つテーブルの場合:
aggregate_function_input_format = 'value' の場合:
aggregate_function_input_format = 'array' の場合:
value および array フォーマットは、挿入時に値の生成と集約を行う必要があるため、デフォルトの state フォーマットよりも低速です。
aggregate_functions_null_for_empty
クエリ内のすべての集約関数を -OrNull 接尾辞付きに書き換える機能を有効または無効にします。SQL標準互換性のために有効にしてください。 これは、一貫した結果を分散クエリで得るために、クエリの書き換え (count_distinct_implementation 設定と同様) によって実装されています。 設定可能な値:- 0 — 無効。
- 1 — 有効。
aggregate_functions_null_for_empty = 0 の場合、次のような結果が得られます。
aggregate_functions_null_for_empty = 1 を 1 にすると、結果は次のようになります: