データウェアハウジングの開発およびデータ分析では、ビジネスファクトテーブルに定数データを保存し、ビジネスディメンションテーブルにビジネスデータを保存する必要がある場合、ディメンションテーブルの代わりにデータ辞書を使用してデータを保存できます。 この方法では、JOINステートメントを実行する必要はありません。 これにより、クエリがより効率的になります。 このトピックでは、ApsaraDB for ClickHouseの外部ディクショナリを作成、変更、および使用する方法について説明します。
前提条件
データソースとターゲットクラスターは同じ仮想プライベートクラウド (VPC) を使用し、同じリージョンに存在します。 データソースのIPアドレスが宛先クラスターのホワイトリストに追加され、宛先クラスターのIPアドレスがデータソースのホワイトリストに追加されます。 それ以外の場合は、まずネットワークの問題を解決します。 詳細については、「」をご参照ください。宛先クラスターとデータソースの間に接続が確立されない場合はどうすればよいですか。 FAQトピックのセクション。
SELECT * FROM system.clusters;
ステートメントを実行して、ApsaraDB for ClickHouseクラスターのIPアドレスを照会できます。
ApsaraDB For ClickHouseクラスターのホワイトリストを設定する方法の詳細については、「ホワイトリストの設定」をご参照ください。
注
V21.8以降のApsaraDB for ClickHouseクラスターのデータ辞書をコンソールで管理することはできません。 SQL文を使用して、データ辞書を表示および作成できます。 詳細については、「辞書の作成」をご参照ください。
外部ディクショナリの作成と変更
ApsaraDB for ClickHouse コンソールにログインします。
上部のナビゲーションバーで、管理するクラスターがデプロイされているリージョンを選択します。
クラスターページをクリックし、Community-compatible Editionのクラスタータブで、管理するクラスターを検索し、クラスターのIDをクリックします。
左側のナビゲーションウィンドウで、辞書管理辞書管理ページに移動します。
右上隅で、をクリックします。辞書設定の追加.
辞書設定の追加表示されるダイアログボックスで、テンプレートを編集し、辞書の内容を指定します。
次の表に、辞書設定の主要なパラメーターのみを示します。 パラメーターの詳細については、「Dictionaries」をご参照ください。
パラメーター
説明
<name>
作成する外部ディクショナリの名前。 名前はグローバルに一意である必要があります。
<source>
ディクショナリのデータソース。 ApsaraDB for ClickHouseは、次のデータソースをサポートしています。
MySQL
ClickHouse
<lifetime>
ディクショナリでデータが更新される間隔。 単位は秒です。
<レイアウト>
メモリに保存されているデータの形式。 ApsaraDB for ClickHouseは、外部ディクショナリで次のデータ形式をサポートしています。
数値キー
フラット
hashed
range_hashed
cache
合成キー
complex_key_hashed
complex_key_cache
ip_trie
<構造>
辞書のデータ構造。
説明一度に追加できるノードは1つだけです。
[OK] をクリックします。 データ辞書が作成されます。
作成した辞書の [操作] 列のリンクをクリックすると、辞書を表示、変更、または削除できます。
DDLステートメントを実行して外部ディクショナリテーブルを作成する
ApsaraDB for ClickHouseクラスターのバージョンがV20.8以降の場合、DDLステートメントを実行して外部辞書テーブルを作成できます。 ApsaraDB for ClickHouseコンソールで、ApsaraDB for ClickHouseクラスターのバージョン番号を表示できます。 クラスターIDをクリックして、[クラスター情報] ページに移動します。 [クラスタープロパティ] セクションで、バージョン番号を表示できます。
CREATE DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
key1 type1 [DEFAULT|EXPRESSION expr1] [HIERARCHICAL|INJECTIVE|IS_OBJECT_ID],
key2 type2 [DEFAULT|EXPRESSION expr2] [HIERARCHICAL|INJECTIVE|IS_OBJECT_ID],
attr1 type2 [DEFAULT|EXPRESSION expr3],
attr2 type2 [DEFAULT|EXPRESSION expr4]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME([MIN val1] MAX val2)
外部ディクショナリを使用する
外部辞書テーブルの照会
SELECT
name,
type,
key,
attribute.names,
attribute.types,
bytes_allocated,
element_count,
source
FROM system.dictionaries
外部ディクショナリのクエリデータ
dictGet関数を使用して、辞書内のデータを照会します。 dictGet関数の詳細については、「辞書を操作するための関数」をご参照ください。
dictGet(<dict_name>, <attr_name>, <id_expr>)
dictGetOrDefault(<dict_name>, <attr_name>, <id_expr>, <default_value_expr>)