API Phrase TMS

Analytika agregací (TMS)

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

Datastore, který provádí agregace dotazů, je postaven na Elasticsearch (aktuálně verze 1.7.x). Elasticsearch poskytuje vyhledávání v reálném čase a schopnosti agregace, přičemž Analytics API tvoří tenkou, bezpečnostně vylepšenou vrstvu nad tímto systémem. Jazyk dotazů a agregací Elasticsearch se používá v příkladech.

Indexy

Různé typy dat žijí v různých indexech. Například, data zakázka žijí v indexu jobPart, a data náklady žijí v indexu náklady. Požadovaná data mohou být specifikována uvedením indexu v URL koncovém bodu API agregace.

Dokumenty rodič-dítě

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

Modely dat indexu

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
}

Úkol

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

Nákladové středisko

{
  "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": číslo,
  "innerId": "1",
  "languagePair": řetězec,
  "lastModified": Date,
  "localePair": string,
  "sourceLanguage": string,
  "sourceLocale": string,
  "tags": string[],
  "targetLanguage": string,
  "targetLocale": string",
  "taskId": řetězec,
  "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": číslo,
  "innerId": string,
  "lastModified": Date,
  "úroveň": číslo,
  "status": string,
  "tags": [],
  "uid": řetězec,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": řetězec,
  "deleted": boolean,
  "výchozí_: 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>,
  "měna": řetězec,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "default_": boolean,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "jednotka": ř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>",
  "měna": řetězec,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": string,
  "name": string,
  "status": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "jednotka": ř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": číslo,
  "active": boolean,
  "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": číslo,
  "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": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match100": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match50": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match75": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match85": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match95": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      }
    },
    "repetitions": {
      "characters": number,
      "pages": number,
      "percent": číslo,
      "segments": číslo,
      "words": číslo
    },
    "tm": {
      "match0": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match100": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match101": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match50": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match75": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match85": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      },
      "match95": {
        "characters": number,
        "pages": number,
        "percent": číslo,
        "segments": číslo,
        "words": číslo
      }
    },
    "total": {
      "characters": number,
      "pages": number,
      "percent": číslo,
      "segments": číslo,
      "words": číslo
    }
  }
}

API Index

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": číslo,
    "status": číslo
  },
  "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": číslo,
      "match75": number,
      "match85": number,
      "match95": číslo
    },
    "repetitions": číslo,
    "tm": {
      "match0": number,
      "match100": number,
      "match101": number,
      "match50": číslo,
      "match75": number,
      "match85": number,
      "match95": číslo
    },
    "celkem": číslo
  }
}

indexPráce

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": číslo,
      "potvrzeno": číslo,
      "nepotvrzeno": číslo,
      "zamknuto": číslo,
      "nezamknuto": číslo,
      "potvrzenoAZamknuto": číslo,
      "nepotvrzenoAZamknuto": číslo,
      "dokončeno": číslo,
      "nedokončeno": číslo,
    },
    "groups": {
      "celkem": číslo
    },
    "segments": {
      "celkem": číslo,
      "potvrzeno": číslo,
      "nepotvrzeno": číslo,
      "zamknuto": číslo,
      "nezamknuto": číslo,
      "potvrzenoAZamknuto": číslo,
      "nepotvrzenoAZamknuto": číslo,
      "dokončeno": číslo,
      "neDokončeno": číslo,
      "mt": {
        "postEdited": number,
        "relevantní": číslo,
        "nerelevantní": číslo
      },
      "qa": {
        "zkontrolováno": číslo,
        "nezkontrolováno": číslo
      }
    },
    "words": {
      "celkem": číslo,
      "potvrzeno": číslo,
      "nepotvrzeno": číslo,
      "zamknuto": číslo,
      "nezamknuto": číslo,
      "potvrzenoAZamknuto": číslo,
      "nepotvrzenoAZamknuto": číslo,
      "dokončeno": číslo,
      "nedokončeno": číslo,
    },
    "qa": {
      "varování": číslo,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Příklady

  • HTTP požadavky jsou prováděny v Postmanu.

  • Přihlaste se přes profil PM nebo správce a získejte přihlašovací token pomocí přihlašovacího API.

  • POST požadavky na api/v3/analytics/jobPart?token=&lt;váš_přihlašovací_token&gt;

Celkový počet úloh

Dotaz

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

Odpověď

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

Pod polem agregace odpověděla agregace data s 14 417 odpovídajícími dokumenty zobrazenými v poli doc_count.

Celkový počet zdrojových slov

Dotaz

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

Odpověď

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

Celkový počet zdrojových slov dělený cílovým jazykem

Dotaz

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

Odpověď

{
  "hits": {
    "total": 359
  },
  "agregace": {
    "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 modulu analytiky požádáno, aby rozdělil data podle nějaké kategorie, výsledek je reprezentován jako seznam kbelíků. Každý kbelík obsahuje klíč, který definuje, jaká data tento kbelík představuje (v tomto případě cílový jazyk) a hodnotu (další agregace) specifickou pouze pro tuto část datové sady.

Celkový počet pracovních míst dělený stavem projektu

Dotaz

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

Odpověď

{
  "hits": {
    "total": 359
  },
  "agregace": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "doc_count": 326,
          "data": {
            "doc_count": 14318
          },
          "key": "NOVÝ"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "DOKONČENO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "PŘIDĚLENO"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

Modul analytiky byl instruován, aby rozdělil data podle stavu projektu před data agregací.

Celkový počet pracovních míst z nových projektů

Dotaz

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

Odpověď

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

Pole filter se používá v dotazu. To 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.