API Phrase TMS

Aggregazioni di Analytics (TMS)

Contenuti tradotti automaticamente dall'inglese con Phrase Language AI.

Il datastore che esegue le query di aggregazione è costruito su Elasticsearch (attualmente versione 1.7.x). Elasticsearch fornisce ricerche in tempo reale e capacità di aggregazione con l'API di Analytics che forma uno strato sottile, migliorato in sicurezza, sopra di esso. Il linguaggio di query e aggregazione di Elasticsearch è utilizzato negli esempi.

  • Il linguaggio utilizzato nel campo filtrare del JSON della query è descritto nella documentazione Elasticsearch Query DSL.

  • Il linguaggio utilizzato nel campo aggregazioni del JSON della query è completamente descritto nella documentazione Elasticsearch Aggregations.

Indici

Tipi diversi di dati vivono in indici diversi. Ad esempio, i dati lavoro vivono nell'indice jobPart, e i dati costi vivono nell'indice costi. I dati richiesti possono essere specificati specificando l'indice nell'URL dell'endpoint API di aggregazione.

Documenti Genitore-Figlio

Parti delle informazioni su un lavoro vivono in due documenti diversi nel DB di Elasticsearch. Questi documenti sono in una relazione genitore-figlio. Ad esempio, le informazioni sul progetto di un lavoro vivono nel documento genitore, mentre le informazioni sul lavoro stesso vivono nel documento figlio. A seconda delle informazioni richieste, le aggregazioni sono o prima dell'aggregazione genitore-figlio dei dati o dopo di essa, ma l'aggregazione dei dati stessa dovrebbe essere presente in tutte le query.

Modelli di Dati degli Indici

Dati Comuni

Analisi

{
  "id": stringa,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "innerId": number,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano,
  "trashedBy": <User>,
  "tipo": stringa,
}

Assegnazione

{
  "nome": stringa,
  "linguista": <Utente>,
  "vendor": <Vendor>
}

Portale Richieste

{
  "id": stringa,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano,
  "urlId": string
}

Committente

{
  "id": stringa,
  "nome": stringa,
}

Cliente

{
  "id": stringa,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "externalId": string,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano,
}

CostCenter

{
  "id": stringa,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano,
}

Dominio

{
  "id": stringa,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano
}

Job

{
  "id": stringa,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "extension": string,
  "fileName": string,
  "conteggioGruppo": numero,
  "innerId": "1",
  "coppiaLingua": stringa,
  "ultimaModifica": Data,
  "coppiaLocale": stringa,
  "linguaSorgente": stringa,
  "localeSorgente": stringa,
  "tags": string[],
  "targetLanguage": string,
  "targetLocale": string",
  "taskId": string,
  "cestinato": booleano,
  "trashedBy": <User>,
  "uid": stringa
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "indiceInizio": numero,
  "buyer": <Buyer>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDue": Date,
  "indiceFine": numero,
  "conteggioGruppo": numero,
  "innerId": string,
  "ultimaModifica": Data,
  "livello": numero,
  "stato": stringa,
  "tags": [],
  "uid": stringa,
  "workflowStep": <WorkflowStep>
}

MtEngine

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

NetRateScheme

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

ListinoPrezzi

{
  "id": stringa,
  "createdBy": <User>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "default_": boolean,
  "deleted": boolean,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano,
  "unit": string
}

Progetto

{
  "id": stringa,
  "buyer": <Buyer>,
  "client": <Client>,
  "costCenter": <CostCenter>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateDue": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "domain": <Domain>,
  "innerId": number,
  "languagePairs": string[],
  "localePairs": string[],
  "mtEngine": <MtEngine>,
  "nome": stringa,
  "note": string,
  "owner": <utente>,
  "linguaSorgente": stringa,
  "localeSorgente": stringa,
  "stato": stringa,
  "subDomain": <SubDomain>,
  "tags": string[],
  "targetLanguages": string[],
  "targetLocales": string[],
  "cestinato": booleano,
  "trashedBy": <User>,
  "uid": stringa,
  "vendor": <Vendor>
}

Preventivo

{
  "id": stringa,
  "createdBy": <utente>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "innerId": string,
  "nome": stringa,
  "stato": stringa,
  "tags": string[],
  "cestinato": booleano,
  "trashedBy": <User>,
  "unit": string
}

Servizio

{
  "id": stringa,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "nome": stringa,
  "publicName": string,
  "tags": string[],
  "cestinato": booleano,
  "tipo": stringa,
}

sottodominio

{
  "id": stringa,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "nome": stringa,
  "tags": string[],
  "cestinato": booleano
}

utente

{
  "id": numero,
  "attivo": booleano,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "email": stringa,
  "firstName": string,
  "fullName": string,
  "innerId": number,
  "jobTitle": string,
  "lastName": string,
  "impostazioniLocali": stringa,
  "note": string,
  "ruolo": stringa,
  "tags": string[],
  "timeZone": string,
  "cestinato": booleano,
  "userName": string
}

Vendor

{
  "id": stringa,
  "candidato": booleano,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dataCestino": Data,
  "deleted": boolean,
  "tags": string[],
  "token": stringa,
  "cestinato": booleano
}

WorkflowStep

