Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Селектор показателей: различия между версиями

Материал из Документация АппОптима
(Новая страница: «Селектор метрик — это мощный инструмент для указания, какие метрики вы хотите прочитать...»)
 
Строка 21: Строка 21:


=== Агрегация времени ===
=== Агрегация времени ===
Dynatrace всегда применяет агрегацию по времени к точкам данных метрик, поскольку количество необработанных данных часто делает невозможным их отображение на диаграмме осмысленным образом. Агрегация по времени выравнивает точки данных в соответствии с временными интервалами.
Ключ-АСТРОМ всегда применяет агрегацию по времени к точкам данных метрик, поскольку количество необработанных данных часто делает невозможным их отображение на диаграмме осмысленным образом. Агрегация по времени выравнивает точки данных в соответствии с временными интервалами.


Наилучшее разрешение временного интервала — 1 минута. Разрешение, используемое для агрегирования по времени, зависит от различных факторов (таких как период времени запроса и возраст данных) и может частично контролироваться вами (см. параметр разрешения ).
Наилучшее разрешение временного интервала — 1 минута. Разрешение, используемое для агрегирования по времени, зависит от различных факторов (таких как период времени запроса и возраст данных) и может частично контролироваться вами (см. параметр разрешения ).
Строка 35: Строка 35:
Преобразования фильтров позволяют просеивать данные в соответствии с интересующими вас критериями. Например, <code>builtin:host.cpu.usage:filter(eq("dt.entity.host","HOST-1234567"))</code>возвращает только ряд данных об использовании ЦП для хоста <code>HOST-1234567</code>. Кроме того, вы можете фильтровать ряды в соответствии с заданными пороговыми значениями (подробности см. В <code>series</code>условии ). В сочетании с агрегацией пространства также возможны мощные запросы, такие как определение максимального количества pod для выделенного кластера k8s, разделенного ''облачным приложением'' : <code>builtin:kubernetes.pods:filter(eq("k8s.cluster.name","<clusterName>")):splitBy("dt.entity.cloud_application"):max</code>.
Преобразования фильтров позволяют просеивать данные в соответствии с интересующими вас критериями. Например, <code>builtin:host.cpu.usage:filter(eq("dt.entity.host","HOST-1234567"))</code>возвращает только ряд данных об использовании ЦП для хоста <code>HOST-1234567</code>. Кроме того, вы можете фильтровать ряды в соответствии с заданными пороговыми значениями (подробности см. В <code>series</code>условии ). В сочетании с агрегацией пространства также возможны мощные запросы, такие как определение максимального количества pod для выделенного кластера k8s, разделенного ''облачным приложением'' : <code>builtin:kubernetes.pods:filter(eq("k8s.cluster.name","<clusterName>")):splitBy("dt.entity.cloud_application"):max</code>.


=== Объект-специфический ===
=== Специфика объекта ===
Селектор метрик имеет тесную интеграцию с отслеживаемыми объектами . Например, вы можете встроить селектор сущностей непосредственно в свой запрос: <code><metricKey>:filter(in("dt.entity.<key>",entitySelector("<entitySelector>")))</code>. Кроме того, вы можете добавить отображаемые имена значений измерений сущности в качестве выделенных измерений в результат запроса, используя преобразование имен .
Селектор метрик имеет тесную интеграцию с отслеживаемыми объектами . Например, вы можете встроить селектор сущностей непосредственно в свой запрос: <code><metricKey>:filter(in("dt.entity.<key>",entitySelector("<entitySelector>")))</code>. Кроме того, вы можете добавить отображаемые имена значений измерений сущности в качестве выделенных измерений в результат запроса, используя преобразование имен .


Помимо этих элементарных преобразований, Dynatrace предоставляет вам богатый набор преобразований для управления точками данных ряда в соответствии с вашими потребностями. Ниже вы можете найти список всех доступных преобразований, предлагаемых селектором показателей.
Помимо этих элементарных преобразований, Ключ-АСТРОМ предоставляет вам богатый набор преобразований для управления точками данных ряда в соответствии с вашими потребностями. Ниже вы можете найти список всех доступных преобразований, предлагаемых селектором показателей.


== Преобразование агрегации ==
== Преобразование агрегации ==
Строка 54: Строка 54:
{| class="wikitable"
{| class="wikitable"
!Агрегация
!Агрегация
!Заметки
!Примечания
|-
|-
|авто
|auto
|Применяет агрегацию по умолчанию. Чтобы проверить агрегацию по умолчанию, запросите метрику с помощью вызова дескрипторов метрики GET и проверьте поле defaultAggregation .
|Применяет агрегацию по умолчанию. Чтобы проверить агрегацию по умолчанию, запросите метрику с помощью вызова дескрипторов метрики GET и проверьте поле defaultAggregation .
|-
|-
|мин
|min
|Выбирает наименьшее значение из временного интервала. Все <code>null</code>значения игнорируются.
|Выбирает наименьшее значение из временного интервала. Все <code>null</code>значения игнорируются.
|-
|-
|Максимум
|max
|Выбирает наибольшее значение из временного интервала. Все <code>null</code>значения игнорируются.
|Выбирает наибольшее значение из временного интервала. Все <code>null</code>значения игнорируются.
|-
|-
|среднее
|avg
|Вычисляет среднее арифметическое всех значений временного интервала. Все <code>null</code>значения игнорируются.
|Вычисляет среднее арифметическое всех значений временного интервала. Все <code>null</code>значения игнорируются.
|-
|-
|сумма
|summ
|Суммирует все значения временного интервала. Все <code>null</code>значения игнорируются.
|Суммирует все значения временного интервала. Все <code>null</code>значения игнорируются.
|-
|-
|ценность
|value
|Принимает одно значение как есть. Применимо только к ранее агрегированным значениям и метрикам, поддерживающим <code>value</code>агрегирование.
|Принимает одно значение как есть. Применимо только к ранее агрегированным значениям и метрикам, поддерживающим <code>value</code>агрегирование.
|-
|-
|считать
|count
|Подсчитывает значения во временном интервале. Все <code>null</code>значения игнорируются.
|Подсчитывает значения во временном интервале. Все <code>null</code>значения игнорируются.
|-
|-
|процентиль ( <code>N</code>)
|percentile ( <code>N</code>)
|Вычисляет N -й процентиль, где N находится между <code>0</code>и <code>100</code>(включительно).
|Вычисляет N -й процентиль, где N находится между <code>0</code>и <code>100</code>(включительно).
|}
|}
Строка 134: Строка 134:
|<code>:delta</code>
|<code>:delta</code>
|-
|-
|Аргументы
|Аргумент
|Никто
|Нет
|}
|}
Дельта- преобразование заменяет каждую точку данных разницей с предыдущей точкой данных ( <code>0</code>если разница отрицательна). Первая точка данных исходного набора исключена из результата.
Дельта- преобразование заменяет каждую точку данных разницей с предыдущей точкой данных ( <code>0</code>если разница отрицательна). Первая точка данных исходного набора исключена из результата.
Строка 170: Строка 170:
|<code>:filter(<condition1>,<condition2>,<conditionN>)</code>
|<code>:filter(<condition1>,<condition2>,<conditionN>)</code>
|-
|-
|Аргументы
|Аргумент
|Список условий фильтрации. Чтобы параметр прошел фильтрацию , он должен соответствовать всем условиям.
|Список условий фильтрации. Чтобы параметр прошел фильтрацию , он должен соответствовать всем условиям.
|}
|}
Строка 251: Строка 251:
Отфильтровывает точки данных, доставленные приложением основной версии 2 , которое не работает в операционной системе OS-472A4A3B41095B09 .
Отфильтровывает точки данных, доставленные приложением основной версии 2 , которое не работает в операционной системе OS-472A4A3B41095B09 .


