Действие «Запрос DQL» для Workflows: различия между версиями

Материал из Документация Ключ-АСТРОМ
Новая страница: « = Действие «Запрос DQL» для Workflows = Действие '''Выполнить запрос DQL''' для Workflows позволяет запрашивать данные из хранилища данных с помощью '''DQL''' и использовать результаты в последующих задачах. == Входные данные == * '''Запрос DQL''': запрос '''DQL''' для выполнения. *...»
 
Полностью удалено содержимое страницы
 
Строка 1: Строка 1:


= Действие «Запрос DQL» для Workflows =
Действие '''Выполнить запрос DQL''' для Workflows позволяет запрашивать данные из хранилища данных с помощью '''DQL''' и использовать результаты в последующих задачах.
== Входные данные ==
* '''Запрос DQL''': запрос '''DQL''' для выполнения.
* '''Сегмент фильтра''': один или несколько '''сегментов фильтра''' для применения к запросу. Сегменты фильтра сужают данные, видимые запросу, на основе предопределённых критериев.
* '''Часовой пояс''': часовой пояс, используемый для основанных на времени функций '''DQL''', таких как <code>toTimestamp()</code>. По умолчанию — '''UTC''', если не задан.
* '''Завершать при пустом результате''': если включено, действие завершится ошибкой, если запрос не вернёт ни одной записи.
== Результат ==
Результат действия '''Выполнить запрос DQL''' — это ответ '''API запросов к хранилищу данных''', который включает следующие свойства верхнего уровня:
* <code>records</code>: массив записей результатов. Поля в каждой записи соответствуют столбцам, спроецированным запросом '''DQL'''.
* <code>types</code>: метаданные типов, описывающие схему записей.
* <code>metadata</code>: метаданные выполнения запроса, такие как проанализированный временной диапазон, просканированные байты и ID запроса для отладки.
== Отличия от интерактивного использования DQL в приложениях ==
Действие '''Выполнить запрос DQL''', как и любое другое действие, является неинтерактивным. Оно выполняется автоматически как часть вашего Workflow. Это особенно важно, поскольку у вас могут быть ожидания от использования '''DQL''' в таких приложениях, как '''Блокноты''' и '''Дашборды''', которые имеют собственное поведение, построенное поверх '''API запросов к хранилищу данных'''. Это означает:
* '''Часовой пояс''': '''API''' по умолчанию использует '''UTC'''. '''Блокноты''' и '''Дашборды''' автоматически применяют локаль вашего браузера или настроенный часовой пояс пользователя, но действие '''Выполнить запрос DQL''' не имеет доступа к пользовательским настройкам. Если ваши результаты зависят от местного времени, используйте поле ввода '''Часовой пояс''' или явно задайте часовой пояс в запросе. Это также влияет на выражения привязки к календарю — выражения, которые привязываются к границе календаря, например <code>-1M@M</code> (начало прошлого месяца), вычисляются относительно поля '''Часовой пояс''', что может дать другие результаты, чем в блокноте, где ваш местный часовой пояс применяется автоматически.
* '''Временной диапазон''': если в запросе не указан временной диапазон, применяется значение по умолчанию '''API''' (последние 2 часа). Чтобы задать явный временной диапазон, используйте параметры <code>from</code> и <code>to</code> команды <code>fetch</code>.
* '''Лимит записей''': лимит результатов по умолчанию — 1 000 записей. Используйте ключевое слово <code>limit</code> в запросе, чтобы получить больше. Фактическая верхняя граница — это общий лимит размера результата действия.
=== Запрос запускающего события ===
Когда Workflow запускается событийным триггером, выполнение может уже обрабатываться, пока запускающее событие ещё не сохранено в хранилище данных. Задача '''Выполнить запрос DQL''' в вашем Workflow, которая ищет событие через <code>fetch ...</code>, может поэтому вернуть пустой результат. Чтобы обойти это, либо установите задержку '''Ожидание перед''' в 30–45 секунд в опциях задачи, либо передайте событие непосредственно в запрос '''DQL''' с помощью команды <code>data</code> — запускающее событие доступно в контексте выполнения Workflow через <code><nowiki>{{ event() }}</nowiki></code>:<pre>data json:"""<nowiki>{{ event()|to_json }}</nowiki>"""
| fields timestamp, event.name, event.id</pre>
=== Использование результатов DQL в условиях ===
Задача с состоянием '''Успех''' означает, что действие выполнилось без ошибок — это не означает, что запрос вернул записи. Чтобы ветвить выполнение в зависимости от того, были ли возвращены какие-либо записи, включите '''Завершать при пустом результате''' в задаче '''DQL'''. Тогда задача завершится ошибкой, когда запрос не вернёт ни одной записи. Затем используйте условие для последующих задач, чтобы решить, запускать их или нет, в зависимости от успеха или ошибки задачи запроса.
Если вы оставите '''Завершать при пустом результате''' отключённым, массив <code>records</code> может быть пустым, даже когда задача завершается успешно. Доступ к конкретной записи без предварительной проверки длины массива вызовет ошибку условия. Используйте фильтр <code>| length</code>, чтобы проверить наличие записей перед доступом к ним:<pre><nowiki>{{ result("dql_task")["records"] | length > 0 }}</nowiki></pre>Чтобы безопасно получить доступ к первой записи в условии:<pre><nowiki>{{ result("dql_task")["records"] | length > 0 and result("dql_task")["records"][0]["field_name"] == "expected_value" }}</nowiki></pre>

Текущая версия от 17:44, 22 октября 2026