API de Phrase TMS

Analytics Aggregations (TMS)

El contenido se traduce automáticamente del inglés por Phrase Language AI.

El almacén de datos que ejecuta consultas de agregación se basa en Elasticsearch (actualmente versión 1.7.x). Elasticsearch proporciona búsquedas y capacidades de agregación en tiempo real con la API estadísticas formando una capa delgada y mejorada de seguridad sobre ella. En los ejemplos se utiliza idioma elástico de consulta y agregación de búsqueda.

  • El idioma utilizado en el campo filtrar de la consulta JSON se describe en la documentación DSL de consulta Elástica.

  • El idioma utilizado en el campo agregaciones de la consulta JSON se describe completamente en la documentación de Elasticsearch Aggregations.

Índices

Diferentes tipos de datos viven en diferentes índices. Por ejemplo, los datos de trabajo viven en el índice jobPart y los datos de costos viven en el índice de costos. Los datos requeridos se pueden especificar especificando el índice en la URL del endpoint de la API agregada.

Documentos padre-hijo

Partes de la información sobre un trabajo viven en dos documentos diferentes en la BD Elasticsearch. Estos documentos guardan una relación entre elemento raíz y elemento secundario. Por ejemplo, la información sobre el proyecto de un trabajo vive en el documento elemento raíz, mientras que la información sobre el trabajo en sí vive en el documento elemento secundario. Dependiendo de la información requerida, las agregaciones están antes de la agregación de datos elemento secundarioecundario o después de ella, pero la agregación de datos en sí debe estar presente en todas las consultas.

Modelos de índice de datos

Datos comunes

análisis

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

Asignación

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

Portal del remitente

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

Comprador

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

Cliente

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

CostCenter

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

Dominio

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

Job

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "deleted": boolean,
  "extensión": cadena,
  "fileName": string,
  "groupCount": número,
  "innerId": "1",
  "languagePair": string,
  "lastModified": Fecha,
  "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": Fecha,
  "dateDue": Fecha,
  "endIndex": number,
  "groupCount": número,
  "innerId": string,
  "lastModified": Fecha,
  "nivel": número,
  "estado": cadena,
  "tags": [],
  "uid": string,
  "workflowStep": <WorkflowStep>
}

MtEngine

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

NetRateScheme

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

PriceList

{
  "id": string,
  "createdBy": <User>,
  "moneda": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "default_": boolean,
  "deleted": boolean,
  "name": cadena,
  "tags": string[],
  "trashed": boolean,
  "unit": string
}

Proyecto

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

Cotización

{
  "id": string,
  "createdBy: <usuario>,
  "moneda": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "deleted": boolean,
  "innerId": string,
  "name": cadena,
  "estado": cadena,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "unit": string
}

servicio

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

SubDomain

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

usuario

{
  "ID": número,
  "activo": booleano,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "deleted": boolean,
  "correo electrónico": cadena,
  "firstName": string,
  "fullName": string,
  "innerId": number,
  "jobTitle": string,
  "lastName": string,
  "locale": string,
  "nota": cadena,
  "rol": cadena,
  "tags": string[],
  "timeZone": string,
  "trashed": boolean,
  "userName": string
}

Proveedor

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

WorkflowStep

{
  "id": string,
  "abbreviation": string,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "name": cadena,
  "orden": número,
  "tags": string[],
  "trashed": booleano
}

Índice de análisis

Agregación de datos

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

Documento elemento raíz

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

Documento hijo

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

  "prioridad": número,
  "data": {
    "mt": {
      "match0": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match100": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match50": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match75": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match85": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match95": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "repeticiones": {
      "caracteres": número,
      "páginas": número,
      "por ciento": número,
      "segmentos": número,
      "palabras": número
    },
    "tm": {
      "match0": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match100": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match101": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match50": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match75": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match85": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      },
      "match95": {
        "caracteres": número,
        "páginas": número,
        "por ciento": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "total": {
      "caracteres": número,
      "páginas": número,
      "por ciento": número,
      "segmentos": número,
      "palabras": número
    }
  }
}

Índice API

Agregación de datos

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

Documento elemento raíz

{
  "user": <User>
}

Documento hijo

{
  "request": {
    "date": Fecha,
    "host": cadena,
    "ipv4": string,
    "ipv6": string,
    "location": string,
    "método": cadena
  },
  "response": {
    "date": Fecha,
    "duración": número,
    "estado": número
  },
  "api": {
    "action": string,
    "asynch": boolean,
    "type": string,
    "uri": string,
    "ver": string
  }
}

Índice de Costos

Agregación de datos

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

Documento elemento raíz

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

Documento hijo

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

jobPart Index

Agregación de datos

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

Documento elemento raíz

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

Documento hijo

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

  "data": {
    "counts": {
      "chars": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "locked": number,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completado": número,
      "notCompleted": number
    },
    "groups": {
      "total": número
    },
    "segments": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "locked": number,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completado": número,
      "notCompleted": number,
      "mt": {
        "postEdited": number,
        "relevante": número,
        "notRelevant": number
      },
      "qa": {
        "checked": número,
        "notChecked": número
      }
    },
    "words": {
      "total": número,
      "confirmado": número,
      "notConfirmed": number,
      "locked": number,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      "completado": número,
      "notCompleted": number
    },
    "qa": {
      "avisos": número,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Ejemplos

  • Las solicitudes HTTP se ejecutan en Postman.

  • Inicia sesión a través de un perfil PM o admin y obtén un identificador único (token) mediante una API de inicio de sesión.

  • PUBLICAR solicitudes en la API / v3 / Analytics / jobPart?token=<your_login_token>

Número Total de Trabajos

Consulta

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

Respuesta

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

En el campo Agregaciones, la agregación de datos respondió con 14.417 documentos coincidentes que se muestran en el campo doc_count.

Número total de palabras fuente

Consulta

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

Respuesta

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

Número total de palabras fuente divididas por idioma meta

Consulta

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

Respuesta

{
  "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
    }
  }
}

La entidad de cubos se muestra en la respuesta. Cuando se solicita al módulo Analytics que divida los datos por alguna categoría, el resultado se representa como una lista de buckets. Cada bucket contiene una clave que define qué datos representa este bucket (en este caso un idioma meta) y un valor (otras agregaciones) específico solo para esta parte del conjunto de datos.

Número total de trabajos divididos por estado del proyecto

Consulta

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

Respuesta

{
  "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": "NUEVO"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "TERMINADO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "ASIGNADO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

Se ha pedido al módulo de estadísticas que divida los datos por estado de proyecto antes de agregar los datos.

Número Total de Trabajos de Nuevos Proyectos

Consulta

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

Respuesta

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

El campo filtrar se utiliza en la consulta. Esto reduce los datos antes de seguir las agregaciones.

¿Fue útil este artículo?

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.