== Сложите трансформацию ==
== Сложение трансформации ==
{| class="wikitable"
{| class="wikitable"
!
!
Строка 259: Строка 259:
|<code>:fold(<aggregation>)</code>
|<code>:fold(<aggregation>)</code>
|-
|-
|Аргументы
|Аргумент
|по желанию Дайнатрейс 1.232+Требуемый метод агрегации .
|по желанию Ключ-АСТРОМ 1.232+Требуемый метод агрегации .
|}
|}
Свернутое преобразование объединяет список точек данных в одну точку данных. Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, <code>:fold(median)</code>в датчике метрика равна, <code>:fold(avg)</code>потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.
Свернутое преобразование объединяет список точек данных в одну точку данных. Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, <code>:fold(median)</code>в датчике метрика равна, <code>:fold(avg)</code>потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.
Строка 288: Строка 288:
|<code>:last<aggregation></code><code>:lastReal<aggregation></code>
|<code>:last<aggregation></code><code>:lastReal<aggregation></code>
|-
|-
|Аргументы
|Аргумент
|по желанию Дайнатрейс 1.232+Требуемый метод агрегации .
|по желанию Ключ-АСТРОМ 1.232+Требуемый метод агрегации .
|}
|}
Последнее преобразование возвращает самую последнюю точку данных из периода времени запроса . Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, <code>:last(median)</code>в датчике метрика равна, <code>:last(avg)</code>потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.
Последнее преобразование возвращает самую последнюю точку данных из периода времени запроса . Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, <code>:last(median)</code>в датчике метрика равна, <code>:last(avg)</code>потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.
Строка 346: Строка 346:
|<code>:limit(2)</code>
|<code>:limit(2)</code>
|-
|-
|Аргументы
|Аргумент
|Максимальное количество кортежей в результате.
|Максимальное количество записей в результате.
|}
|}
Преобразование предела ограничивает количество кортежей (уникальных комбинаций метрика-измерение-значение измерения) в ответе. В ответ включаются только первые X кортежей; остальные отбрасываются.
Преобразование предела ограничивает количество записей (уникальных комбинаций метрика-измерение-значение измерения) в ответе. В ответ включаются только первые X записей; остальные отбрасываются.


Чтобы убедиться, что требуемые кортежи находятся вверху результата, примените преобразование сортировки перед использованием предела.
Чтобы убедиться, что требуемые записи находятся вверху результата, примените преобразование сортировки перед использованием предела.


Показать пример
Пример
  <code>{
  <code>{
   "totalCount": 4,
   "totalCount": 4,
Строка 390: Строка 390:
  }</code>
  }</code>


== Объединить преобразование ==
== Объединение преобразования ==
{| class="wikitable"
{| class="wikitable"
!
!
Строка 398: Строка 398:
|<code>:merge("<dimension0>","<dimension1>","<dimensionN>")</code>
|<code>:merge("<dimension0>","<dimension1>","<dimensionN>")</code>
|-
|-
|Аргументы
|Аргумент
|Список параметров , которые необходимо удалить. Измерение должно быть указано его ключом.
|Список параметров , которые необходимо удалить. Измерение должно быть указано его ключом.
Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
Строка 406: Строка 406:
Вы можете применить любую агрегацию к результату преобразования слияния , в том числе те, которые не поддерживает исходная метрика.
Вы можете применить любую агрегацию к результату преобразования слияния , в том числе те, которые не поддерживает исходная метрика.


Показать пример
Пример
  <code>{
  <code>{
   "totalCount": 2,
   "totalCount": 2,
Строка 441: Строка 441:
|<code>:names</code>
|<code>:names</code>
|-
|-
|Аргументы
|Аргумент
|Никто
|Нет
|-
|-
|Ограничения
|Ограничения
Строка 449: Строка 449:
Преобразование имен добавляет имя значения измерения к массиву измерений и объекту DimensionMap ответа. Имя каждого измерения помещается перед идентификатором измерения.
Преобразование имен добавляет имя значения измерения к массиву измерений и объекту DimensionMap ответа. Имя каждого измерения помещается перед идентификатором измерения.


Показать пример
Пример
 
До трансформации имён:
 
<code>{
"dimensions": ["HOST-BB4DF8969CB41C60", "DISK-FB78447211EE76BF"],
"dimensionMap": {
"dt.entity.disk": "DISK-FB78447211EE76BF",
"dt.entity.host": "HOST-BB4DF8969CB41C60"
}
}</code>
 
После трансформации имён:
 
<code>{  "dimensions": ["l-009", "HOST-BB4DF8969CB41C60", "C:\\", "DISK-FB78447211EE76BF"],  "dimensionMap": {    "dt.entity.disk.name": "C:\\",    "dt.entity.disk": "DISK-FB78447211EE76BF",    "dt.entity.host.name": "l-009",    "dt.entity.host": "HOST-BB4DF8969CB41C60"  } }</code>


== Трансформация родителей ==
== Трансформация наследований ==
{| class="wikitable"
{| class="wikitable"
!
!
Строка 459: Строка 473:
|<code>:parents</code>
|<code>:parents</code>
|-
|-
|Аргументы
|Аргумент
|Никто
|Нет
|-
|-
|Ограничения
|Ограничения
|Применяется только к измерениям типа объекта, перечисленного ниже.
|Применяется только к измерениям типа объекта, перечисленного ниже.
|}
|}
Преобразование родителей добавляет родителя измерения в массив измерений и объект DimensionMap ответа . Родитель каждого измерения помещается перед самим измерением.
Преобразование наследований добавляет предшественника измерения в массив измерений и объект DimensionMap ответа . Предшественник каждого измерения помещается перед самим измерением.


Это преобразование работает только в том случае, если объект измерения является частью другого, более крупного объекта. Например, <code>PROCESS_GROUP_INSTANCE</code>всегда является дочерним элементом объекта, на <code>HOST</code>котором он работает. Поддерживаются следующие отношения.
Это преобразование работает только в том случае, если объект измерения является частью другого, более крупного объекта. Например, <code>PROCESS_GROUP_INSTANCE</code>всегда является дочерним элементом объекта, на <code>HOST</code>котором он работает. Поддерживаются следующие отношения.
Строка 473: Строка 487:
|-
|-
|SERVICE_METHOD
|SERVICE_METHOD
|ОКАЗАНИЕ УСЛУГ
|SERVICE
|-
|-
|SERVICE_INSTANCE
|SERVICE_INSTANCE
|ОКАЗАНИЕ УСЛУГ
|SERVICE
|-
|-
|APPLICATION_METHOD
|APPLICATION_METHOD
|ЗАЯВЛЕНИЕ
|APPLICATION
|-
|-
|PROCESS_GROUP_INSTANCE
|PROCESS_GROUP_INSTANCE
|ХОЗЯИН
|HOST
|-
|-
|ДИСК
|ДИСК
|ХОЗЯИН
|HOST
|-
|-
|СЕТЕВОЙ ИНТЕРФЕЙС
|СЕТЕВОЙ ИНТЕРФЕЙС
|ХОЗЯИН
|HOST
|-
|-
|СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ
|СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ
|СИНТЕТИЧЕСКИЙ_ТЕСТ
|SYNTHETIC_TEST
|-
|-
|HTTP_CHECK_STEP
|HTTP_CHECK_STEP
Строка 497: Строка 511:
|-
|-
|ВНЕШНИЙ_СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ
|ВНЕШНИЙ_СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ
|ВНЕШНИЙ_СИНТЕТИЧЕСКИЙ_ТЕСТ
|EXTERNAL_SYNTHETIC_TEST
|}
|}
Показать пример
Пример
 
До трансформации наследования:
  <code>{
  <code>{
   "dimensions": ["SERVICE_METHOD-D9D3A16FA577BF1C"],
   "dimensions": ["SERVICE_METHOD-D9D3A16FA577BF1C"],
Строка 506: Строка 522:
   }
   }
  }</code>
  }</code>
После трансформации наследования:
<code>{
"dimensions": ["SERVICE-C22F1E8EA66FF4C5", "SERVICE_METHOD-D9D3A16FA577BF1C"],
"dimensionMap": {
"dt.entity.service_method": "SERVICE_METHOD-D9D3A16FA577BF1C",
"dt.entity.service": "SERVICE-C22F1E8EA66FF4C5"
}
}</code>


== Преобразование раздела ==
== Преобразование раздела ==
Строка 512: Строка 537:
|<code>:partition("<partition dimension key>",<partition1>,<partitionN>)</code>
|<code>:partition("<partition dimension key>",<partition1>,<partitionN>)</code>
|-
|-
|Аргументы
|Аргумент
|
|
* Ключ измерения раздела. Это не существующее измерение, а новое, которое создаст трансформация. Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
* Ключ измерения раздела. Это не существующее измерение, а новое, которое создаст трансформация. Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
* Список разделов, которые необходимо применить. Чтобы узнать, как их указать, см. раздел «Синтаксис раздела» ниже.
* Список разделов, которые необходимо применить. Чтобы узнать, как их указать, см. раздел «Синтаксис раздела» ниже.
|-
|-
|Версия Dynatrace
|Версия Ключ-АСТРОМ
|1.230+
|1.230+
|}
|}
Строка 571: Строка 596:
|Отрицательный критерий, соответствующий всем значениям, которые не соответствуют критерию.
|Отрицательный критерий, соответствующий всем значениям, которые не соответствуют критерию.
|}
|}
Показать пример
Пример
 
