API Phrase TMS

Analytika agregací (TMS)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

Datové úložiště, ve kterém běží agregační dotazy, je postaveno na Elasticsearch (aktuálně verze 1.7.X). Elasticsearch poskytuje vyhledávání v reálném čase a agregační schopnosti, přičemž API pro analytiku tvoří tenkou, zabezpečenou vrstvu nad ním. V příkladech je použit jazyk pro dotazy a agregace Elasticsearch.

Indexy

Různé typy dat jsou uloženy v různých indexech. Například data zakázka jsou uložena v indexu jobPart a data náklady jsou uložena v indexu costs. Požadovaná data lze specifikovat určením indexu v URL koncového bodu API pro dotazy.

Hlavní-vedlejší dokumenty

Části informací o zakázce jsou uloženy ve dvou různých dokumentech v databázi Elasticsearch. Tyto dokumenty jsou ve vztahu hlavní-vedlejší. Například informace o projektu zakázky jsou uloženy v hlavním dokumentu, zatímco informace o samotné zakázce jsou uloženy ve vedlejším dokumentu. V závislosti na požadovaných informacích jsou agregace buď před agregací hlavní-vedlejší, nebo po ní, ale samotná agregace dat by měla být přítomna ve všech dotazech.

Datové modely indexů

Společná data

Analýza

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

Přiřazení

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

portál zadavatele

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

Zákazník

{
  "id": řetězec,
  "name": řetězec
}

Klient

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

CostCenter"

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

Doména

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

Job

{
  "id": řetězec,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "extension": string,
  "fileName": string,
  "groupCount": number,
  "innerId": "1",
  "languagePair": řetězec,
  "lastModified": Date,
  "localePair": string,
  "sourceLanguage": string,
  "sourceLocale": string,
  "tags": string[],
  "targetLanguage": string,
  "targetLocale": string",
  "taskId": ID,
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": řetězec
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": number,
  "buyer": <Buyer>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDue": Date,
  "endIndex": number,
  "groupCount": number,
  "innerId": string,
  "lastModified": Date,
  "level": number,
  "status": string,
  "tags": [],
  "uid": řetězec,
  "workflowStep": <WorkflowStep>
}

MtEngine

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

NetRateScheme

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

Ceník

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

Projekt

{
  "id": řetězec,
  "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": řetězec,
  "vendor": <Vendor>
}

cenová nabídka

{
  "id": řetězec,
  "createdBy: <uživatel>,
  "currency": řetězec,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": string,
  "name": string,
  "status": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "unit": řetězec
}

Služba

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

SubDomain

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

uživatel

{
  "id": ID,
  "active": aktivní,
  "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": řetězec
}

Dodavatel

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

WorkflowStep

{
  "id": řetězec,
  "abbreviation": string,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "name": string,
  "order": objednávka,
  "tags": string[],
  "trashed": boolean
}

Index analýzy

Agregace dat

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

Hlavní dokument

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

Vedlejší dokument

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

  "priority": number,
  "data": {
    "MT": {
      "match0": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match100": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match50": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match75": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match85": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match95": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      }
    },
    "repetitions": {
      "characters": number,
      "pages": number,
      "percent": number,
      "segments": number,
      "words": number
    },
    "tm": {
      "match0": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match100": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match101": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match50": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match75": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match85": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      },
      "match95": {
        "characters": number,
        "pages": number,
        "percent": number,
        "segments": number,
        "words": number
      }
    },
    "total": {
      "characters": number,
      "pages": number,
      "percent": number,
      "segments": number,
      "words": number
    }
  }
}

Index API

Agregace dat

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

Hlavní dokument

{
  "user": <User>
}

Vedlejší dokument

{
  "request": {
    "date": Date,
    "host": řetězec,
    "ipv4": string,
    "ipv6": string,
    "location": string,
    "method": řetězec
  },
  "response": {
    "date": Date,
    "duration": number,
    "status": number
  },
  "api": {
    "action": string,
    "asynch": boolean,
    "type": string,
    "uri": string,
    "ver": řetězec
  }
}

Index nákladů

Agregace dat

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

Hlavní dokument

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

Vedlejší dokument

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

Index části úlohy

Agregace dat

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

Hlavní dokument

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

Vedlejší dokument

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

  "data": {
    "počty": {
      "chars": {
      "celkem": number,
      "potvrzeno": number,
      "nepotvrzeno": number,
      "zamknuto": number,
      "nezamknuto": number,
      "potvrzenoAzamknuto": number,
      "nepotvrzenoAzamknuto": number,
      "dokončeno": number,
      "nedokončeno": number
    },
    "groups": {
      "celkem": number
    },
    "segments": {
      "celkem": number,
      "potvrzeno": number,
      "nepotvrzeno": number,
      "zamknuto": number,
      "nezamknuto": number,
      "potvrzenoAzamknuto": number,
      "nepotvrzenoAzamknuto": number,
      "dokončeno": number,
      "notCompleted": number,
      "MT": {
        "postEdited": number,
        "relevant": number,
        "notRelevant": number
      },
      "QA": {
        "checked": number,
        "notChecked": number
      }
    },
    "words": {
      "celkem": number,
      "potvrzeno": number,
      "nepotvrzeno": number,
      "zamknuto": number,
      "nezamknuto": number,
      "potvrzenoAzamknuto": number,
      "nepotvrzenoAzamknuto": number,
      "dokončeno": number,
      "nedokončeno": number
    },
    "QA": {
      "warnings": number,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Příklady

  • HTTP požadavky se spouštějí v Postmanu.

  • Přihlaste se prostřednictvím profilu PM nebo správce a získejte přihlašovací token pomocí přihlašovacího API.

  • POST požadavky na api/v3/analytika/jobPart?token=&lt;your_login_token&gt;

Celkový počet úloh

dotaz

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

Odpověď

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

V poli aggregations odpověděla agregace data 14 417 odpovídajícími dokumenty zobrazenými v poli doc_count.

Celkový počet slov zdroj

dotaz

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

Odpověď

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

Celkový počet slov zdroj rozdělený podle cílový jazyk

dotaz

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

Odpověď

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

Entita buckets je zobrazena v odpovědi. Když je modul analytika požádán o rozdělit data podle určité kategorie, výsledek je reprezentován jako seznam buckets. Každý bucket obsahuje klíč, který definuje, jaká data tento bucket reprezentuje (v tomto případě cílový jazyk) a hodnotu (další agregace) specifickou pouze pro tuto část datové sady.

Celkový počet úloh rozdělený podle stav projektů

dotaz

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

Odpověď

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

Modul analytika byl instruován, aby data před agregací data rozdělil podle stav projekt.

Celkový počet zakázek z nových projektů

dotaz

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

Odpověď

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

Pole filtrovat se používá v dotaz. Toto zúží data před následujícími agregacemi.

Byl pro vás tento článek užitečný?

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.