API de Phrase TMS

Agregaciones de análisis (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 está construido sobre Elasticsearch (actualmente versión 1.7.x). Elasticsearch proporciona búsquedas en tiempo real y capacidades de agregación, con la API de análisis formando una capa delgada y mejorada en seguridad sobre ella. El lenguaje de consulta y agregación de Elasticsearch se utiliza en los ejemplos.

  • El lenguaje utilizado en el campo filtro del JSON de consulta se describe en la documentación de Elasticsearch Query DSL.

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

Índices

Diferentes tipos de datos residen en diferentes índices. Por ejemplo, los datos de trabajo residen en el índice parteTrabajo, y los datos de costos residen en el índice costos. Los datos requeridos pueden especificarse al indicar el índice en la URL del punto final de la API de agregación.

Documentos Padre-Hijo

Partes de la información sobre un trabajo residen en dos documentos diferentes en la base de datos de Elasticsearch. Estos documentos están en una relación padre-hijo. Por ejemplo, la información sobre el proyecto de un trabajo reside en el documento padre, mientras que la información sobre el trabajo en sí reside en el documento hijo. Dependiendo de la información requerida, las agregaciones están ya sea antes de la agregación de datos padre-hijo o después de ella, pero la agregación de datos en sí debe estar presente en todas las consultas.

Modelos de Datos de Índice

Datos Comunes

Análisis

{
  "id": cadena,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "idInterno": número,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
  "trashedBy": <User>,
  "tipo": cadena,
}

Asignación

{
  "nombre": cadena,
  "lingüista": <Usuario>,
  "vendor": <Vendor>
}

Portal de Solicitudes

{
  "id": cadena,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
  "idUrl": cadena,
}

Comprador

{
  "id": cadena,
  "nombre": cadena,
}

Cliente

{
  "id": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "idExterno": cadena,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
}

CentroDeCostos

{
  "id": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
}

Dominio

{
  "id": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "trashed": boolean
}

Job

{
  "id": cadena,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "extension": cadena,
  "fileName": cadena,
  "groupCount": number,
  "innerId": "1",
  "languagePair": cadena,
  "lastModified": Fecha,
  "localePair": string,
  "sourceLanguage": cadena,
  "sourceLocale": cadena,
  "etiquetas": cadena[],
  "targetLanguage": cadena,
  "targetLocale": string",
  "taskId": cadena,
  "enBasura": booleano,
  "trashedBy": <User>,
  "uid": cadena
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": number,
  "comprador": <Comprador>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDue": Date,
  "indiceFinal": número,
  "groupCount": number,
  "idInterno": cadena,
  "lastModified": Fecha,
  "nivel": número,
  "estado": cadena,
  "tags": [],
  "uid": cadena,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": cadena,
  "eliminado": booleano,
  "predeterminado": booleano,
  "incluirEtiquetas": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "tipo": cadena,
}

NetRateScheme

{
  "id": cadena,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "default_": boolean,
  "eliminado": booleano,
  "idExterno": cadena,
  "nombre": cadena,
  "etiquetas": cadena[],
}

ListaDePrecios,

{
  "id": cadena,
  "createdBy": <User>,
  "moneda": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "default_": boolean,
  "eliminado": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
  "unidad": cadena,
}

Proyecto,

{
  "id": cadena,
  "comprador": <Comprador>,
  "client": <Client>,
  "costCenter": <CostCenter>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateDue": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "domain": <Domain>,
  "idInterno": número,
  "paresDeIdioma": cadena[],
  "paresDeLocalización": cadena[],
  "mtEngine": <MtEngine>,
  "nombre": cadena,
  "nota": cadena,
  "propietario": <User>,
  "sourceLanguage": cadena,
  "sourceLocale": cadena,
  "estado": cadena,
  "subDomain": <SubDomain>,
  "etiquetas": cadena[],
  "idiomasObjetivo": cadena[],
  "localizacionesObjetivo": cadena[],
  "enBasura": booleano,
  "trashedBy": <User>,
  "uid": cadena,
  "vendor": <Vendor>
}

Cotización

{
  "id": cadena,
  "creadoPor": <User>,
  "moneda": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "idInterno": cadena,
  "nombre": cadena,
  "estado": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
  "trashedBy": <User>,
  "unidad": cadena,
}

Servicio

{
  "id": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "nombre": cadena,
  "nombrePublico": cadena,
  "etiquetas": cadena[],
  "enBasura": booleano,
  "tipo": cadena,
}

Subdominio

{
  "id": cadena,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "nombre": cadena,
  "etiquetas": cadena[],
  "trashed": boolean
}

Usuario

{
  "id": número,
  "activo": booleano,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "correoElectrónico": cadena,
  "primerNombre": cadena.
  "fullName": cadena,
  "idInterno": número,
  "jobTitle": cadena,
  "lastName": cadena,
  "locale": localización,
  "nota": cadena,
  "role": cadena,
  "etiquetas": cadena[],
  "timeZone": cadena,
  "enBasura": booleano,
  "userName": string
}

Vendor

{
  "id": cadena,
  "candidate": booleano,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "eliminado": booleano,
  "etiquetas": cadena[],
  "token": identificador único (token),
  "trashed": boolean
}

WorkflowStep

{
  "id": cadena,
  "abbreviation": cadena,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "nombre": cadena,
  "order": número,
  "etiquetas": cadena[],
  "trashed": boolean
}

ÍndiceDeAnálisis

AgregaciónDeDatos

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

DocumentoRaíz

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

Elemento secundario Documento

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

  "prioridad": número,
  "data": {
    "mt": {
      "match0": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "coincidencia100": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match50": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match75": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match85": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match95": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "repeticiones": {
      "characters": number,
      "páginas": número,
      "porcentaje": número,
      "segmentos": número,
      "palabras": número
    },
    "tm": {
      "match0": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "coincidencia100": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match101": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match50": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match75": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match85": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match95": {
        "characters": number,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "total": {
      "characters": number,
      "páginas": número,
      "porcentaje": número,
      "segmentos": número,
      "palabras": número
    }
  }
}

Índice de API

AgregaciónDeDatos

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

DocumentoRaíz

{
  "user": <User>
}

Elemento secundario Documento

{
  "request": {
    "date": Date,
    "host": cadena,
    "ipv4": cadena,
    "ipv6": cadena,
    "location": cadena,
    "method": cadena
  },
  "response": {
    "date": Date,
    "duration": número,
    "status": número
  },
  "api": {
    "action": cadena,
    "asynch": booleano,
    "tipo": cadena,
    "uri": cadena,
    "ver": cadena
  }
}

Índice de Costos

AgregaciónDeDatos

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

DocumentoRaíz

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

Elemento secundario Documento

{
  "analysis": <Analysis>,
  "job": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "quote": <Quote>,
  "workflowStep": <WorkflowStep>,
  
  "prioridad": número,
  "data": {
    "mt": {
      "coincidencia0": número,
      "coincidencia100": número,
      "coincidencia50": número,
      "coincidencia75": número,
      "coincidencia85": número,
      "coincidencia95": número
    },
    "repeticiones": número,
    "tm": {
      "coincidencia0": número,
      "coincidencia100": número,
      "coincidencia101": número,
      "coincidencia50": número,
      "coincidencia75": número,
      "coincidencia85": número,
      "coincidencia95": número
    },
    "total": número
  }
}

Índice de trabajo

Agregación de datos

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

Documento raíz

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

Documento secundario

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

  "data": {
    "cuentas": {
      "chars": {
      "total": número,
      "confirmado": número,
      "noConfirmado": número,
      "bloqueado": número,
      "noBloqueado": número,
      "confirmadoYBloqueado": número,
      "noConfirmadoYBloqueado": número,
      "completado": número,
      "noCompletado": número
    },
    "groups": {
      "total": número
    },
    "segmentos": {
      "total": número,
      "confirmado": número,
      "noConfirmado": número,
      "bloqueado": número,
      "noBloqueado": número,
      "confirmadoYBloqueado": número,
      "noConfirmadoYBloqueado": número,
      "completado": número,
      "noCompletado": número,
      "mt": {
        "postEditado": número,
        "relevante": número,
        "noRelevante": número
      },
      "qa": {
        "verificado": número,
        "noVerificado": número
      }
    },
    "words": {
      "total": número,
      "confirmado": número,
      "noConfirmado": número,
      "bloqueado": número,
      "noBloqueado": número,
      "confirmadoYBloqueado": número,
      "noConfirmadoYBloqueado": número,
      "completado": número,
      "noCompletado": número
    },
    "qa": {
      "advertencias": número,
      "ignoredWarnings": number,
      "advertenciasNoIgnoradas": número
    }
  }
}

Ejemplos

  • Las solicitudes HTTP se ejecutan en Postman.

  • Inicie sesión a través de un perfil de PM o Admin, y obtenga un identificador único de inicio de sesión utilizando una API de inicio de sesión.

  • POST requests to api/v3/analytics/jobPart?token=&lt;your_login_token&gt;

Número total de trabajos

Consulta

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

Respuesta

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

Bajo el campo agregaciones, la agregación data respondió con 14,417 documentos coincidentes mostrados en el campo doc_count.

Número total de palabras fuente

Consulta

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

Respuesta

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

Número total de palabras fuente dividido por el idioma objetivo

Consulta

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

Respuesta

{
  "hits": {
    "total": 359
  },
  "agregaciones": {
    "data": {
      "byTargetLanguage": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 10071,
        "cubos": [
          {
            "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 buckets se muestra en la respuesta. Cuando se le pide al módulo de estadísticas 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 objetivo) 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

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

Respuesta

{
  "hits": {
    "total": 359
  },
  "agregaciones": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "cubos": [
        {
          "doc_count": 326,
          "data": {
            "doc_count": 14318
          },
          "key": "NEW"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "COMPLETADO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "ASIGNADO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

Se le ha indicado al módulo de estadísticas que divida los datos por estado del proyecto antes de la agregación data.

Número Total de Trabajos de Nuevos Proyectos

Consulta

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

Respuesta

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

El campo filter se utiliza en la consulta. Esto reduce los datos antes de las siguientes 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.