JSONB запрос: SELECT data->>’user_agent’ FROM logs WHERE data @> ‘{«status»: 500}’;
## Разбор запроса и формирование строки CSV
### Что делает этот SQL-запрос?
Запрос написан для PostgreSQL и работает с колонкой `data` типа `JSONB`:
sql
SELECT data->>’user_agent’ FROM logs WHERE data @> ‘{«status»: 500}’;
**Разбор по частям:**
— `data->>’user_agent’` — оператор `->>’` извлекает значение ключа `user_agent` из JSONB-объекта как текстовую строку (тип `text`). Если ключ отсутствует, возвращается `NULL`.
— `FROM logs` — обращение к таблице `logs`, в которой хранятся записи с JSONB-полем `data`.
— `WHERE data @> ‘{«status»: 500}’` — оператор `@>` проверяет, содержит ли JSONB-объект в колонке `data` вложенный объект `{«status»: 500}`. То есть выбираются только те строки, где в JSON-данных поле `status` равно `500`.
Таким образом, запрос возвращает список всех `user_agent`-строк из логов, где зафиксирована ошибка сервера (HTTP 500).
—
### Строка для CSV
Для будущего CSV-файла одна строка заголовка и пример строки данных будут выглядеть так:
query,table,extracted_field,filter_operator,filter_key,filter_value,return_type
«SELECT data->>’user_agent’ FROM logs WHERE data @> ‘{«status»»: 500}'»»
