> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# group_by_* セッション設定

> group_by_* グループに含まれる ClickHouse のセッション設定。

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            実験的な機能
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["バージョン", "デフォルト値", "コメント"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        バージョン履歴
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>型</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>デフォルト値</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          再起動せずに変更可能
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

これらの設定は [system.settings](/ja/reference/system-tables/settings) で参照でき、[ソース](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp) から自動生成されています。

<div id="group_by_overflow_mode">
  ## group\_by\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowModeGroupBy" default_value="throw" />

集約に使用する一意なキーの数が上限を超えた場合の動作を設定します。

* `throw`: 例外を送出する
* `break`: クエリの実行を停止し、途中までの結果を返す
* `any`: set に含まれているキーについては集約を続行しますが、新しいキーは set に追加しません。

`any` を使用すると、GROUP BY の近似結果を得られます。この近似の精度は、
データの統計的な性質に依存します。

<div id="group_by_top_k_optimization_observation_rows">
  ## group\_by\_top\_k\_optimization\_observation\_rows
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="65536" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "65536"},{"label": "新しい実験的設定: 各集約ストリームが、何も除外しない完全な top-K ヒープを純粋なオーバーヘッドと判断して固定するまでに観測する行数。"}]}]} />

`enable_group_by_top_k_optimization` の場合、各集約ストリームが、入力行の 10% 未満しかスキップせず、容量より少ないキーしか追い出さなかった完全な top-K ヒープを固定するまでに観測する行数です。ヒープが固定されると、最適化が無効であるかのように集約が続行されます。

実効ウィンドウはヒープの予約済みサイズの少なくとも 2 倍です。そのため、ヒープは評価される前に必ず満杯になる機会があります。`0` はこの固定を無効にします (ただし、境界の同順位セットがヒープの容量を超えた場合、ヒープは引き続き固定されます) 。

これは、`ORDER BY` のない `GROUP BY keys LIMIT K` クエリには影響しません。この形式では固定は常に無効です。この形式のプランには、ヒープがハッシュテーブルを制限している間にのみ効果を発揮する合成ソートが含まれるためです。ヒープを固定すると、最適化なしの場合よりも遅いプランになってしまいます。

<div id="group_by_two_level_threshold">
  ## group\_by\_two\_level\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

この数以上のキーになると、二段階集約が開始されます。0 の場合、しきい値は設定されません。

<div id="group_by_two_level_threshold_bytes">
  ## group\_by\_two\_level\_threshold\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="50000000" />

集約状態のサイズが何バイト以上になると二段階集約を使用し始めるかを指定します。0 の場合、しきい値は設定されません。いずれか 1 つのしきい値がトリガーされると、二段階集約が使用されます。

<div id="group_by_use_nulls">
  ## group\_by\_use\_nulls
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

[GROUP BY 句](/ja/reference/statements/select/group-by)で集約キーの型をどのように扱うかを変更します。
`ROLLUP`、`CUBE`、または `GROUPING SETS` 指定子を使用すると、一部の結果行の生成時に使われない集約キーが生じることがあります。
この設定に応じて、これらのキーに対応するカラムは、該当する行でデフォルト値または `NULL` で埋められます。

設定可能な値:

* 0 — 欠損値の生成には、集約キー型のデフォルト値が使用されます。
* 1 — ClickHouse は SQL 標準に従って `GROUP BY` を実行します。集約キーの型は [Nullable](/ja/reference/data-types/nullable) に変換されます。対応する集約キーのカラムは、そのキーが使われなかった行では [NULL](/ja/reference/syntax#null) で埋められます。

関連項目:

* [GROUP BY 句](/ja/reference/statements/select/group-by)
