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

> クエリレベルの設定

# クエリレベルのセッション設定

<div id="overview">
  ## 概要
</div>

特定の設定を指定してステートメントを実行する方法は複数あります。
設定はレイヤー単位で適用され、後続の各レイヤーが前のレイヤーの設定値を上書きします。

<div id="order-of-priority">
  ## 優先順位
</div>

設定を定義する際の優先順位は、次のとおりです。

1. ユーザーに直接、または設定プロファイル内で設定を適用する

   * SQL (推奨)
   * 1 つ以上の XML または YAML ファイルを `/etc/clickhouse-server/users.d` に追加する

2. セッション設定

   * ClickHouse Cloud の SQL Console または
     `clickhouse client` の対話型モードから `SET setting=value` を送信します。同様に、HTTP protocol で ClickHouse
     セッションを使用することもできます。これを行うには、
     `session_id` HTTP parameter を指定する必要があります。

3. クエリ設定

   * 非対話型モードで `clickhouse client` を起動する際に、起動
     parameter `--setting=value` を指定します。
   * HTTP API を使用する場合は、CGI parameter (`URL?setting_1=value&setting_2=value...`) を渡します。
   * SELECT クエリの
     [SETTINGS](/ja/reference/statements/select/index#settings-in-select-query)
     句で設定を定義します。設定値はそのクエリにのみ適用され、
     クエリの実行後にデフォルト値または以前の値にリセットされます。

<div id="converting-a-setting-to-its-default-value">
  ## 設定をデフォルト値に戻す
</div>

設定を変更した後でその設定をデフォルト値に戻したい場合は、値に `DEFAULT` を指定します。構文は次のとおりです。

```sql theme={null}
SET setting_name = DEFAULT
```

たとえば、`async_insert` のデフォルト値は `0` です。これを `1` に変更したとします。

```sql theme={null}
SET async_insert = 1;

SELECT value FROM system.settings where name='async_insert';
```

応答は次のとおりです。

```response theme={null}
┌─value──┐
│ 1      │
└────────┘
```

次のコマンドで値を 0 に戻します。

```sql theme={null}
SET async_insert = DEFAULT;

SELECT value FROM system.settings where name='async_insert';
```

設定はデフォルトに戻りました。

```response theme={null}
┌─value───┐
│ 0       │
└─────────┘
```

<div id="custom_settings">
  ## カスタム設定
</div>

共通の[設定](/ja/reference/settings/session-settings)に加えて、ユーザーはカスタム設定を定義できます。
カスタム設定を使うと、クエリ、ポリシー、関数内から参照できる**セッション固有のパラメータ**を渡せます。これは、次のような場合に便利です。

* ユーザーの identity や組織に基づいてデータをフィルタする
* コンテキストに応じて異なるビジネスロジックを適用する
* セッション内でクエリ間にまたがって状態を保持する

カスタム設定名は、定義したリストにある、あらかじめ定義されたプレフィックスのいずれかで始める必要があります。
プレフィックスのリストは、サーバー設定ファイルで定義する[`custom_settings_prefixes`](/ja/reference/settings/server-settings/settings#custom_settings_prefixes)サーバー設定で指定できます。

以下の例では、`SQL_`をカスタムプレフィックスとして使用しています。

```xml theme={null}
<custom_settings_prefixes>SQL_</custom_settings_prefixes>
```

<Note>
  ClickHouse Cloud では、カスタム プレフィックスを指定できません。
  すべてのカスタムユーザー設定は `SQL_` プレフィックスで始まります。
</Note>

カスタム設定を定義するには、`SET` コマンドを使用します。

```sql theme={null}
SET SQL_a = 123;
```

カスタム設定の現在の値を取得するには、`getSetting()`関数を使用します。

```sql theme={null}
SELECT getSetting('SQL_a');
```

<div id="examples">
  ## 例
</div>

これらの例ではいずれも `async_insert` 設定の値を `1` に設定し、
実行中のシステムで設定を確認する方法を示します。

<div id="using-sql-to-apply-a-setting-to-a-user-directly">
  ### SQL を使って設定をユーザーに直接適用する
</div>

これにより、設定 `async_inset = 1` を指定したユーザー `ingester` が作成されます。

```sql highlight={3} theme={null}
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS async_insert = 1
```

<div id="examine-the-settings-profile-and-assignment">
  #### 設定プロファイルとその割り当てを確認する
</div>

```sql theme={null}
SHOW ACCESS
```

```response highlight={3} theme={null}
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ ...                                                                                │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true  │
│ ...                                                                                │
└────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="using-sql-to-create-a-settings-profile-and-assign-to-a-user">
  ### SQL を使用して設定プロファイルを作成し、ユーザーに割り当てる
</div>

これにより、設定 `async_inset = 1` を持つ `log_ingest` プロファイルが作成されます。

```sql theme={null}
CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1
```

これにより、ユーザー `ingester` が作成され、そのユーザーに設定プロファイル `log_ingest` が割り当てられます。

```sql highlight={3} theme={null}
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS PROFILE log_ingest
```

<div id="using-xml-to-create-a-settings-profile-and-user">
  ### XML を使って設定プロファイルとユーザーを作成する
</div>

```xml title=/etc/clickhouse-server/users.d/users.xml highlight={2-6,11} theme={null}
<clickhouse>
    <profiles>
        <log_ingest>
            <async_insert>1</async_insert>
        </log_ingest>
    </profiles>

    <users>
        <ingester>
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <profile>log_ingest</profile>
        </ingester>
        <default replace="true">
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <access_management>1</access_management>
            <named_collection_control>1</named_collection_control>
        </default>
    </users>
</clickhouse>
```

<div id="examine-the-settings-profile-and-assignment">
  #### 設定プロファイルとその割り当てを確認する
</div>

```sql theme={null}
SHOW ACCESS
```

```response highlight={3,5} theme={null}
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ CREATE USER default IDENTIFIED WITH sha256_password                                │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest   │
│ CREATE SETTINGS PROFILE default                                                    │
│ CREATE SETTINGS PROFILE log_ingest SETTINGS async_insert = true                    │
│ CREATE SETTINGS PROFILE readonly SETTINGS readonly = 1                             │
│ ...                                                                                │
└────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="assign-a-setting-to-a-session">
  ### セッションに設定を適用する
</div>

```sql theme={null}
SET async_insert =1;
SELECT value FROM system.settings where name='async_insert';
```

```response theme={null}
┌─value──┐
│ 1      │
└────────┘
```

<div id="assign-a-setting-during-a-query">
  ### クエリ実行時に設定を指定する
</div>

```sql highlight={2} theme={null}
INSERT INTO YourTable
SETTINGS async_insert=1
VALUES (...)
```

<div id="see-also">
  ## 関連項目
</div>

* ClickHouse の設定については、[設定](/ja/reference/settings/session-settings) ページを参照してください。
* [サーバーのグローバル設定](/ja/reference/settings/server-settings/settings)
