Интерфейс приложений API Phrase TMS

Аналитические агрегаты (TMS)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Хранилище данных, выполняющее агрегатные запросы, построено на базе Elasticsearch (в настоящее время версия 1.7.x). Elasticsearch предоставляет возможности для поиска в реальном времени и агрегирования, при этом API аналитики формирует тонкий, улучшенный с точки зрения безопасности слой поверх него. Язык запросов и агрегирования Elasticsearch используется в примерах.

  • Язык, используемый в поле filter JSON-запроса, описан в документации Elasticsearch Query DSL.

  • Язык, используемый в поле aggregations JSON-запроса, полностью описан в документации Elasticsearch Aggregations.

Индексы

Разные типы данных находятся в разных индексах. Например, данные job находятся в индексе jobPart, а данные costs находятся в индексе costs. Необходимые данные могут быть указаны путем указания индекса в URL-адресе конечной точки API агрегирования.

Документы родитель-дочерний

Части информации о задании находятся в двух разных документах в базе данных Elasticsearch. Эти документы находятся в parent-child отношении. Например, информация о проекте задания находится в родительском документе, в то время как информация о самом задании находится в дочернем документе. В зависимости от необходимой информации агрегирования могут быть либо до агрегирования данных родитель-дочернего, либо после него, но само агрегирование данных должно присутствовать во всех запросах.

Модели данных индекса

Общие данные

Анализ

{
  "id": строка,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "innerId": число,
  "name": строка,
  "tags": строка[],
  "trashed": логическое,
  "trashedBy": <пользователь>,
  "type": строка
}

Назначение

{
  "name": строка,
  "linguist": <пользователь>,
  "vendor": <Vendor>
}

Портал отправителя

{
  "id": строка,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "name": строка,
  "tags": строка[],
  "trashed": логическое,
  "urlId": строка
}

Покупатель

{
  "id": строка,
  "name": строка
}

Клиент

{
  "id": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "externalId": строка,
  "name": строка,
  "tags": строка[],
  "trashed": логическое,
}

Центр затрат

{
  "id": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "name": строка,
  "tags": строка[],
  "trashed": логическое,
}

Отрасль

{
  "id": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "name": строка,
  "tags": строка[],
  "удалено": булево
}

Задание

{
  "id": строка,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "расширение": строка,
  "fileName": string,
  "количество групп": число,
  "innerId": "1",
  "языковая пара": строка,
  "lastModified": Date,
  "локализация пары": строка,
  "sourceLanguage": string,
  "локализация источника": строка,
  "tags": строка[],
  "targetLanguage": string,
  "targetLocale": string",
  "идентификатор задачи": строка,
  "trashed": логическое,
  "trashedBy": <пользователь>,
  "идентификатор пользователя": строка
}

Часть задания

{
  "ид": "19",
  "assignedTo": <Assignment>,
  "beginIndex": number,
  "buyer": <Buyer>,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "срок исполнения": Дата,
  "конечный индекс": число,
  "количество групп": число,
  "внутренний идентификатор": строка,
  "lastModified": Date,
  "уровень": число,
  "статус": строка,
  "tags": [],
  "uid": строка,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": строка,
  "deleted": логическое,
  "по умолчанию": логическое,
  "включитьТеги": логическое,
  "name": строка,
  "tags": строка[],
  "тип": строка,
}

NetRateScheme

{
  "id": строка,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "по умолчанию_": логическое,
  "deleted": логическое,
  "externalId": строка,
  "name": строка,
  "tags": строка[],
}

PriceList

{
  "id": строка,
  "createdBy": <Пользователь>,
  "валюта": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "по умолчанию_": логическое,
  "deleted": логическое,
  "name": строка,
  "tags": строка[],
  "trashed": логическое,
  "единица": строка
}

Проект

{
  "id": строка,
  "buyer": <Buyer>,
  "client": <Client>,
  "costCenter": <CostCenter>,
  "createdBy": <Пользователь>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "срок исполнения": Дата,
  "dateTrashed": Дата,
  "deleted": логическое,
  "отрасль": <Domain>,
  "innerId": число,
  "языковыеПары": строка[],
  "локальныеПары": строка[],
  "mtEngine": <MtEngine>,
  "name": строка,
  "заметка": строка,
  "ответственный": <User>,
  "sourceLanguage": string,
  "локализация источника": строка,
  "статус": строка,
  "специализация": <SubDomain>,
  "tags": строка[],
  "targetLanguages": string[],
  "targetLocales": string[],
  "trashed": логическое,
  "trashedBy": <пользователь>,
  "uid": строка,
  "vendor": <Vendor>
}

