API do Phrase TMS

Agregações de Análise (TMS)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

O datastore que executa consultas de agregação é construído sobre o Elasticsearch (atualmente versão 1.7.x). O Elasticsearch fornece buscas em tempo real e capacidades de agregação, com a API de Análise formando uma camada fina e aprimorada em segurança sobre ele. A linguagem de consulta e agregação do Elasticsearch é utilizada nos exemplos.

  • A linguagem utilizada no campo filtro do JSON da consulta é descrita na documentação do Elasticsearch Query DSL.

  • A linguagem utilizada no campo agregações do JSON da consulta é totalmente descrita na documentação do Elasticsearch Aggregations.

Índices

Diferentes tipos de dados vivem em diferentes índices. Por exemplo, dados de trabalho vivem no índice parteDoTrabalho, e dados de custos vivem no índice custos. Os dados necessários podem ser especificados ao indicar o índice na URL do endpoint da API de agregação.

Documentos Pai-Filho

Partes da informação sobre um trabalho vivem em dois documentos diferentes no banco de dados Elasticsearch. Esses documentos estão em um relacionamento pai-filho. Por exemplo, informações sobre o projeto de um trabalho vivem no documento pai, enquanto informações sobre o próprio trabalho vivem no documento filho. Dependendo das informações necessárias, as agregações ocorrem antes ou depois da agregação pai-filho dos dados, mas a agregação de dados em si deve estar presente em todas as consultas.

Modelos de Dados de Índice

Dados Comuns

Análise

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": number,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "type": string
}

Atribuição

{
  "name": string,
  "linguist": <User>,
  "vendor": <Vendor>
}

Portal de Solicitações

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "urlId": string
}

Comprador

{
  "id": string,
  "name": string
}

Cliente

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "externalId": string,
  "name": string,
  "tags": string[],
  "trashed": boolean,
}

CostCenter

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
}

Domínio

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean
}

Trabalho

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "extension": string,
  "fileName": string,
  "contagemGrupo": número,
  "innerId": "1",
  "languagePair": string,
  "lastModified": Date,
  "localePair": string,
  "sourceLanguage": string,
  "sourceLocale": string,
  "tags": string[],
  "targetLanguage": string,
  "targetLocale": string",
  "taskId": string,
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": string
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": number,
  "buyer": <Buyer>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDue": Date,
  "endIndex": number,
  "contagemGrupo": número,
  "innerId": string,
  "lastModified": Date,
  "level": number,
  "status": string,
  "tags": [],
  "uid": string,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": string,
  "deleted": boolean,
  "default_: boolean,
  "includeTags": boolean,
  "name": string,
  "tags": string[],
  "type": string,
}

NetRateScheme

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "default_": boolean,
  "deleted": boolean,
  "externalId": string,
  "name": string,
  "tags": string[],
}

PriceList

{
  "id": string,
  "createdBy": <User>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "default_": boolean,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "unidade": string
}

Projeto

{
  "id": string,
  "buyer": <Buyer>,
  "client": <Client>,
  "costCenter": <CostCenter>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateDue": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "domain": <Domain>,
  "innerId": number,
  "languagePairs": string[],
  "localePairs": string[],
  "mtEngine": <MtEngine>,
  "name": string,
  "note": string,
  "owner": <User>,
  "sourceLanguage": string,
  "sourceLocale": string,
  "status": string,
  "subDomain": <SubDomain>,
  "tags": string[],
  "targetLanguages": string[],
  "targetLocales": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": string,
  "vendor": <Vendor>
}

Orçamento

{
  "id": string,
  "criadoPor": <usuário>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": string,
  "name": string,
  "status": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "unidade": string
}

Serviço

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "publicName": string,
  "tags": string[],
  "trashed": boolean,
  "type": string
}

SubDomain

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean
}

Usuário

{
  "id": número,
  "ativo": booleano,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "email": string,
  "firstName": string,
  "fullName": string,
  "innerId": number,
  "jobTitle": string,
  "lastName": string,
  "locale": string,
  "note": string,
  "role": string,
  "tags": string[],
  "timeZone": string,
  "trashed": boolean,
  "userName": string
}

Fornecedor

{
  "id": string,
  "candidate": boolean,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "tags": string[],
  "token": string,
  "trashed": boolean
}

EtapaDeFluxoDeTrabalho

{
  "id": string,
  "abbreviation": string,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "name": string,
  "pedido": número,
  "tags": string[],
  "trashed": boolean
}

Índice de Análise

Agregação de Dados

"data": {
  "children": {
    "type": "analysisType"
  }
}

Documento Principal

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "service": <Service>
}

Documento Secundário