В этом примере используется следующее преобразование разделов:
<code>:partition(
    "Action duration",
    value("slow",gt(200)),
    value("fast",lt(100)),
    value("normal",otherwise)
)</code>
Он добавляет к метрике измерение продолжительности действия и на его основе разбивает точки данных на три категории:
 
* <code>fast</code> для действий быстрее <code>100</code>миллисекунд.
* <code>slow</code> для действий медленнее <code>200</code>миллисекунд.
* <code>normal</code> для всех других действий.
 
До преобразования раздела:
<code>{
  "totalCount": 1,
  "nextPageKey": null,
  "resolution": "10m",
  "result": [
    {
      "metricId": "builtin:apps.web.action.domInteractive.load.browser:avg",
      "data": [
        {
          "dimensions": ["APPLICATION_METHOD-E418A4BC1DC2C911", "BROWSER-EFB8A292CB368A8D"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911"
          },
          "timestamps": [
            1637152200000, 1637152800000, 1637153400000, 1637154000000, 1637154600000,
            1637155200000, 1637155800000, 1637156400000, 1637157000000, 1637157600000,
            1637158200000, 1637158800000, 1637159400000
          ],
          "values": [155, 215, 247, 118, 94, 119, 67, 159, 114, 169, 113, 75, 160]
        }
      ]
    }
  ]
}</code>
После преобразования раздела:
<code>{
  "totalCount": 3,
  "nextPageKey": null,
  "resolution": "10m",
  "result": [
    {
      "metricId": "builtin:apps.web.action.domInteractive.load.browser:avg:partition(\"Action duration\",value(slow,gt(200)),value(fast,lt(100)),value(normal,otherwise))",
      "data": [
        {
          "dimensions": [
            "BROWSER-EFB8A292CB368A8D",
            "APPLICATION_METHOD-E418A4BC1DC2C911",
            "normal"
          ],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "normal"
          },
          "timestamps": [
            1637152200000, 1637152800000, 1637153400000, 1637154000000, 1637154600000,
            1637155200000, 1637155800000, 1637156400000, 1637157000000, 1637157600000,
            1637158200000, 1637158800000, 1637159400000
          ],
          "values": [155, null, null, 118, null, 119, null, 159, 114, 169, 113, null, 160]
        },
        {
          "dimensions": ["BROWSER-EFB8A292CB368A8D", "APPLICATION_METHOD-E418A4BC1DC2C911", "fast"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "fast"
          },
          "timestamps": [
            1637154000000, 1637154600000, 1637155200000, 1637155800000, 1637156400000,
            1637157000000, 1637157600000, 1637158200000, 1637158800000, 1637159400000,
            1637160000000, 1637160600000, 1637161200000
          ],
          "values": [null, null, null, null, 94, null, 67, null, null, null, null, 75, null]
        },
        {
          "dimensions": ["BROWSER-EFB8A292CB368A8D", "APPLICATION_METHOD-E418A4BC1DC2C911", "slow"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "slow"
          },
          "timestamps": [
            1637154000000, 1637154600000, 1637155200000, 1637155800000, 1637156400000,
            1637157000000, 1637157600000, 1637158200000, 1637158800000, 1637159400000,
            1637160000000, 1637160600000, 1637161200000
          ],
          "values": [null, 215, 247, null, null, null, null, null, null, null, null, null, null]
        }
      ]
    }
  ]
}</code>


== Преобразование скорости ==
== Преобразование скорости ==
Строка 620: Строка 744:
* Продолжительность окна свертки в минутах. Длительность должна быть кратна разрешению запроса. Например, если разрешение составляет пять минут, сводка может быть <code>5m</code>, <code>10m</code>, <code>15m</code>и т. д.
* Продолжительность окна свертки в минутах. Длительность должна быть кратна разрешению запроса. Например, если разрешение составляет пять минут, сводка может быть <code>5m</code>, <code>10m</code>, <code>15m</code>и т. д.
|-
|-
|Версия Dynatrace
|Версия Ключ-АСТРОМ
|1.230+
|1.230+
|}
|}
Строка 634: Строка 758:
* Продолжительность окна объединения ограничена 60 минутами .
* Продолжительность окна объединения ограничена 60 минутами .
* Вы можете сводить данные только за последние 2 недели (включая окна сворачивания). То есть самая старая точка данных вашего запроса не может быть больше, чем <code>2w-windowDuration</code>в прошлом.
* Вы можете сводить данные только за последние 2 недели (включая окна сворачивания). То есть самая старая точка данных вашего запроса не может быть больше, чем <code>2w-windowDuration</code>в прошлом.
Показать пример


== Плавное преобразование ==
== Плавное преобразование ==
Строка 645: Строка 767:
|<code>:smooth(skipfirst)</code>
|<code>:smooth(skipfirst)</code>
|-
|-
|Аргументы
|Аргумент
|Стратегия сглаживания. Поддерживается только <code>skipfirst</code>стратегия.
|Стратегия сглаживания. Поддерживается только <code>skipfirst</code>стратегия.
|}
|}
Строка 653: Строка 775:


Показать пример
Показать пример
До плавного преобразования:
  <code>{
  <code>{
   "totalCount": 1,
   "totalCount": 1,
Строка 670: Строка 794:
           ],
           ],
           "values": [null, 15, 13, 15, null, null, 28, 14, 14, 13]
           "values": [null, 15, 13, 15, null, null, 28, 14, 14, 13]
        }
      ]
    }
  ]
}</code>
После плавного преобразования:
<code>{
  "totalCount": 1,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:service.keyRequest.count.server:smooth(skipfirst)",
      "data": [
        {
          "dimensions": ["SERVICE_METHOD-BBA9C77B774B0C15"],
          "dimensionMap": {
            "dt.entity.service_method": "SERVICE_METHOD-BBA9C77B774B0C15"
          },
          "timestamps": [
            1628618460000, 1628618520000, 1628618580000, 1628618640000, 1628618700000,
            1628618760000, 1628618820000, 1628618880000, 1628618940000, 1628619000000
          ],
          "values": [null, null, 13, 15, null, null, null, 14, 14, 13]
         }
         }
       ]
       ]
Строка 684: Строка 831:
|<code>:sort(<sorting key 1>,<sorting key 2>)</code>
|<code>:sort(<sorting key 1>,<sorting key 2>)</code>
|-
|-
|Аргументы
|Аргумент
|Один или несколько ключей сортировки.
|Один или несколько ключей сортировки.
|}
|}
Строка 695: Строка 842:
Чтобы отсортировать результаты по значению измерения, используйте <code>dimension("<dimension>",<direction>)</code>ключ. Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
Чтобы отсортировать результаты по значению измерения, используйте <code>dimension("<dimension>",<direction>)</code>ключ. Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).


Измерения объекта сортируются лексикографически ( <code>0..9a..z</code>) по значениям идентификатора объекта Dynatrace.
Измерения объекта сортируются лексикографически ( <code>0..9a..z</code>) по значениям идентификатора объекта Ключ-АСТРОМ.


Строковые размеры сортируются лексикографически.
Строковые размеры сортируются лексикографически.
Строка 715: Строка 862:
Сортировка применяется к результирующим точкам данных всей цепочки преобразования перед преобразованием сортировки . Если в цепочке преобразований нет преобразования агрегации , сортировка применяется к агрегированию метрики по умолчанию.
Сортировка применяется к результирующим точкам данных всей цепочки преобразования перед преобразованием сортировки . Если в цепочке преобразований нет преобразования агрегации , сортировка применяется к агрегированию метрики по умолчанию.


Показать пример
Пример
 
