ClickHouse/docs/ja/engines/table-engines/special/join.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

5.3 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 40 参加

参加

Inを使用するための準備済みデータ構造 JOIN オペレーション

テーブルの作成

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
) ENGINE = Join(join_strictness, join_type, k1[, k2, ...])

の詳細な説明を参照してください CREATE TABLE クエリ。

エンジン変数

入力 join_strictnessjoin_type 引用符なしのパラメーター。, Join(ANY, LEFT, col1). 彼らは JOIN テーブルが使用される操作。 パラメータが一致しない場合、ClickHouseは例外をスローせず、誤ったデータを返すことがあります。

テーブルの使用法

例えば

左側のテーブルの作成:

CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = TinyLog
INSERT INTO id_val VALUES (1,11)(2,12)(3,13)

右側の作成 Join テーブル:

CREATE TABLE id_val_join(`id` UInt32, `val` UInt8) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val_join VALUES (1,21)(1,22)(3,23)

テーブルの結合:

SELECT * FROM id_val ANY LEFT JOIN id_val_join USING (id) SETTINGS join_use_nulls = 1
┌─id─┬─val─┬─id_val_join.val─┐
│  1 │  11 │              21 │
│  2 │  12 │            ᴺᵁᴸᴸ │
│  3 │  13 │              23 │
└────┴─────┴─────────────────┘

代わりとして、データを取り出すことができます Join 結合キー値を指定するテーブル:

SELECT joinGet('id_val_join', 'val', toUInt32(1))
┌─joinGet('id_val_join', 'val', toUInt32(1))─┐
│                                         21 │
└────────────────────────────────────────────┘

データの選択と挿入

を使用することができ INSERT データを追加するクエリ Join-エンジンテーブル。 テーブルが作成された場合 ANY 厳密さ、重複キーのデータは無視されます。 と ALL 厳密さは、すべての行が追加されます。

実行することはできません SELECT テーブルから直接クエリします。 代わりに、次のいずれかの方法を使用します:

  • テーブルをaの右側に置きます JOIN 句。
  • コールを joinGet この関数を使用すると、テーブルからデータをディクショナリと同じ方法で抽出できます。

制限事項と設定

テーブルを作成するときは、次の設定が適用されます:

その Join-エンジンテーブルは使用できません GLOBAL JOIN オペレーション

その Join-エンジンは、使用 join_use_nulls の設定 CREATE TABLE 声明。 と SELECT クエリは、使用を可能に join_use_nulls あまりにも。 あなたが持って異なる join_use_nulls 設定は、テーブルを結合エラーを得ることができます。 それは結合の種類に依存します。 使用するとき joinGet 機能、同じを使用しなければなりません join_use_nulls の設定 CRATE TABLESELECT 文。

データ記憶

Join テーブルデータは常にRAMにあります。 を挿入する際、列表ClickHouseに書き込みデータブロックのディレクトリのディスクできるように復元され、サーバが再起動してしまいます。

場合はサーバが再起動誤り、データブロックのディスクがいます。 この場合、破損したデータを含むファイルを手動で削除する必要があります。

元の記事