как мы можем проверить, существует ли элемент в массиве и имеет ли он значение «true» в Presto

#sql #arrays #where-clause #presto

#sql #массивы #where-предложение #presto

Вопрос:

Данные в массиве выглядят как XXXX: «False». Я использовал

element_at(array_name,'Field') and contains(map_keys(array_name),'Field') . Они только проверяют, присутствует ли элемент в массиве. Но если «Поле» имеет значение «true», как мне проверить это значение?

Комментарии:

1. Каков точный тип array_name ? (что SELECT DISTINCT typeof(array_name) ... возвращает?)

2. Возможно, я ошибаюсь в объяснении, но в отдельном запросе повторяется «map (varchar, varchar)», я думаю, что array_name выше — это карта, а ‘Field — элемент.

Ответ №1:

Предполагая, что у вас есть карта под рукой, и что вы хотите проверить значение данного ключа, вы можете просто использовать element_at() :

 where element_at(array_name, 'Field') = 'True'