До трансформации сортировки:
<code>{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\")",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1613557980000],
          "values": [6543]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1613557980000],
          "values": [1009]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [1613557980000],
          "values": [6673]
        },
        {
          "dimensions": ["Lichtenstein"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Lichtenstein"
          },
          "timestamps": [1613557980000],
          "values": [86]
        }
      ]
    }
  ]
}</code>
После трансформации сортировки:
<code>{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\"):sort(dimension(\"dt.entity.geolocation.name\",ascending))",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1613557440000],
          "values": [6543]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [1613557440000],
          "values": [6673]
        },
        {
          "dimensions": ["Lichtenstein"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Lichtenstein"
          },
          "timestamps": [1613557980000],
          "values": [86]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1613557440000],
          "values": [1009]
        }
      ]
    }
  ]
}</code>


== Разделить по преобразованию ==
== Разделение по трансформации ==
{| class="wikitable"
{| class="wikitable"
!
!
Строка 725: Строка 961:
|<code>:splitBy("<dimension0>","<dimension1>","<dimensionN>")</code>
|<code>:splitBy("<dimension0>","<dimension1>","<dimensionN>")</code>
|-
|-
|Аргументы
|Аргумент
|Список измерений , которые необходимо сохранить в результате. Измерение должно быть указано его ключом.
|Список измерений , которые необходимо сохранить в результате. Измерение должно быть указано его ключом.
Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
Кавычки ( <code>"</code>) и тильды ( <code>~</code>), являющиеся частью ключа измерения, должны быть экранированы тильдой ( <code>~</code>).
Строка 733: Строка 969:
Вы можете применить любую агрегацию к результату разделения по преобразованию, в том числе те, которые не поддерживает исходная метрика.
Вы можете применить любую агрегацию к результату разделения по преобразованию, в том числе те, которые не поддерживает исходная метрика.


Показать пример
Пример
 
До разделения по транформации:
  <code>{
  <code>{
   "totalCount": 4,
   "totalCount": 4,
Строка 820: Строка 1058:
           "timestamps": [1612950360000],
           "timestamps": [1612950360000],
           "values": [214]
           "values": [214]
        }
      ]
    }
  ]
}</code>
После преобразования по трансформации:
<code>{
  "totalCount": 2,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\")",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1612950360000],
          "values": [542]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1612950360000],
          "values": [940]
         }
         }
       ]
       ]
Строка 826: Строка 1092:
  }</code>
  }</code>


== Преобразование со сдвигом во времени ==
== Трансформация со сдвигом во времени ==
{| class="wikitable"
{| class="wikitable"
|Синтаксис
|Синтаксис
|<code>:timeshift(5m)</code>
|<code>:timeshift(5m)</code>
|-
|-
|Аргументы
|Аргумент
|Период смены. Поддерживаются следующие значения:
|Период смены. Поддерживаются следующие значения:


<code>s</code>: секундыDynatrace версии 1.228+
<code>s</code>: секунды Ключ-АСТРОМ версии 1.228+


<code>m</code>: минуты
<code>m</code>: минуты
Строка 855: Строка 1121:
# Временные метки в ответе будут выровнены по исходным временным рамкам. Например, точка данных с отметкой времени <code>1615465800000</code>(11 марта 2021 г., 13:30 CET) будет возвращена как <code>1615552200000</code>(12 марта 2021 г., 13:30 CET).
# Временные метки в ответе будут выровнены по исходным временным рамкам. Например, точка данных с отметкой времени <code>1615465800000</code>(11 марта 2021 г., 13:30 CET) будет возвращена как <code>1615552200000</code>(12 марта 2021 г., 13:30 CET).


== Преобразования юнитов ==
== Трансформация юнитов ==


=== Установить единицу измерения ===
=== Установить единицу измерения ===
Строка 865: Строка 1131:
|<code>:setUnit(<unit>)</code>
|<code>:setUnit(<unit>)</code>
|-
|-
|Аргументы
|Аргумент
|Желаемый агрегат.
|Желаемый агрегат.
Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .
Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .
|-
|-
|Версия Dynatrace
|Версия Ключ-АСТРОМ
|1.235+
|1.235+
|}
|}
Строка 876: Строка 1142:
Это преобразование не влияет на точки данных.
Это преобразование не влияет на точки данных.


=== Единице ===
=== К юниту ===
{| class="wikitable"
{| class="wikitable"
!
!
Строка 888: Строка 1154:
Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .
Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .
|-
|-
|Версия Dynatrace
|Версия Ключ-АСТРОМ
|1.235+
|1.235+
|}
|}
Преобразование toUnit преобразует точки данных из исходной единицы в целевую. Если указанные единицы несовместимы, исходная единица сохраняется, а в ответ включается предупреждение.
Преобразование toUnit преобразует точки данных из исходной единицы в целевую. Если указанные единицы несовместимы, исходная единица сохраняется, а в ответ включается предупреждение.

Версия от 12:52, 10 октября 2022

Селектор метрик — это мощный инструмент для указания, какие метрики вы хотите прочитать с помощью вызова точек данных метрики GET или на вкладке « Код » проводника данных .

Кроме того, вы можете преобразовать полученный набор точек данных. Эти преобразования изменяют простые метрические данные.

Даже если вы собираетесь использовать селектор метрик только через REST API, мы рекомендуем создавать запрос с помощью вкладки Код проводника данных , которая предлагает встроенные инструменты, такие как автозаполнение, которые помогут вам построить запрос.

Ограничения

  • Селектор должен содержать хотя бы один ключ метрики.
  • Вы можете запрашивать точки данных до 10 метрик в одном запросе.

Выберите показатели

Вам нужно указать ключ метрики, чтобы получить для него временные ряды. Вы также можете указать несколько ключей метрик, разделенных запятыми (например, metrickey1,metrickey2).

Преобразования

Выбрав показатель, вы можете применить преобразования к его данным. Синтаксис для этого таков <metricKey>:<transformation1>:<transformation2>:<transformationN>. Строка селектора показателей оценивается слева направо. Каждое последующее преобразование применяется к результату предыдущего преобразования. Например,

builtin:host.cpu.user:sort(value(max,descending)):limit(10)

запрашивает данные для метрики builtin:host.cpu.usage, сортирует результаты по максимальному использованию ЦП и возвращает серию для первых 10 хостов.

Преобразования можно разделить на следующие категории.

Агрегация времени

Ключ-АСТРОМ всегда применяет агрегацию по времени к точкам данных метрик, поскольку количество необработанных данных часто делает невозможным их отображение на диаграмме осмысленным образом. Агрегация по времени выравнивает точки данных в соответствии с временными интервалами.

Наилучшее разрешение временного интервала — 1 минута. Разрешение, используемое для агрегирования по времени, зависит от различных факторов (таких как период времени запроса и возраст данных) и может частично контролироваться вами (см. параметр разрешения ).

Предоставляя преобразование агрегации , вы можете указать критерий, по которому ваши данные должны агрегироваться для каждого временного интервала. Тип данных метрики определяет, какие агрегаты доступны. Если вы не предоставляете агрегацию или используете autoагрегацию, применяется агрегация метрики по умолчанию. Вы можете запросить доступные агрегаты и агрегаты по умолчанию для метрики через конечную точку дескриптора метрики (поля aggregationTypes и defaultAggregation ). Чтобы объединить все точки данных ряда в одну точку данных, вы можете использовать преобразование fold .

Например, builtin:host.cpu.usageвозвращает среднее использование ЦП на временной интервал, так как агрегирование по умолчанию builtin:host.cpu.usageявляется средним. Если вместо этого вы хотите получить максимальную загрузку ЦП за временной интервал, вам нужно будет запросить builtin:host.cpu.usage:max. Вы также можете запросить максимальное использование ЦП для каждой серии за весь период запроса, используя builtin:host.cpu.usage:fold(max).

Агрегация пространства

Используя пространственное агрегирование, вы можете разделить серию вашей метрики в соответствии с интересующими вас измерениями. Например, если вы хотите получить среднее использование ЦП по всем хостам, вы можете объединить все серии разных хостов в один серия с использованием splitBy : builtin:host.cpu.usage:splitBy(). Более того, вы можете явно указать, по каким измерениям должен предоставляться ряд, передав их в качестве параметров функции splitBy (например, :splitBy("hostname","availability-zone")).

Фильтрация

Преобразования фильтров позволяют просеивать данные в соответствии с интересующими вас критериями. Например, builtin:host.cpu.usage:filter(eq("dt.entity.host","HOST-1234567"))возвращает только ряд данных об использовании ЦП для хоста HOST-1234567. Кроме того, вы можете фильтровать ряды в соответствии с заданными пороговыми значениями (подробности см. В seriesусловии ). В сочетании с агрегацией пространства также возможны мощные запросы, такие как определение максимального количества pod для выделенного кластера k8s, разделенного облачным приложением : builtin:kubernetes.pods:filter(eq("k8s.cluster.name","<clusterName>")):splitBy("dt.entity.cloud_application"):max.

