ClickHouse/docs/ja/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure.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

8.3 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 44 辞書のキーとフィールド

辞書のキーとフィールド

その <structure> 条項の辞書のキーや分野での利用ます。

XMLの説明:

<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Attribute parameters -->
        </attribute>

        ...

    </structure>
</dictionary>

属性は要素に記述されています:

DDLクエリ:

CREATE DICTIONARY dict_name (
    Id UInt64,
    -- attributes
)
PRIMARY KEY Id
...

属性はクエリ本文に記述されます:

キー

ClickHouseは次の種類のキーをサポートしています:

  • 数値キー。 UInt64. で定義される <id> タグまたは使用 PRIMARY KEY キーワード。
  • 複合キー。 異なるタイプの値のセット。 タグ内で定義されている <key> または PRIMARY KEY キーワード。

Xmlの構造を含むことができま <id> または <key>. DDL-クエリにsingleを含める必要があります PRIMARY KEY.

!!! warning "警告" Keyを属性として記述することはできません。

数値キー

タイプ: UInt64.

構成例:

<id>
    <name>Id</name>
</id>

設定フィールド:

  • name The name of the column with keys.

DDLクエリの場合:

CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY The name of the column with keys.

複合キー

キーは次のようになります tuple フィールドの任意のタイプから。 その レイアウト この場合、 complex_key_hashed または complex_key_cache.

!!! tip "ヒント" 複合キーは、単一の要素で構成できます。 これにより、たとえば文字列をキーとして使用することができます。

キー構造は要素で設定されます <key>. キーフィールドは、ディクショナリと同じ形式で指定します 属性. 例えば:

<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...

または

CREATE DICTIONARY (
    field1 String,
    field2 String
    ...
)
PRIMARY KEY field1, field2
...

クエリの場合 dictGet* 関数は、タプルがキーとして渡されます。 例えば: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

属性

構成例:

<structure>
    ...
    <attribute>
        <name>Name</name>
        <type>ClickHouseDataType</type>
        <null_value></null_value>
        <expression>rand64()</expression>
        <hierarchical>true</hierarchical>
        <injective>true</injective>
        <is_object_id>true</is_object_id>
    </attribute>
</structure>

または

CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)

設定フィールド:

タグ 説明 必須
name 列名。 はい。
type ClickHouseデータタイプ。
ClickHouseは、dictionaryから指定されたデータ型に値をキャストしようとします。 例えば、MySQLの場合、フィールドは次のようになります TEXT, VARCHAR、または BLOB MySQLソーステーブルでは、次のようにアップロードできます String クリックハウスで。
Nullable サポートされていない。
はい。
null_value 既存の要素以外の要素のデフォルト値。
この例では、空の文字列です。 使用できません NULL この分野で。
はい。
expression そのClickHouseはその値を実行します。
この式には、リモートsqlデータベースの列名を指定できます。 したがって、これを使用して、リモート列の別名を作成できます。

デフォルト値:式なし。
いいえ。
hierarchical もし true、属性は、現在のキーの親キーの値が含まれています。 見る 階層辞書.

デフォルト値: false.
いいえ。
injective このフラグは、 id -> attribute 画像は 射影.
もし true、ClickHouseはの後に自動的に置くことができます GROUP BY 句注入を伴う辞書への要求。 通常、そのような要求の量が大幅に削減されます。

デフォルト値: false.
いいえ。
is_object_id MongoDBドキュメントに対してクエリが実行されるかどうかを示すフラグ ObjectID.

デフォルト値: false.
いいえ。

また見なさい

元の記事