API de Phrase TMS

Analytics Aggregations (TMS)

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

El datastore 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 Analytics formando una capa delgada y mejorada en seguridad sobre él. El lenguaje de consulta y agregación de Elasticsearch se utiliza en los ejemplos.

  • El idioma usado en el campo filter 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 se pueden especificar al indicar el índice en la URL del endpoint de la API de agregación.

Documentos elemento raíz-elemento secundario

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 elemento raíz-elemento secundario. Por ejemplo, la información sobre el proyecto de un trabajo está en el documento elemento raíz, mientras que la información sobre el trabajo en sí está en el documento elemento secundario. Dependiendo de la información requerida, las agregaciones están antes de la agregación de datos elemento raíz-elemento secundario 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,
  "creadoPor": <usuario>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "idInterno": número,
  "nombre": cadena,
  "etiquetas": cadena[],
  "enBasura": boolean,
  "trashedBy": <User>,
  "tipo": cadena
}

Asignación

{
  "nombre": cadena,
  "lingüista": <usuario>,
  "proveedor": <proveedor>
}

Portal de solicitudes

{
  "id": cadena,
  "createdBy": <usuario>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "nombre": cadena,
  "tags": cadena[],
  "trashed": boolean,
  "idUrl": cadena
}

Comprador

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

Cliente

{
  "id": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "externalId": cadena,
  "nombre": cadena,
  "tags": cadena[],
  "enBasura": boolean,
}

CostCenter

{
  "id": string,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "nombre": cadena,
  "tags": cadena[],
  "enBasura": boolean,
}

domain

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

Job

{
  "ID": cadena,
  "createdBy": <usuario>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "extensión": cadena,
  "nombreArchivo": cadena,
  "groupCount": número,
  "innerId": "1",
  "languagePair": cadena,
  "lastModified": Fecha,
  "localePair": cadena,
  "idiomaFuente": cadena,
  "sourceLocale": cadena,
  "etiquetas": cadena[],
  "idiomaMeta": cadena,
  "targetLocale": cadena,
  "taskId": cadena,
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": cadena
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": número,
  "buyer": <buyer>,
  "createdBy": <User>,
  "dateCreated": Fecha,
  "dateDue": Fecha,
  "endIndex": número,
  "groupCount": número,
  "innerId": cadena,
  "lastModified": Fecha,
  "level": número,
  "status": cadena,
  "tags": [],
  "uid": cadena,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": cadena,
  "eliminado": boolean,
  "default_: booleano,
  "includeTags": booleano,
  "nombre": cadena,
  "tags": cadena[],
  "type": cadena,
}

NetRateScheme

{
  "id": cadena,
  "createdBy": <usuario>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "default_": booleano,
  "eliminado": boolean,
  "externalId": cadena,
  "nombre": cadena,
  "tags": cadena[],
}

PriceList

{
  "id": cadena,
  "createdBy": <usuario>,
  "currency": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "default_": booleano,
  "eliminado": boolean,
  "nombre": cadena,
  "tags": cadena[],
  "enBasura": boolean,
  "unit": cadena
}

Proyecto

{
  "id": ID,
  "buyer": <Comprador>,
  "client": <Cliente>,
  "centroDeCosto": <CostCenter>,
  "creadoPor": <usuario>,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateDue": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "dominio": <Domain>,
  "idInterno": número,
  "paresDeIdioma": cadena[],
  "paresDeLocales": cadena[],
  "mtEngine": <MtEngine>,
  "nombre": cadena,
  "nota": cadena,
  "propietario": <User>,
  "fuente": cadena,
  "localización": cadena,
  "estado": cadena,
  "subDomain": <SubDomain>,
  "etiquetas": cadena[],
  "targetLanguages": string[],
  "targetLocales": string[],
  "enBasura": boolean,
  "trashedBy": <User>,
  "uid": cadena,
  "proveedor": <Vendor>
}

Cotización

{
  "id": ID,
  "createdBy": <User>,
  "currency": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "innerId": cadena,
  "nombre": cadena,
  "status": cadena,
  "tags": etiqueta[],
  "trashed": boolean,
  "trashedBy": <User>,
  "unit": cadena
}

Servicio

{
  "id": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "nombre": cadena,
  "nombrePublico": cadena,
  "tags": cadena[],
  "trashed": boolean,
  "tipo": cadena
}

Subdominio

{
  "id": cadena,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "nombre": cadena,
  "tags": cadena[],
  "trashed": boolean
}

Usuario

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

proveedor

{
  "id": string,
  "candidate": boolean,
  "dateCreated": Fecha,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "eliminado": boolean,
  "tags": string[],
  "token": identificador único (token),
  "trashed": boolean
}

WorkflowStep

{
  "id": cadena,
  "abbreviation": cadena,
  "dateDeleted": Fecha,
  "dateTrashed": Fecha,
  "nombre": cadena,
  "order": número,
  "tags": string[],
  "eliminado": booleano
}

Índice de análisis

agregación de datos

"data": {
  "children": {
    "type": "tipo de análisis"
  }
}

Documento principal

{
  "automationWidget": <AutomationWidget>,
  "proyecto": <Proyecto>,
  "service": <Service>
}