Специфика объекта

Селектор метрик имеет тесную интеграцию с отслеживаемыми объектами . Например, вы можете встроить селектор сущностей непосредственно в свой запрос: <metricKey>:filter(in("dt.entity.<key>",entitySelector("<entitySelector>"))). Кроме того, вы можете добавить отображаемые имена значений измерений сущности в качестве выделенных измерений в результат запроса, используя преобразование имен .

Помимо этих элементарных преобразований, Ключ-АСТРОМ предоставляет вам богатый набор преобразований для управления точками данных ряда в соответствии с вашими потребностями. Ниже вы можете найти список всех доступных преобразований, предлагаемых селектором показателей.

Преобразование агрегации

Синтаксис :<aggregation>
Аргумент Желаемая совокупность.

Задает агрегирование возвращаемых точек данных. Доступны следующие типы агрегации:

Агрегация Примечания
auto Применяет агрегацию по умолчанию. Чтобы проверить агрегацию по умолчанию, запросите метрику с помощью вызова дескрипторов метрики GET и проверьте поле defaultAggregation .
min Выбирает наименьшее значение из временного интервала. Все nullзначения игнорируются.
max Выбирает наибольшее значение из временного интервала. Все nullзначения игнорируются.
avg Вычисляет среднее арифметическое всех значений временного интервала. Все nullзначения игнорируются.
summ Суммирует все значения временного интервала. Все nullзначения игнорируются.
value Принимает одно значение как есть. Применимо только к ранее агрегированным значениям и метрикам, поддерживающим valueагрегирование.
count Подсчитывает значения во временном интервале. Все nullзначения игнорируются.
percentile ( N) Вычисляет N -й процентиль, где N находится между 0и 100(включительно).

Пример синтаксиса

:percentile(99.9)

Преобразование по умолчанию

Синтаксис :default(<number>)
Аргумент Число с плавающей запятой для замены nullзначений в результате

Преобразование по умолчанию заменяет nullзначения в ряду указанным значением. Для серии должна быть хотя бы одна точка данных, чтобы можно было заполнить значения для других временных интервалов. Если нет доступных точек данных для запрошенного периода времени, возвращается пустой результат, даже если применяется преобразование по умолчанию .

Показать пример

{
  "totalCount": 1,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:tech.jvm.memory.pool.collectionCount",
      "data": [
        {
          "dimensions": [
            "PROCESS_GROUP_INSTANCE-A02ED607B5E9DD20",
            "30382",
            "G1 Old Gen",
            "G1 Old Generation"
          ],
          "dimensionMap": {
            "poolname": "G1 Old Gen",
            "rx_pid": "30382",
            "gcname": "G1 Old Generation",
            "dt.entity.process_group_instance": "PROCESS_GROUP_INSTANCE-A02ED607B5E9DD20"
          },
          "timestamps": [1623585600000, 1623628800000, 1623672000000, 1623715200000],
          "values": [3, null, null, 1]
        }
      ]
    }
  ]
}

Дельта-преобразование

Синтаксис :delta
Аргумент Нет

Дельта- преобразование заменяет каждую точку данных разницей с предыдущей точкой данных ( 0если разница отрицательна). Первая точка данных исходного набора исключена из результата.

Перед использованием дельта-преобразования необходимо применить преобразование агрегации .

Показать пример

{
  "totalCount": 1,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:service.keyRequest.count.server:value",
      "data": [
        {
          "dimensions": ["SERVICE_METHOD-BD61DD6DAC1EFDE1"],
          "dimensionMap": {
            "dt.entity.service_method": "SERVICE_METHOD-BD61DD6DAC1EFDE1"
          },
          "timestamps": [1630886400000, 1630929600000, 1630972800000, 1631016000000, 1631059200000],
          "values": [8338, 8449, 8343, 8372, 8425]
        }
      ]
    }
  ]
}

Преобразование фильтра

Синтаксис :filter(<condition1>,<condition2>,<conditionN>)
Аргумент Список условий фильтрации. Чтобы параметр прошел фильтрацию , он должен соответствовать всем условиям.

Преобразование фильтра фильтрует ответ по заданным критериям. Это позволяет вам фильтровать точки данных по вторичному измерению, так как entitySelector поддерживает только первое измерение, которое является сущностью. Сочетание области действия и преобразования фильтра помогает максимально повысить эффективность фильтрации данных.

Условия

Преобразование :filterподдерживает следующие условия.

Синтаксис Описание
prefix("<dimension>","<expected prefix>") Соответствует, если значение указанного измерения начинается с ожидаемого префикса.
eq("<dimension>","<expected value>") Соответствует, если значение указанного измерения равно ожидаемому значению.
ne("<dimension>","<value to be excluded>") Обратное eqусловие. Измерение с указанным именем исключается из ответа.
in("<dimension>",entitySelector("<selector>") Соответствует, если значение указанного измерения равно любому из ожидаемых значений, предоставленных селектором объекта .
existsKey("<dimension>") Соответствует, если указанное измерение существует.
remainder("<dimension>") Соответствует, если указанное измерение является частью остатка .
series(<aggregation>,<operator>(<reference value>)) Ответ содержит только ряды с точками данных, соответствующими предоставленному критерию.

Кавычки ( ") и тильды ( ~), которые являются частью ключа измерения или значения измерения (включая синтаксис селектора объекта), должны быть экранированы с помощью тильды ( ~).

Состояние серии

Условие seriesфильтрует агрегированное по времени значение точек данных для ряда по заданному критерию. То есть применяется указанное агрегирование, а затем этот результат одного значения сравнивается с эталонным значением с использованием указанного оператора.

Например, для series(avg, gt(10))сначала вычисляется среднее значение по всем точкам данных ряда, а затем это значение проверяется, чтобы увидеть, больше ли оно 10. Если ряд не соответствует этому критерию, он удаляется из предоставленного результата. То есть seriesоператор нельзя использовать для фильтрации отдельных точек данных ряда. Чтобы отфильтровать отдельные точки данных, вам нужно использовать преобразование разделов .

Условие поддерживает следующие агрегаты и операторы.

Доступные агрегации
  • min
  • max
  • avg
  • sum
  • median
  • percentile(N), с N в диапазоне 0до 100.
Доступные операторы
  • lt: ниже чем
  • le: ниже или равно
  • eq: равный
  • ne: не равный
  • gt: лучше чем
  • ge: больше или равно

Сложное состояние

Каждое условие может быть комбинацией подусловий.

Синтаксис Описание
and(<subcondition1>,<subcondition2>,<subconditionN>) Все подусловия должны быть выполнены.
or(<subcondition1>,<subcondition2>,<subconditionN>) Должно быть выполнено хотя бы одно подусловие.
not(<subcondition>) Отменяет подусловие. Например, он превращается в « содержит » в «не содержит» .

Примеры синтаксиса

:filter(or(eq("k8s.cluster.name","Server ~"North~""),eq("k8s.cluster.name","Server ~"West~"")))

Отфильтровывает точки данных по данным, доставленным либо сервером «Север» , либо сервером «Запад» .

:filter(and(prefix("App Version","2."),ne("dt.entity.os","OS-472A4A3B41095B09")))

Отфильтровывает точки данных, доставленные приложением основной версии 2 , которое не работает в операционной системе OS-472A4A3B41095B09 .

Сложение трансформации

Синтаксис :fold(<aggregation>)
Аргумент по желанию Ключ-АСТРОМ 1.232+Требуемый метод агрегации .

Свернутое преобразование объединяет список точек данных в одну точку данных. Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, :fold(median)в датчике метрика равна, :fold(avg)потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.

Показать пример

{
  "metricId": "builtin:host.disk.avail",
  "data": [
    {
      "dimensions": ["HOST-BB4DF8969CB41C60", "DISK-FB78447211EE76BF"],
      "dimensionMap": {
        "dt.entity.disk": "DISK-FB78447211EE76BF",
        "dt.entity.host": "HOST-BB4DF8969CB41C60"
      },
      "timestamps": [1612794060000, 1612794120000, 1612794180000],
      "values": [4.605786630826667e11, 4.424691002026667e11, 439596351488]
    }
  ]
}

Последнее преобразование

Синтаксис :last<aggregation>:lastReal<aggregation>
Аргумент по желанию Ключ-АСТРОМ 1.232+Требуемый метод агрегации .

Последнее преобразование возвращает самую последнюю точку данных из периода времени запроса . Чтобы получить результат в определенной агрегации, укажите агрегацию в качестве аргумента. Если указанная агрегация не поддерживается, используется агрегация по умолчанию. Например, :last(median)в датчике метрика равна, :last(avg)потому что медиана не поддерживается, а по умолчанию используется avg. Если агрегирование уже применялось в цепочке преобразования ранее, аргумент игнорируется.

Если метрика перед преобразованием содержит несколько кортежей (уникальные комбинации метрика — измерение — значение измерения), ко всем кортежам применяется самая последняя метка времени. Чтобы получить фактическую последнюю метку времени, используйте lastRealоператор.

Показать пример

{
  "totalCount": 3,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\")",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [
            1617178800000, 1617180000000, 1617181200000, 1617182400000, 1617183600000, 1617184800000
          ],
          "values": [90, 106, 110, 96, 116, 102]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [
            1617178800000, 1617180000000, 1617181200000, 1617182400000, 1617183600000, 1617184800000
          ],
          "values": [176, 168, 178, 174, 183, 172]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [
            1617178800000, 1617180000000, 1617181200000, 1617182400000, 1617183600000, 1617184800000
          ],
          "values": [1168, 1121, 1154, 1160, 1108, 1135]
        }
      ]
    }
  ]
}