{
  "id": stringa,
  "abbreviazione": stringa,
  "dateDeleted": Date,
  "dataCestino": Data,
  "nome": stringa,
  "ordine": numero,
  "tags": string[],
  "cestinato": booleano
}

IndiceAnalisi

AggregazioneDati

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

Documento principale

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

Documento subordinato

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

  "priorità": numero,
  "data": {
    "mt": {
      "match0": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match100": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match50": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match75": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "corrispondenza85": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match95": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      }
    },
    "repetitions": {
      "caratteri": numero,
      "pagine": numero,
      "percentuale": numero,
      "segmenti": numero,
      "parole": numero
    },
    "tm": {
      "match0": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match100": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match101": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match50": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match75": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "corrispondenza85": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      },
      "match95": {
        "caratteri": numero,
        "pagine": numero,
        "percentuale": numero,
        "segmenti": numero,
        "parole": numero
      }
    },
    "total": {
      "caratteri": numero,
      "pagine": numero,
      "percentuale": numero,
      "segmenti": numero,
      "parole": numero
    }
  }
}

Indice API

AggregazioneDati

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

Documento principale

{
  "user": <utente>
}

Documento subordinato

{
  "request": {
    "date": Date,
    "host": stringa,
    "ipv4": stringa,
    "ipv6": string,
    "location": stringa,
    "method": stringa
  },
  "response": {
    "date": Date,
    "duration": numero,
    "status": numero
  },
  "api": {
    "action": stringa,
    "asynch": booleano,
    "type": string,
    "uri": stringa,
    "ver": stringa
  }
}

Indice dei Costi

AggregazioneDati

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

Documento principale

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

Documento subordinato

{
  "analysis": <Analysis>,
  "job": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "quote": <Quote>,
  "workflowStep": <WorkflowStep>,
  
  "priorità": numero,
  "data": {
    "mt": {
      "corrispondenza0": numero,
      "corrispondenza100": numero,
      "corrispondenza50": numero,
      "corrispondenza75": numero,
      "corrispondenza85": numero,
      "corrispondenza95": numero
    },
    "ripetizioni": numero,
    "tm": {
      "corrispondenza0": numero,
      "corrispondenza100": numero,
      "corrispondenza101": numero,
      "corrispondenza50": numero,
      "corrispondenza75": numero,
      "corrispondenza85": numero,
      "corrispondenza95": numero
    },
    "totale": numero
  }
}

indiceJobPart

Aggregazione Dati

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

Documento Principale

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

Documento Sottordinato

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

  "data": {
    "counts": {
      "chars": {
      "totale": numero,
      "confermato": numero,
      "nonConfermato": numero,
      "bloccato": numero,
      "nonBloccato": numero,
      "confermatoEBloccato": numero,
      "notConfirmedAndLocked": number,
      "completato": numero,
      "nonCompletato": numero
    },
    "groups": {
      "totale": numero
    },
    "segmenti": {
      "totale": numero,
      "confermato": numero,
      "nonConfermato": numero,
      "bloccato": numero,
      "nonBloccato": numero,
      "confermatoEBloccato": numero,
      "notConfirmedAndLocked": number,
      "completato": numero,
      "nonCompletato": numero,
      "mt": {
        "postModificato": numero,
        "rilevante": numero,
        "nonRilevante": numero
      },
      "qa": {
        "controllato": numero,
        "nonControllato": numero
      }
    },
    "words": {
      "totale": numero,
      "confermato": numero,
      "nonConfermato": numero,
      "bloccato": numero,
      "nonBloccato": numero,
      "confermatoEBloccato": numero,
      "notConfirmedAndLocked": number,
      "completato": numero,
      "nonCompletato": numero
    },
    "qa": {
      "avvisi": numero,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Esempi

  • Le richieste HTTP vengono eseguite in Postman.

  • Accedi tramite un profilo PM o Admin e ottieni un token di accesso utilizzando un'API di accesso.

  • Richieste POST a api/v3/analisi/jobPart?token=&lt;tuo_token_di_accesso&gt;

Numero Totale di Lavori

Query

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

Risposta

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

Sotto il campo aggregazioni, l'aggregazione dati ha risposto con 14.417 documenti corrispondenti mostrati nel campo doc_count.

Numero totale di parole sorgente

Query

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

Risposta

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

Numero totale di parole sorgente diviso per lingua target

Query

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

Risposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "byTargetLanguage": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 10071,
        "secchi": [
          {
            "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
    }
  }
}

L'entità secchi è mostrata nella risposta. Quando al modulo di analisi viene chiesto di dividere i dati per qualche categoria, il risultato è rappresentato come un elenco di secchi. Ogni secchio contiene una chiave che definisce quali dati rappresenta questo secchio (in questo caso una lingua target) e un valore (altre aggregazioni) specifico solo per questa parte del set di dati.

Numero totale di lavori diviso per stato del progetto

Query

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

Risposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "secchi": [
        {
          "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"
        }
      ]
    }
  }
}

Il modulo di analisi è stato informato di dividere i dati per stato del progetto prima dell'aggregazione data.

Numero totale di lavori da nuovi progetti

Query

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

Risposta

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

Il campo filtrare viene utilizzato nella query. Questo restringe i dati prima delle aggregazioni successive.

Questo articolo ti è stato utile?

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.