{
  "analysis": <Analysis>,
  "jobPart": <JobPart>,
  "job": <Job>,
  "netRateScheme": <NetRateScheme>,

  "priority": number,
  "data": {
    "mt": {
      "match0": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match100": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match50": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match75": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match85": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match95": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      }
    },
    "repetitions": {
      "characters": number,
      "páginas": número,
      "porcentagem": número,
      "segments": number,
      "palavras": número
    },
    "tm": {
      "match0": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match100": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match101": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match50": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match75": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match85": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      },
      "match95": {
        "characters": number,
        "páginas": número,
        "porcentagem": número,
        "segments": number,
        "palavras": número
      }
    },
    "total": {
      "characters": number,
      "páginas": número,
      "porcentagem": número,
      "segments": number,
      "palavras": número
    }
  }
}

Índice de API

Agregação de Dados

"data": {
  "children": {
    "type": "apiType"
  }
}

Documento Principal

{
  "usuário": <Usuário>
}

Documento Secundário

{
  "request": {
    "date": Date,
    "host": string,
    "ipv4": string,
    "ipv6": string,
    "location": string,
    "method": string
  },
  "response": {
    "date": Date,
    "duration": number,
    "estado": número
  },
  "api": {
    "action": string,
    "asynch": boolean,
    "type": string,
    "uri": string,
    "ver": string
  }
}

Índice de Custos

Agregação de Dados

"data": {
  "children": {
    "type": "costsType"
  }
}

Documento Principal

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "service": <Service>
}

Documento Secundário

{
  "analysis": <Analysis>,
  "job": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "quote": <Quote>,
  "workflowStep": <WorkflowStep>,
  
  "priority": number,
  "data": {
    "mt": {
      "match0": número,
      "match100": número,
      "match50": número,
      "match75": número,
      "match85": número,
      "match95": número,
    },
    "repetitions": number,
    "tm": {
      "match0": número,
      "match100": número,
      "match101": número,
      "match50": número,
      "match75": número,
      "match85": número,
      "match95": número,
    },
    "total": número
  }
}

trabalhoParte Índice

Agregação de Dados

"data": {
  "children": {
    "type": "jobPartType"
  }
}

Documento Principal

{
  "automationWidget": <AutomationWidget>,
  "project": <Project>,
  "service": <Service>
}

Documento Secundário

{
  "job": <Job>,
  "jobPart": <JobPart>

  "data": {
    "counts": {
      "chars": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "bloqueado": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completo": número,
      "notCompleted": number
    },
    "groups": {
      "total": número
    },
    "segments": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "bloqueado": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completo": número,
      "nãoCompleto": número,
      "mt": {
        "postEdited": number,
        "relevant": number,
        "notRelevant": number
      },
      "qa": {
        "verificado": número,
        "nãoVerificado": número
      }
    },
    "words": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "bloqueado": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completo": número,
      "notCompleted": number
    },
    "qa": {
      "avisos": número,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Exemplos

  • As requisições HTTP são executadas no Postman.

  • Faça login através de um perfil de PM ou Admin e obtenha um token de login usando uma API de login.

  • Requisições POST para api/v3/analytics/jobPart?token=&lt;seu_token_de_login&gt;

Número Total de Trabalhos

Consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "doc_count": 14417
    }
  }
}

Sob o campo agregações, a agregação dados respondeu com 14.417 documentos correspondentes mostrados no campo doc_count.

Número Total de Palavras de Origem

Consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      },
      "aggs": {
        "wordCount": {
          "sum": {
            "field": "data.volume.words"
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "doc_count": 14417,
      "wordCount": {
        "value": 6893067
      }
    }
  }
}

Total de Palavras de Origem Dividido pelo Idioma Alvo

Consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      },
      "aggs": {
        "byTargetLanguage": {
          "terms": {
            "field": "job.targetLanguage",
            "size": 3
          },
          "aggs": {
            "wordCount": {
              "sum": {
                "field": "data.volume.words"
              }
            }
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "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
    }
  }
}

A entidade buckets é exibida na resposta. Quando o módulo de estatísticas é solicitado a dividir os dados por alguma categoria, o resultado é representado como uma lista de buckets. Cada bucket contém uma chave que define quais dados este bucket representa (neste caso, um idioma alvo) e um valor (outras agregações) específico apenas para esta parte do conjunto de dados.

Total de Empregos Dividido pelo Estado do Projeto

Consulta

{
  "aggregations": {
    "projectStatus": {
      "terms": {
        "field": "project.status"
      },
      "aggs": {
        "data": {
          "children": {
            "type": "jobPartType"
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "doc_count": 326,
          "data": {
            "doc_count": 14318
          },
          "key": "NEW"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "COMPLETED"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "ASSIGNED"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

O módulo de Estatísticas foi instruído a dividir os dados pelo estado do projeto antes da agregação data.

Total de Empregos de Novos Projetos

Consulta

{
  "filter": {
    "term": {
      "project.status": "NEW"
    }
  },
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 326
  },
  "aggregations": {
    "data": {
      "doc_count": 14318
    }
  }
}

O campo filter é utilizado na consulta. Isso restringe os dados antes das agregações subsequentes.

Esse artigo foi útil?

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.