Tracer Query Language (TQL) — это язык запросов для фильтрации и выборки данных в Tracer.
TQL дополняет общие и расширенные фильтры для сбоев и даёт больше возможностей, чем префиксные фильтры (такие ка к !key:yourKey=yourValue), которые использовались в Tracer ранее.
TQL позволяет
AND и OR;Например, можно составить такое выражение:
text !~ "timeout" AND (sdk <= 18 OR sdk IN ("30", "31", "33")) AND (version NOT IN ("1.2.3", "2.0.0") OR versionCode NOT IN ("23400000", "56700000"))
AND (key("Key scenario [386]") != Control AND prop("buildBranch") != "develop")
В практическом смысле это значит, что вы можете
Поставьте курсор в поле ввода TQL и пользуйтесь подсказками.

Сейчас TQL предоставляет базовую функционально сть:
<поле> <оператор> <значение> AND <поле> <оператор> <значение> OR <поле> <оператор> <значение>
Позже в языке появится поддержка дополнительных полей и предикатов.
| Поле См. Пояснение 1 под таблицей. | Тип | Поддерживаемые операторы См. Пояснение 3 под таблицей. | Примеры использования |
|---|---|---|---|
| text | STRING | ~, !~ | text ~ "crash"text !~ "error" |
| version | STRING, FUNCTION | =, !=, IN, NOT IN | version = "1.2.3"version IN ("1.2.3", "2.0.0")version = latestVersion() // См. Пояснение 2 под таблицей. |
| versionCode | INTEGER | =, !=, <, <=, >, >=, IN, NOT IN | versionCode = 123versionCode IN ("123", "124") |
| severity | ENUM | =, !=, <, <=, >, >=, IN, NOT IN | severity = CRASHseverity IN ("CRASH", "FATAL") |
| environment | STRING | =, !=, IN, NOT IN | environment = "production"environment IN ("default", "test") |
| status | ENUM | =, !=, IN, NOT IN | status = "Fixed"status IN ("Fixed", "Regressed") |
| vendor | STRING | =, !=, IN, NOT IN | vendor = "Google"vendor IN ("Google", "Apple") |
| device | STRING | =, !=, IN, NOT IN | device = "Samsung"device IN ("Samsung", "Pixel") |
| sdk | INTEGER | =, !=, <, <=, >, >=, IN, NOT IN | sdk < "10"sdk IN ("30", "31", "33") |
| issueKey | STRING | =, !=, IN, NOT IN | issueKey = "TRACER-123"issueKey IN ("TRACER", "BUG") |
| prop(propName) | STRING | =, !=, IN, NOT IN | prop("device") = "Pixel" |
| key(keyName) | STRING | =, !=, IN, NOT IN | key("errorCode") = "AUTHENTICATION" |
| component | STRING | =, !=, IN, NOT IN | component = "main"component IN ("Login", "Settings") |
| os | STRING | =, !=, IN, NOT IN | os = "macOS" |
Обратите внимание: если поле имеет тип ENUM, можно указывать для него значения только из списка допустимых. Посмотрите,
severity) допустимы;status) можно указывать.latestVersion — самая новая версия приложения, удовлетворяющая условиям активности за последние 3 дня:
Для бэкенд-приложений логика расчёта выглядит так же, но применяется к данным по количеству ошибок и рассчитывается за интервал в 1 час.
Посмотрите описание операторов:
| Оператор | Описание |
|---|---|
| = | Равно |
| != | Не равно |
| > | Больше |
| >= | Больше или равно |
| < | Меньше |
| <= | Меньше или равно |
| IN | Входит в список |
| NOT IN | Не входит в список |
| ~ | Содержит подстроку |
| !~ | Не содержит подстроку |