Предельное преобразование

Синтаксис :limit(2)
Аргумент Максимальное количество записей в результате.

Преобразование предела ограничивает количество записей (уникальных комбинаций метрика-измерение-значение измерения) в ответе. В ответ включаются только первые X записей; остальные отбрасываются.

Чтобы убедиться, что требуемые записи находятся вверху результата, примените преобразование сортировки перед использованием предела.

Пример

{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\"):sort(value(sum,descending))",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1613559180000],
          "values": [6593]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1613559180000],
          "values": [1002]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [1613559180000],
          "values": [564]
        }
      ]
    }
  ]
}

Объединение преобразования

Синтаксис :merge("<dimension0>","<dimension1>","<dimensionN>")
Аргумент Список параметров , которые необходимо удалить. Измерение должно быть указано его ключом.

Кавычки ( ") и тильды ( ~), являющиеся частью ключа измерения, должны быть экранированы тильдой ( ~).

Преобразование слияния удаляет указанные измерения из результата. Все ряды/значения, имеющие одинаковые размеры после удаления, объединяются в один. Значения пересчитываются в соответствии с выбранной агрегацией.

Вы можете применить любую агрегацию к результату преобразования слияния , в том числе те, которые не поддерживает исходная метрика.

Пример

{
  "totalCount": 2,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:synthetic.browser.event.actionDuration.load.geo:count",
      "data": [
        {
          "dimensions": ["SYNTHETIC_TEST_STEP-002D5D5A0230A18F", "GEOLOCATION-B69A5A40388CC698"],
          "dimensionMap": {
            "dt.entity.synthetic_test_step": "SYNTHETIC_TEST_STEP-97EF148D63564F29",
            "dt.entity.geolocation": "GEOLOCATION-0A41430434C388A9"
          },
          "timestamps": [1559865600000, 1560124800000, 1560384000000],
          "values": [143, 156, 217]
        },
        {
          "dimensions": ["SYNTHETIC_TEST_STEP-002D5D5A0230A18F", "GEOLOCATION-43BA84CAB24D7950"],
          "timestamps": [1559865600000, 1560124800000, 1560384000000],
          "values": [773, 804, 801]
        }
      ]
    }
  ]
}

Преобразование имен

Синтаксис :names
Аргумент Нет
Ограничения Применяется только к измерениям типа объекта.

Преобразование имен добавляет имя значения измерения к массиву измерений и объекту DimensionMap ответа. Имя каждого измерения помещается перед идентификатором измерения.

Пример

До трансформации имён:

{ "dimensions": ["HOST-BB4DF8969CB41C60", "DISK-FB78447211EE76BF"], "dimensionMap": { "dt.entity.disk": "DISK-FB78447211EE76BF", "dt.entity.host": "HOST-BB4DF8969CB41C60" } }

После трансформации имён:

{ "dimensions": ["l-009", "HOST-BB4DF8969CB41C60", "C:\\", "DISK-FB78447211EE76BF"], "dimensionMap": { "dt.entity.disk.name": "C:\\", "dt.entity.disk": "DISK-FB78447211EE76BF", "dt.entity.host.name": "l-009", "dt.entity.host": "HOST-BB4DF8969CB41C60" } }

Трансформация наследований

Синтаксис :parents
Аргумент Нет
Ограничения Применяется только к измерениям типа объекта, перечисленного ниже.

Преобразование наследований добавляет предшественника измерения в массив измерений и объект DimensionMap ответа . Предшественник каждого измерения помещается перед самим измерением.

Это преобразование работает только в том случае, если объект измерения является частью другого, более крупного объекта. Например, PROCESS_GROUP_INSTANCEвсегда является дочерним элементом объекта, на HOSTкотором он работает. Поддерживаются следующие отношения.

Дочерний параметр Родительский параметр
SERVICE_METHOD SERVICE
SERVICE_INSTANCE SERVICE
APPLICATION_METHOD APPLICATION
PROCESS_GROUP_INSTANCE HOST
ДИСК HOST
СЕТЕВОЙ ИНТЕРФЕЙС HOST
СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ SYNTHETIC_TEST
HTTP_CHECK_STEP HTTP_CHECK
ВНЕШНИЙ_СИНТЕТИЧЕСКИЙ_ТЕСТ_ШАГ EXTERNAL_SYNTHETIC_TEST

Пример

До трансформации наследования:

{
  "dimensions": ["SERVICE_METHOD-D9D3A16FA577BF1C"],
  "dimensionMap": {
    "dt.entity.service": "SERVICE-C22F1E8EA66FF4C5"
  }
}

После трансформации наследования:

{ "dimensions": ["SERVICE-C22F1E8EA66FF4C5", "SERVICE_METHOD-D9D3A16FA577BF1C"], "dimensionMap": { "dt.entity.service_method": "SERVICE_METHOD-D9D3A16FA577BF1C", "dt.entity.service": "SERVICE-C22F1E8EA66FF4C5" } }

Преобразование раздела

