<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_DQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B</id>
	<title>Как использовать DQL-запросы - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_DQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_DQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B&amp;action=history"/>
	<updated>2026-04-13T15:41:42Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_DQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B&amp;diff=5675&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: «Язык запросов Ключ-АСТРОМ ('''DQL''') знакомит вас с важными концепциями, которые следует усв...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_DQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B&amp;diff=5675&amp;oldid=prev"/>
		<updated>2025-09-12T01:37:02Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Язык запросов Ключ-АСТРОМ (&amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;) знакомит вас с важными концепциями, которые следует усв...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Язык запросов Ключ-АСТРОМ ('''DQL''') знакомит вас с важными концепциями, которые следует усвоить при начале работы.&lt;br /&gt;
&lt;br /&gt;
'''DQL'''-запрос — это запрос, доступный только для чтения, на обработку данных и возврат результатов. Запрос формируется простым текстом с использованием конвейерной модели потока данных, которую легко читать, создавать и автоматизировать.&lt;br /&gt;
&lt;br /&gt;
== Объединение команд с помощью оператора ==&lt;br /&gt;
'''DQL'''-запрос содержит как минимум одну или несколько команд, каждая из которых возвращает табличный вывод, содержащий записи (строки) и поля (столбцы). Все команды разделены символом «'''|'''» (конвейером). Данные передаются потоком или по воронке от одной команды к другой. На каждом этапе данные фильтруются или обрабатываются, а затем передаются на следующий этап.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Image4040.png|граница]]&lt;br /&gt;
&lt;br /&gt;
После каждой операции '''DQL''' возвращает таблицу или набор таблиц с данными. Оператор конвейера передаёт эти таблицы в следующую операцию, где они подвергаются дальнейшей обработке или изменению. Это позволяет легко выстраивать пошаговые цепочки операций до достижения конечного, желаемого результата.&lt;br /&gt;
&lt;br /&gt;
Поскольку передача информации от одного оператора к другому является последовательной, порядок операторов запроса важен и может влиять как на результаты, так и на производительность.&lt;br /&gt;
&lt;br /&gt;
Лучший способ изучить '''DQL''' — начать с базовых запросов.&lt;br /&gt;
&lt;br /&gt;
== Загрузить данные ==&lt;br /&gt;
Команда '''DQL''' &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt; определяет, какие данные следует загрузить из Ключ-АСТРОМ и при необходимости обработать на следующих этапах конвейера обработки.&lt;br /&gt;
&lt;br /&gt;
Команда &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt; требует указания типа данных, которые должен получить конвейер первичной обработки. В следующем примере используются логи.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filter loglevel == &amp;quot;ERROR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; summarize numErr = count()&lt;br /&gt;
|}&lt;br /&gt;
Оператор начинается с загрузки (&amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;) всех загруженных логов. Поскольку на первом этапе временной интервал запроса не был указан, применяется временной диапазон, указанный в пользовательском интерфейсе Ключ-АСТРОМ. Он содержит три команды: &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;, и &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt;, разделенные вертикальной чертой.&lt;br /&gt;
&lt;br /&gt;
Записи логовередаются в команду фильтра, которая сокращает количество выходных записей на основе указанного выражения фильтра. Последняя строка возвращает таблицу с одним полем и одной записью, содержащей количество оставшихся строк.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!numErr&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Вы также можете изменить тип данных &amp;lt;code&amp;gt;events&amp;lt;/code&amp;gt;, используя команду &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;, добавив после неё &amp;lt;code&amp;gt;events&amp;lt;/code&amp;gt;. В примере запроса показано суммарное значение для поля &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt; в наборе данных событий.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch events&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; summarize Total_amount = sum(amount)&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Total_amount&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;1,064,497&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Укажите временные рамки ==&lt;br /&gt;
Мы предлагаем использовать элементы управления, предлагаемые пользовательским интерфейсом, для выбора временного интервала запроса.&lt;br /&gt;
&lt;br /&gt;
Однако оператор '''DQL''' позволяет переопределить выбор пользовательского интерфейса, используя параметр &amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; для указания желаемого временного диапазона. Если в приложении или '''API''' не указано иное, временной интервал по умолчанию составляет 2 часа.&lt;br /&gt;
&lt;br /&gt;
В этом примере с относительными временными диапазонами выполняются запросы к журналам за последние два часа:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs, from:now() - 2h&lt;br /&gt;
|}&lt;br /&gt;
В этом примере запрашиваются журналы за последние 24 часа, за исключением последних двух часов:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs, from:now() - 24h, to:now() - 2h&lt;br /&gt;
|}&lt;br /&gt;
Вы также можете использовать абсолютные временные диапазоны с параметром &amp;lt;code&amp;gt;timeframe&amp;lt;/code&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs, timeframe:&amp;quot;2021-10-20T00:00:00Z/2021-10-28T12:00:00Z&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Фильтр по логическому выражению ==&lt;br /&gt;
Уточните список запрашиваемых записей с помощью &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;. Используйте операторы типа &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; для включения или исключения полей с определёнными значениями. Функции типа &amp;lt;code&amp;gt;endsWith&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;contains&amp;lt;/code&amp;gt; позволяют включать поля, которые заканчиваются или содержат определённую строку.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs, from:now() - 2h&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filter loglevel == &amp;quot;SEVERE&amp;quot; or loglevel == &amp;quot;ERROR&amp;quot; and not endsWith(log.source,&amp;quot;audit.log&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Выберите подмножество полей ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; fields timestamp, loglevel, log.source, content&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Упорядочить результаты с помощью сортировки ==&lt;br /&gt;
По умолчанию команда '''sort''' сортирует записи по возрастанию. В следующем примере мы сортируем результаты по убыванию.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filter loglevel == &amp;quot;SEVERE&amp;quot; or loglevel == &amp;quot;ERROR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; fields timestamp, loglevel, dt.process.name, host.name, content&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; limit 5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; sort timestamp desc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Агрегации ==&lt;br /&gt;
В этом примере рассчитывается количество событий &amp;lt;code&amp;gt;booking.process.started&amp;lt;/code&amp;gt;. Агрегация намеренно учитывает только рабочие дни и часы (пн-пт, с 8:00 до 17:00).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch bizevents&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filter event.type==&amp;quot;booking.process.started&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; fieldsAdd hour=formatTimestamp(timestamp,format:&amp;quot;hh&amp;quot;), day_of_week=formatTimestamp(timestamp,format:&amp;quot;EE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filterOut (day_of_week  == &amp;quot;Sat&amp;quot; or day_of_week == &amp;quot;Sun&amp;quot;) or (toLong(hour) &amp;lt;= 08 or toLong(hour) &amp;gt;= 17)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; summarize numStarts = count(), by:{product}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Агрегации с течением времени ==&lt;br /&gt;
'''DQL''' предоставляет специальные команды, такие как &amp;lt;code&amp;gt;makeTimeseries&amp;lt;/code&amp;gt;, для агрегации списка необработанных записей событий в виде временного ряда, пригодного для построения графика. Давайте рассмотрим логи, сгруппированные по уровню логов и 5-минутному интервалу агрегации:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|fetch logs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; filter loglevel == &amp;quot;SEVERE&amp;quot; or loglevel == &amp;quot;ERROR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; makeTimeseries count = count(), by:loglevel, interval:5m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Изучите приложение DQL ==&lt;br /&gt;
Вы можете изучить '''DQL''', используя практический опыт с помощью интерактивных обучающих программ в приложении '''Learn''' '''DQL'''. Вы можете использовать приложение, если являетесь клиентом с доступом к SaaS-среде Ключ-АСТРОМ или зарегистрированным участником сообщества Ключ-АСТРОМ. Вы также можете зарегистрироваться на 15-дневную бесплатную пробную версию, чтобы опробовать приложение.&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>