Перейти к основному содержанию

Вопрос

Если в столбце типа Map содержатся разные атрибуты, как их извлечь и использовать в запросах?

Ответ

Это базовый пример извлечения ключей и значений из переменного поля attributes. Этот метод создаст кажущиеся дубликаты из каждой строки в исходной/raw таблице. Однако, поскольку ключи и значения извлекаются отдельно, их можно включить в первичный ключ или во вторичный ключ с индексом, например bloom filter. В этом примере у нас, по сути, есть source, который создаёт таблицу метрик; в поле attributes, содержащем maps, может быть несколько применимых атрибутов. Если есть атрибуты, которые всегда будут присутствовать в записях, лучше вынести их в отдельные столбцы и заполнить ими эти столбцы. Вы должны просто скопировать и вставить это, чтобы увидеть, какими будут результаты и что делает materialized view в данном случае. Создайте пример базы данных:
Создайте начальную таблицу, которая будет содержать строки и атрибуты:
Вставьте в таблицу несколько строк для примера. Размер выборки намеренно небольшой, чтобы при создании materialized view вы могли увидеть, как строки дублируются для каждого attribute.
Затем мы можем создать materialized view с array join, чтобы извлечь атрибуты map в столбцы keys и values. Для демонстрации в примере ниже используется неявная таблица (с командой POPULATE и внутренней таблицей вида .inner.{uuid}... ). Однако рекомендуемая практика — использовать явную таблицу: сначала определить таблицу, а затем создать поверх неё materialized view с командой TO.
В новой таблице будет больше строк, а ключи в ней будут извлечены, вот так:
Далее, чтобы выполнить запрос к строкам с определёнными атрибутами, можно сделать примерно следующее:
Последнее изменение 1 июля 2026 г.