Синтаксис :partition("<partition dimension key>",<partition1>,<partitionN>)
Аргумент
  • Ключ измерения раздела. Это не существующее измерение, а новое, которое создаст трансформация. Кавычки ( ") и тильды ( ~), являющиеся частью ключа измерения, должны быть экранированы тильдой ( ~).
  • Список разделов, которые необходимо применить. Чтобы узнать, как их указать, см. раздел «Синтаксис раздела» ниже.
Версия Ключ-АСТРОМ 1.230+

Преобразование раздела разделяет точки данных ряда на основе заданных критериев. Он вводит новое измерение (размерность раздела), значение которого определяется критерием раздела.

  • Каждая точка данных из исходного ряда назначается первому разделу, для которого заданный критерий соответствует точке данных.
  • Точки данных, которые не соответствуют ни одному критерию раздела, отбрасываются.
  • Измерение раздела добавляется в серию только для разделов, которым назначена хотя бы одна точка данных.

Вы должны применить преобразование агрегации перед использованием преобразования раздела.

Синтаксис раздела

Одно преобразование может содержать несколько разделов. Они оцениваются сверху вниз; применяется первый соответствующий раздел.

Каждая секция должна содержать значение измерения секции, которое будет помечать переданные точки данных, и критерий, по которому нужно фильтровать точки данных.

value("<partition dimension value>",<criterion>)

Доступны следующие критерии:

lt(X) меньше Х
le(X) меньше или равно X
eq(X) равно Х
ne(X) не равно Х
ge(X) больше или равно X
gt(X) больше Х
range(X,Y) больше или равно X и меньше Y
otherwise Универсальный оператор, соответствующий всем значениям. Используйте его в конце цепочки разделов по умолчанию.
or(<criterion1>,<criterionN>) должен быть выполнен хотя бы один подкритерий
and(<criterion1>,<criterionN>) все подкритерии должны быть выполнены
not(<criterion>) Отрицательный критерий, соответствующий всем значениям, которые не соответствуют критерию.

Пример

В этом примере используется следующее преобразование разделов:

:partition(
    "Action duration",
    value("slow",gt(200)),
    value("fast",lt(100)),
    value("normal",otherwise)
)

Он добавляет к метрике измерение продолжительности действия и на его основе разбивает точки данных на три категории:

  • fast для действий быстрее 100миллисекунд.
  • slow для действий медленнее 200миллисекунд.
  • normal для всех других действий.

До преобразования раздела:

{
  "totalCount": 1,
  "nextPageKey": null,
  "resolution": "10m",
  "result": [
    {
      "metricId": "builtin:apps.web.action.domInteractive.load.browser:avg",
      "data": [
        {
          "dimensions": ["APPLICATION_METHOD-E418A4BC1DC2C911", "BROWSER-EFB8A292CB368A8D"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911"
          },
          "timestamps": [
            1637152200000, 1637152800000, 1637153400000, 1637154000000, 1637154600000,
            1637155200000, 1637155800000, 1637156400000, 1637157000000, 1637157600000,
            1637158200000, 1637158800000, 1637159400000
          ],
          "values": [155, 215, 247, 118, 94, 119, 67, 159, 114, 169, 113, 75, 160]
        }
      ]
    }
  ]
}

После преобразования раздела:

{
  "totalCount": 3,
  "nextPageKey": null,
  "resolution": "10m",
  "result": [
    {
      "metricId": "builtin:apps.web.action.domInteractive.load.browser:avg:partition(\"Action duration\",value(slow,gt(200)),value(fast,lt(100)),value(normal,otherwise))",
      "data": [
        {
          "dimensions": [
            "BROWSER-EFB8A292CB368A8D",
            "APPLICATION_METHOD-E418A4BC1DC2C911",
            "normal"
          ],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "normal"
          },
          "timestamps": [
            1637152200000, 1637152800000, 1637153400000, 1637154000000, 1637154600000,
            1637155200000, 1637155800000, 1637156400000, 1637157000000, 1637157600000,
            1637158200000, 1637158800000, 1637159400000
          ],
          "values": [155, null, null, 118, null, 119, null, 159, 114, 169, 113, null, 160]
        },
        {
          "dimensions": ["BROWSER-EFB8A292CB368A8D", "APPLICATION_METHOD-E418A4BC1DC2C911", "fast"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "fast"
          },
          "timestamps": [
            1637154000000, 1637154600000, 1637155200000, 1637155800000, 1637156400000,
            1637157000000, 1637157600000, 1637158200000, 1637158800000, 1637159400000,
            1637160000000, 1637160600000, 1637161200000
          ],
          "values": [null, null, null, null, 94, null, 67, null, null, null, null, 75, null]
        },
        {
          "dimensions": ["BROWSER-EFB8A292CB368A8D", "APPLICATION_METHOD-E418A4BC1DC2C911", "slow"],
          "dimensionMap": {
            "dt.entity.browser": "BROWSER-EFB8A292CB368A8D",
            "dt.entity.application_method": "APPLICATION_METHOD-E418A4BC1DC2C911",
            "Action duration": "slow"
          },
          "timestamps": [
            1637154000000, 1637154600000, 1637155200000, 1637155800000, 1637156400000,
            1637157000000, 1637157600000, 1637158200000, 1637158800000, 1637159400000,
            1637160000000, 1637160600000, 1637161200000
          ],
          "values": [null, 215, 247, null, null, null, null, null, null, null, null, null, null]
        }
      ]
    }
  ]
}

Преобразование скорости

Синтаксис :rate(5m)
Аргументы Основание ставки. Поддерживаются следующие значения:

s: в секунду

m: в минуту

h: в час

d: в день

w: в неделю

M: в месяц

y: в год

Преобразование скорости преобразует метрику на основе количества (например, байтов) в метрику на основе скорости (например, байтов в минуту).

Любой аргумент может быть изменен целочисленным коэффициентом. Например, 5mсредства за 5 минут . Если аргумент не указан, используется ставка за 1 минуту .

Вы можете использовать преобразование скорости с любой метрикой, поддерживающей VALUEагрегирование. Запросите метрику с помощью вызова дескрипторов метрики GET , чтобы получить информацию о доступных агрегатах. Если метрика не поддерживает VALUEагрегирование, сначала примените преобразование агрегирования , а затем преобразование скорости.

  • Вы должны применить преобразование агрегации перед использованием преобразования скорости.
  • Преобразование скорости можно использовать только один раз в одной цепочке преобразований.

Сводное преобразование

Синтаксис :rollup(avg,15m)
Аргументы
  • Требуемая агрегация накопительного пакета. Поддерживаемые агрегаты:
    • min
    • max
    • avg
    • sum
    • median
    • percentile(N), с N в диапазоне 0до 100.
  • Продолжительность окна свертки в минутах. Длительность должна быть кратна разрешению запроса. Например, если разрешение составляет пять минут, сводка может быть 5m, 10m, 15mи т. д.
Версия Ключ-АСТРОМ 1.230+

Преобразование свертки сглаживает точки данных, удаляя любые пики запрошенного периода времени.

Преобразование берет каждую точку данных из периода времени запроса, формирует сводное окно, просматривая прошлые точки данных (таким образом, начальная точка данных становится последней точкой окна), вычисляет запрошенную агрегацию всех исходных значений, а затем заменяет все данные точку в окне с результатом расчета.

Например, если вы укажете :rollup(avg,5m)и разрешение запроса равно одной минуте, преобразование берет точку данных, добавляет четыре предыдущие точки данных для формирования окна свертки, а затем использует среднее значение этих пяти точек данных для вычисления окончательного значения точки данных. .

Ограничения

  • Прежде чем использовать преобразование свертки , необходимо применить преобразование агрегации .
  • Продолжительность окна объединения ограничена 60 минутами .
  • Вы можете сводить данные только за последние 2 недели (включая окна сворачивания). То есть самая старая точка данных вашего запроса не может быть больше, чем 2w-windowDurationв прошлом.

Плавное преобразование

Синтаксис :smooth(skipfirst)
Аргумент Стратегия сглаживания. Поддерживается только skipfirstстратегия.

Плавное преобразование сглаживает ряд точек данных после разрыва данных (одна или несколько точек данных со значением null).

Стратегия skipfirstзаменяет первую точку данных после разрыва данных на null.

Показать пример

До плавного преобразования:

{
  "totalCount": 1,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:service.keyRequest.count.server",
      "data": [
        {
          "dimensions": ["SERVICE_METHOD-BBA9C77B774B0C15"],
          "dimensionMap": {
            "dt.entity.service_method": "SERVICE_METHOD-BBA9C77B774B0C15"
          },
          "timestamps": [
            1628618460000, 1628618520000, 1628618580000, 1628618640000, 1628618700000,
            1628618760000, 1628618820000, 1628618880000, 1628618940000, 1628619000000
          ],
          "values": [null, 15, 13, 15, null, null, 28, 14, 14, 13]
        }
      ]
    }
  ]
}

После плавного преобразования:

{
  "totalCount": 1,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:service.keyRequest.count.server:smooth(skipfirst)",
      "data": [
        {
          "dimensions": ["SERVICE_METHOD-BBA9C77B774B0C15"],
          "dimensionMap": {
            "dt.entity.service_method": "SERVICE_METHOD-BBA9C77B774B0C15"
          },
          "timestamps": [
            1628618460000, 1628618520000, 1628618580000, 1628618640000, 1628618700000,
            1628618760000, 1628618820000, 1628618880000, 1628618940000, 1628619000000
          ],
          "values": [null, null, 13, 15, null, null, null, 14, 14, 13]
        }
      ]
    }
  ]
}

Преобразование сортировки

Синтаксис :sort(<sorting key 1>,<sorting key 2>)
Аргумент Один или несколько ключей сортировки.

Преобразование сортировки определяет порядок кортежей (уникальных комбинаций метрика — измерение — значение измерения) в ответе. Вы можете указать один или несколько критериев сортировки. Первый критерий используется для сортировки. Дополнительные критерии используются для определения ничьей. Вы можете выбрать направление сортировки:

  • ascending
  • descending

Сортировка параметров