Documento secundario

{
  "análisis": <Análisis>,
  "jobPart": <JobPart>,
  "job": <Job>,
  "netRateScheme": <NetRateScheme>,

  "prioridad": número,
  "data": {
    "mt": {
      "match0": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match100": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "match50": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "coincidencia75": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "coincidencia85": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "coincidencia95": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "repetición": {
      "carácter": número,
      "páginas": número,
      "porcentaje": número,
      "segmento": número,
      "palabras": número
    },
    "tm": {
      "match0": {
        "carácter": número,
        "páginas": número,
        "porcentaje": número,
        "segmento": número,
        "palabras": número
      },
      "match100": {
        "carácter": número,
        "páginas": número,
        "porcentaje": número,
        "segmento": número,
        "palabras": número
      },
      "match101": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "concordancia50": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "concordancia75": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "concordancia85": {
        "caracteres": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      },
      "concordancia95": {
        "carácter": número,
        "páginas": número,
        "porcentaje": número,
        "segmentos": número,
        "palabras": número
      }
    },
    "total": {
      "carácter": número,
      "páginas": número,
      "porcentaje": número,
      "segmentos": número,
      "palabras": número
    }
  }
}

Índice de API

Agregación de datos

"data": {
  "elementos secundarios": {
    "tipo": "apiType"
  }
}

Documento elemento raíz

{
  "user": <User>
}

Documento elemento secundario

{
  "solicitud": {
    "fecha": Fecha,
    "host": cadena,
    "ipv4": cadena,
    "ipv6": cadena,
    "ubicación": cadena,
    "método": cadena
  },
  "respuesta": {
    "fecha": Fecha,
    "duración": número,
    "estado": número
  },
  "api": {
    "acción": cadena,
    "asynch": boolean,
    "type": cadena,
    "uri": cadena,
    "ver": cadena
  }
}

Índice de Costos

Agregación de Datos

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

Documento principal

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

Documento Hijo

{
  "analysis": <Analysis>,
  "job": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "cotización": <Quote>,
  "flujoDeTrabajoPaso": <WorkflowStep>,
  
  "priority": número,
  "data": {
    "mt": {
      "match0": número,
      "match100": número,
      "match50": número,
      "match75": número,
      "match85": número,
      "match95": número
    },
    "repetición": número,
    "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
  }
}

Índice de jobPart

Agregación de Datos

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

Documento principal

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

Documento secundario

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

  "data": {
    "counts": {
      "chars": {
      "total": número,
      "confirmed": número,
      "noConfirmado": número,
      "bloqueado": número,
      "noBloqueado": número,
      "confirmedAndLocked": número,
      "noConfirmadoYBloqueado": número,
      "completado": número,
      "noCompletado": número,
    },
    "grupos": {
      "total": número
    },
    "segmentos": {
      "total": número,
      "confirmed": número,
      "noConfirmado": número,
      "bloqueado": número,
      "noBloqueado": número,
      "confirmedAndLocked": 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,
      }
    },
    "palabras": {
      "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": {
      "avisos": número,
      "avisosIgnorados": número,
      "noAvisosIgnorados": número
    }
  }
}

Ejemplos

  • Las solicitudes HTTP se ejecutan en Postman.

  • Inicia sesión con un perfil de PM o admin, y consigue un identificador único (token) de inicio de sesión usando una API de inicio de sesión.

  • Solicitudes POST a api/v3/analytics/jobPart?token=&lt;tu_identificador_único_(token)_de_inicio_de_sesión&gt;

Número Total de Trabajos

Consulta

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

Respuesta

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

En el campo aggregations, la agregación data respondió con 14,417 documentos que coinciden, mostrados en el campo doc_count.

Número total de palabras de fuente

Consulta

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

Respuesta

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

Número total de palabras de la fuente dividido por el idioma meta

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
  },
  "aggregations": {
    "data": {
      "byTargetLanguage": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 10071,
        "cubos": [
          {
            "doc_count": 1835,
            "wordCount": {
              "valor": 702721
            },
            "clave": "cs"
          },
          {
            "doc_count": 1491,
            "wordCount": {
              "valor": 2602529
            },
            "clave": "de"
          },
          {
            "doc_count": 1020,
            "wordCount": {
              "valor": 92676
            },
            "clave": "fi"
          }
        ]
      },
      "doc_count": 14417
    }
  }
}

La entidad buckets se muestra en la respuesta. Cuando le pides al módulo de estadísticas que divida los datos por alguna categoría, el resultado se muestra 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

{
  "agregaciones": {
    "projectStatus": {
      "términos": {
        "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,
      "buckets": [
        {
          "doc_count": 326,
          "data": {
            "doc_count": 14318
          },
          "key": "NEW"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "COMPLETAR"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "ASIGNAR"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

El módulo de estadísticas se configuró para dividir los datos por estado del proyecto antes de la data agregación.

Número total de trabajos de nuevos proyectos

Consulta

{
  "filter": {
    "término": {
      "project.status": "NEW"
    }
  },
  "agregaciones": {
    "data": {
      "children": {
        "type": "jobPartType"
      }
    }
  }
}

Respuesta

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