#mysql #amazon-athena #mysql-json
#mysql #амазонка-афина #mysql-json
Вопрос:
Мои данные выглядят следующим образом (имя таблицы: test_table):
{
timestamp: 'some_timestamp',
headers: [{'name': 'test', 'value': 'sth'}, {'name': 'test2', 'value': 'sth2'}, {'name': 'test3', 'value': 'sth3'}]
}
Как я могу выбирать только {'name': 'test2', 'value': 'sth2'}
динамически, т.е. где условие: name
должно иметь значение test2
, и мы не знаем, какой объект находится в массиве.
Я пробовал:
SELECT JSON_SEARCH(headers, 'one', 'test2', NULL, '$[*].name') IS NOT NULL
FROM test_table
Комментарии:
1. Зачем вам хранить эти данные в формате JSON, если это так затрудняет запрос данных? Просто сохраните его в обычной форме, во второй таблице со столбцами
name
иvalue
. Каждая пара имя / значение хранится в отдельной строке. Затем вы можете запроситьSELECT ... FROM test_table_headers WHERE name = 'test2'
.2. Это структура, которую я не могу изменить, поскольку она поступает из журналов брандмауэра aws waf