Чтобы отсортировать результаты по значению измерения, используйте dimension("<dimension>",<direction>)ключ. Кавычки ( ") и тильды ( ~), являющиеся частью ключа измерения, должны быть экранированы тильдой ( ~).

Измерения объекта сортируются лексикографически ( 0..9a..z) по значениям идентификатора объекта Ключ-АСТРОМ.

Строковые размеры сортируются лексикографически.

Сортировка точек данных

Чтобы отсортировать результаты по точкам данных метрики в измерении, используйте value(<aggregation>,<direction>клавишу ).

Доступны следующие агрегаты:

  • min
  • max
  • avg
  • sum
  • median
  • percentile(N), с N в диапазоне 0до 100.

Агрегирование используется только для сортировки и не влияет на возвращаемые точки данных.

Сортировка применяется к результирующим точкам данных всей цепочки преобразования перед преобразованием сортировки . Если в цепочке преобразований нет преобразования агрегации , сортировка применяется к агрегированию метрики по умолчанию.

Пример

До трансформации сортировки:

{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\")",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1613557980000],
          "values": [6543]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1613557980000],
          "values": [1009]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [1613557980000],
          "values": [6673]
        },
        {
          "dimensions": ["Lichtenstein"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Lichtenstein"
          },
          "timestamps": [1613557980000],
          "values": [86]
        }
      ]
    }
  ]
}

После трансформации сортировки:

{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\"):sort(dimension(\"dt.entity.geolocation.name\",ascending))",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1613557440000],
          "values": [6543]
        },
        {
          "dimensions": ["Germany"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Germany"
          },
          "timestamps": [1613557440000],
          "values": [6673]
        },
        {
          "dimensions": ["Lichtenstein"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Lichtenstein"
          },
          "timestamps": [1613557980000],
          "values": [86]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1613557440000],
          "values": [1009]
        }
      ]
    }
  ]
}

Разделение по трансформации

Синтаксис :splitBy("<dimension0>","<dimension1>","<dimensionN>")
Аргумент Список измерений , которые необходимо сохранить в результате. Измерение должно быть указано его ключом.

Кавычки ( ") и тильды ( ~), являющиеся частью ключа измерения, должны быть экранированы тильдой ( ~).

Разделение по преобразованию сохраняет указанные измерения в результате и объединяет все остальные измерения. Значения пересчитываются в соответствии с выбранной агрегацией.

Вы можете применить любую агрегацию к результату разделения по преобразованию, в том числе те, которые не поддерживает исходная метрика.

Пример

До разделения по транформации:

{
  "totalCount": 4,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names",
      "data": [
        {
          "dimensions": [
            "easyTravel Demo",
            "MOBILE_APPLICATION-752C288D59734C79",
            "Android",
            "OS-472A4A3B41095B09",
            "Switzerland",
            "GEOLOCATION-976217DC7560B588"
          ],
          "dimensionMap": {
            "dt.entity.device_application.name": "easyTravel Demo",
            "dt.entity.os": "OS-472A4A3B41095B09",
            "dt.entity.os.name": "Android",
            "dt.entity.device_application": "MOBILE_APPLICATION-752C288D59734C79",
            "dt.entity.geolocation.name": "Switzerland",
            "dt.entity.geolocation": "GEOLOCATION-976217DC7560B588"
          },
          "timestamps": [1612950360000],
          "values": [557]
        },
        {
          "dimensions": [
            "easyTravel Demo",
            "MOBILE_APPLICATION-752C288D59734C79",
            "Android",
            "OS-472A4A3B41095B09",
            "Austria",
            "GEOLOCATION-EADFE05E062C8D33"
          ],
          "dimensionMap": {
            "dt.entity.device_application.name": "easyTravel Demo",
            "dt.entity.os": "OS-472A4A3B41095B09",
            "dt.entity.os.name": "Android",
            "dt.entity.device_application": "MOBILE_APPLICATION-752C288D59734C79",
            "dt.entity.geolocation.name": "Austria",
            "dt.entity.geolocation": "GEOLOCATION-EADFE05E062C8D33"
          },
          "timestamps": [1612950360000],
          "values": [328]
        },
        {
          "dimensions": [
            "easyTravel Demo",
            "MOBILE_APPLICATION-752C288D59734C79",
            "iOS",
            "OS-62028BEE737F03D4",
            "Switzerland",
            "GEOLOCATION-976217DC7560B588"
          ],
          "dimensionMap": {
            "dt.entity.device_application.name": "easyTravel Demo",
            "dt.entity.os": "OS-62028BEE737F03D4",
            "dt.entity.os.name": "iOS",
            "dt.entity.device_application": "MOBILE_APPLICATION-752C288D59734C79",
            "dt.entity.geolocation.name": "Switzerland",
            "dt.entity.geolocation": "GEOLOCATION-976217DC7560B588"
          },
          "timestamps": [1612950360000],
          "values": [383]
        },
        {
          "dimensions": [
            "easyTravel Demo",
            "MOBILE_APPLICATION-752C288D59734C79",
            "iOS",
            "OS-62028BEE737F03D4",
            "Austria",
            "GEOLOCATION-EADFE05E062C8D33"
          ],
          "dimensionMap": {
            "dt.entity.device_application.name": "easyTravel Demo",
            "dt.entity.os": "OS-62028BEE737F03D4",
            "dt.entity.os.name": "iOS",
            "dt.entity.device_application": "MOBILE_APPLICATION-752C288D59734C79",
            "dt.entity.geolocation.name": "Austria",
            "dt.entity.geolocation": "GEOLOCATION-EADFE05E062C8D33"
          },
          "timestamps": [1612950360000],
          "values": [214]
        }
      ]
    }
  ]
}

После преобразования по трансформации:

{
  "totalCount": 2,
  "nextPageKey": null,
  "result": [
    {
      "metricId": "builtin:apps.other.sessionCount.osAndGeo:names:splitBy(\"dt.entity.geolocation.name\")",
      "data": [
        {
          "dimensions": ["Austria"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Austria"
          },
          "timestamps": [1612950360000],
          "values": [542]
        },
        {
          "dimensions": ["Switzerland"],
          "dimensionMap": {
            "dt.entity.geolocation.name": "Switzerland"
          },
          "timestamps": [1612950360000],
          "values": [940]
        }
      ]
    }
  ]
}

Трансформация со сдвигом во времени

Синтаксис :timeshift(5m)
Аргумент Период смены. Поддерживаются следующие значения:

s: секунды Ключ-АСТРОМ версии 1.228+

m: минуты

h: часы

d: дни

w: недели

Преобразование сдвига во времени сдвигает временной интервал, заданный параметрами запроса from и to , и сопоставляет полученные точки данных с метками времени из исходного временного интервала. Это может помочь вам передать данные из разных часовых поясов или разместить вчерашние и сегодняшние данные на одном графике для визуального сравнения.

Положительный аргумент сдвигает временные рамки в будущее; отрицательный аргумент сдвигает временные рамки в прошлое.

Вы можете использовать это преобразование для обработки данных из разных часовых поясов.

Рассмотрим пример с таймфреймом с 1615550400000(12 марта 2021 г., 13:00 по центральноевропейскому времени) по 1615557600000(12 марта 2021 г., 15:00 по центральноевропейскому времени) и сдвигом во времени -1d(на один день в прошлое).

  1. Точки данных будут запрашиваться для периода времени с 1615464000000(11 марта 2021 г., 13:00 CET) до 1615471200000(11 марта 2021 г., 15:00 CET).
  2. Временные метки в ответе будут выровнены по исходным временным рамкам. Например, точка данных с отметкой времени 1615465800000(11 марта 2021 г., 13:30 CET) будет возвращена как 1615552200000(12 марта 2021 г., 13:30 CET).

Трансформация юнитов

Установить единицу измерения

Синтаксис :setUnit(<unit>)
Аргумент Желаемый агрегат.

Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .

Версия Ключ-АСТРОМ 1.235+

Преобразование setUnit задает единицу измерения в метаданных метрики.

Это преобразование не влияет на точки данных.

К юниту

Синтаксис :toUnit(<sourceUnit>,<targetUnit>)
Аргументы Исходная и целевая единицы преобразования.

Чтобы получить список доступных юнитов, используйте API-вызов GET для всех юнитов .

Версия Ключ-АСТРОМ 1.235+

Преобразование toUnit преобразует точки данных из исходной единицы в целевую. Если указанные единицы несовместимы, исходная единица сохраняется, а в ответ включается предупреждение.

Содержание