الانتقال إلى المحتوى الرئيسي

السؤال

كيفية إنشاء قاموس في ClickHouse باستخدام مفاتيح من النوع String وقيم من النوع String من جدول MergeTree كمصدر

الإجابة

  • أنشئ جدول المصدر للقاموس
CREATE TABLE db1.table1_dict_source
(
  id UInt32,
  email String,
  name String
)
ENGINE = MergeTree()
ORDER BY id;
  • إدراج الصفوف
INSERT INTO db1.table1_dict_source
(id, email, name)
VALUES
(1, 'me@domain.com', 'me'),
(2, 'you@domain.com', 'you');
  • إنشاء قاموس يكون فيه كلٌّ من المفتاح والقيمة من النوع String
CREATE DICTIONARY db1.table1_dict
(
    email String,
    name String
)
PRIMARY KEY email
SOURCE(
CLICKHOUSE(
TABLE 'table1_dict_source'
USER 'default'
PASSWORD 'ClickHouse123!'))
LAYOUT(COMPLEX_KEY_HASHED())
LIFETIME(MIN 0 MAX 1000);
  • اختبر القاموس
clickhouse-cloud :) SELECT * from db1.table1_dict;

SELECT *
FROM db1.table1_dict

Query id: 098396ce-11dd-4c71-a0e1-40723dd67ddc

┌─email──────────┬─name─┐
│ me@domain.com  │ me   │
│ you@domain.com │ you  │
└────────────────┴──────┘

2 rows in set. Elapsed: 0.001 sec. 
يمكنك أيضًا استخدام الدالة dictGet لاسترداد قيم منه، مثل:
SELECT dictGet('db1.table1_dict', 'name', 'me@domain.com');
الاستجابة:
┌─dictGet('db1.table1_dict', 'name', 'me@domain.com')─┐
│ me                                                  │
└─────────────────────────────────────────────────────┘
لمزيد من التفاصيل - https://clickhouse.com/docs/sql-reference/functions/ext-dict-functions
آخر تعديل في ٢٩ يونيو ٢٠٢٦