Map(key, value) 

Тип данных Map(key, value) хранит пары ключ:значение.

Параметры
- key — ключ. String или Integer.
- value — значение. String, Integer или Array.

Чтобы получить значение из колонки a Map('key', 'value'), используйте синтаксис a['key']. В настоящее время такая подстановка работает по алгоритму с линейной сложностью.

Примеры

Рассмотрим таблицу:

CREATE TABLE table_map (a Map(String, UInt64)) ENGINE=Memory;
INSERT INTO table_map VALUES ({'key1':1, 'key2':10}), ({'key1':2,'key2':20}), ({'key1':3,'key2':30});

Выборка всех значений ключа key2:

SELECT a['key2'] FROM table_map;

Результат:

┌─arrayElement(a, 'key2')─┐
│                      10 │
│                      20 │
│                      30 │
└─────────────────────────┘

Если для какого-то ключа key в колонке с типом Map() нет значения, запрос возвращает нули для числовых колонок, пустые строки или пустые массивы.

INSERT INTO table_map VALUES ({'key3':100}), ({});
SELECT a['key3'] FROM table_map;

Результат:

┌─arrayElement(a, 'key3')─┐
│                     100 │
│                       0 │
└─────────────────────────┘
┌─arrayElement(a, 'key3')─┐
│                       0 │
│                       0 │
│                       0 │
└─────────────────────────┘

См. также

Original article

Rating: 3.8 - 5 votes

Was this content helpful?
★★★★☆