Цитата

{
  "id": строка,
  "созданоПользователем: <пользователь>,
  "валюта": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "внутренний идентификатор": строка,
  "name": строка,
  "статус": строка,
  "tags": строка[],
  "trashed": логическое,
  "trashedBy": <пользователь>,
  "единица": строка
}

Услуга

{
  "id": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "name": строка,
  "публичноеИмя": строка,
  "tags": строка[],
  "trashed": логическое,
  "type": строка
}

Специализация

{
  "id": строка,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "name": строка,
  "tags": строка[],
  "удалено": булево
}

Пользователь

{
  "ид": число,
  "активный": логическое,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "электроннаяПочта": строка,
  "имя": строка,
  "полноеИмя": строка,
  "innerId": число,
  "должность": строка,
  "фамилия": строка,
  "языковойСтандарт": строка,
  "заметка": строка,
  "роль": строка,
  "tags": строка[],
  "timeZone": string,
  "trashed": логическое,
  "имяПользователя": строка
}

Исполнитель

{
  "id": строка,
  "кандидат": логическое,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "deleted": логическое,
  "tags": строка[],
  "токен": строка,
  "удалено": булево
}

WorkflowStep

{
  "id": строка,
  "сокращение": строка,
  "dateDeleted": Date,
  "dateTrashed": Дата,
  "name": строка,
  "заказ": число,
  "tags": строка[],
  "удалено": булево
}

ИндексАнализа

АгрегацияДанных

"данные": {
  "дочерние": {
    "тип": "типАнализа"
  }
}

РодительскийДокумент

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "услуга": <Service>
}

ДочернийДокумент

{
  "анализ": <Analysis>,
  "jobPart": <JobPart>,
  "задание": <Job>,
  "netRateScheme": <NetRateScheme>,

  "приоритет": число,
  "данные": {
    "машинный перевод": {
      "совпадение0": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match100": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match50": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match75": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match85": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match95": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      }
    },
    "repetitions": {
      "символы": число,
      "pages": число,
      "percent": число,
      "segments": число,
      "words": число
    },
    "tm": {
      "совпадение0": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match100": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match101": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match50": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match75": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match85": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      },
      "match95": {
        "символы": число,
        "pages": число,
        "percent": число,
        "segments": число,
        "words": число
      }
    },
    "total": {
      "символы": число,
      "pages": число,
      "percent": число,
      "segments": число,
      "words": число
    }
  }
}

Индекс API

АгрегацияДанных

"данные": {
  "дочерние": {
    "type": "apiType"
  }
}

РодительскийДокумент

{
  "user": <пользователь>
}

ДочернийДокумент

{
  "request": {
    "date": Дата,
    "host": строка,
    "ipv4": строка,
    "ipv6": строка,
    "location": строка,
    "method": строка
  },
  "response": {
    "date": Дата,
    "duration": число,
    "status": число
  },
  "api": {
    "action": строка,
    "asynch": булево,
    "тип": строка,
    "uri": строка,
    "ver": строка
  }
}

Индекс затрат

АгрегацияДанных

"данные": {
  "дочерние": {
    "type": "costsType"
  }
}

РодительскийДокумент

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "услуга": <Service>
}

ДочернийДокумент

{
  "анализ": <Analysis>,
  "задание": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "quote": <расчет стоимости>,
  "workflowStep": <ШагРабочегоПроцесса>,
  
  "приоритет": число,
  "данные": {
    "машинный перевод": {
      "match0": число,
      "match100": число,
      "match50": число,
      "match75": число,
      "match85": число,
      "match95": число
    },
    "repetitions": число,
    "tm": {
      "match0": число,
      "match100": число,
      "match101": число,
      "match50": число,
      "match75": число,
      "match85": число,
      "match95": число
    },
    "total": число
  }
}

часть задания

Агрегация данных

"данные": {
  "дочерние": {
    "type": "jobPartType"
  }
}

Родительский документ

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "услуга": <Service>
}

Дочерний документ

{
  "задание": <Job>,
  "частьЗадания": <JobPart>

  "данные": {
    "счета": {
      "символы": {
      "итого": число,
      "подтверждено": число,
      "notConfirmed": number,
      "заблокировано": число,
      "неЗаблокировано": число,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "завершено": число,
      "неЗавершено": число
    },
    "группы": {
      "всего": число
    },
    "сегменты": {
      "итого": число,
      "подтверждено": число,
      "notConfirmed": number,
      "заблокировано": число,
      "неЗаблокировано": число,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "завершено": число,
      "неЗавершено": число,
      "мт": {
        "послеРедактирования": число,
        "релевантно": число,
        "неРелевантно": число
      },
      "кa": {
        "проверено": число,
        "неПроверено": число
      }
    },
    "слова": {
      "итого": число,
      "подтверждено": число,
      "notConfirmed": number,
      "заблокировано": число,
      "неЗаблокировано": число,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "завершено": число,
      "неЗавершено": число
    },
    "кa": {
      "предупреждения": число,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Примеры

  • HTTP-запросы выполняются в Postman.

  • Войдите через профиль менеджера проекта или администратора и получите токен для входа, используя интерфейс приложений API.

  • POST-запросы к api/v3/analytics/jobPart?token=&lt;ваш_токен_входа&gt;

Общее количество заданий

Запрос

{
  "агрегации": {
    "данные": {
      "дочерние": {
        "type": "jobPartType"
      }
    }
  }
}

Ответ

{
  "hits": {
    "total": 359
  },
  "агрегации": {
    "данные": {
      "doc_count": 14417
    }
  }
}

В поле агрегации агрегация данные ответила 14 417 совпадающими документами, показанными в поле doc_count.

Общее количество исходных слов

Запрос

{
  "агрегации": {
    "данные": {
      "дочерние": {
        "type": "jobPartType"
      },
      "aggs": {
        "wordCount": {
          "sum": {
            "field": "data.volume.words"
          }
        }
      }
    }
  }
}

Ответ

{
  "hits": {
    "total": 359
  },
  "агрегации": {
    "данные": {
      "doc_count": 14417,
      "wordCount": {
        "value": 6893067
      }
    }
  }
}

Общее количество исходных слов, деленное на целевой язык

Запрос

{
  "агрегации": {
    "данные": {
      "дочерние": {
        "type": "jobPartType"
      },
      "aggs": {
        "byTargetLanguage": {
          "terms": {
            "field": "job.targetLanguage",
            "size": 3
          },
          "aggs": {
            "wordCount": {
              "sum": {
                "field": "data.volume.words"
              }
            }
          }
        }
      }
    }
  }
}

Ответ

{
  "hits": {
    "total": 359
  },
  "агрегации": {
    "данные": {
      "byTargetLanguage": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 10071,
        "buckets": [
          {
            "doc_count": 1835,
            "wordCount": {
              "value": 702721
            },
            "key": "cs"
          },
          {
            "doc_count": 1491,
            "wordCount": {
              "value": 2602529
            },
            "key": "de"
          },
          {
            "doc_count": 1020,
            "wordCount": {
              "value": 92676
            },
            "key": "fi"
          }
        ]
      },
      "doc_count": 14417
    }
  }
}

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

Общее количество работ, разделенное по статусу проекта

Запрос

{
  "агрегации": {
    "projectStatus": {
      "terms": {
        "field": "project.status"
      },
      "aggs": {
        "данные": {
          "дочерние": {
            "type": "jobPartType"
          }
        }
      }
    }
  }
}

Ответ

{
  "hits": {
    "total": 359
  },
  "агрегации": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "doc_count": 326,
          "данные": {
            "doc_count": 14318
          },
          "key": "NEW"
        },
        {
          "doc_count": 31,
          "данные": {
            "doc_count": 89
          },
          "ключ": "ЗАВЕРШЕНО"
        },
        {
          "количество_документов": 1,
          "данные": {
            "doc_count": 4
          },
          "ключ": "ПРИСВОЕНО"
        },
        {
          "количество_документов": 1,
          "данные": {
            "doc_count": 6
          },
          "ключ": "ОТКЛОНЕНО_ИСПОЛНИТЕЛЕМ"
        }
      ]
    }
  }
}

Модуль аналитики был настроен на разделение данных по статусу проекта перед агрегацией данные .

Общее количество заданий из новых проектов

Запрос

{
  "filter": {
    "термин": {
      "проект.статус": "НОВЫЙ"
    }
  },
  "агрегации": {
    "данные": {
      "дочерние": {
        "type": "jobPartType"
      }
    }
  }
}

Ответ

{
  "hits": {
    "всего": 326
  },
  "агрегации": {
    "данные": {
      "doc_count": 14318
    }
  }
}

Поле фильтр используется в запросе. Это сужает данные перед последующими агрегациями.

Была ли эта статья полезной?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.