API Phrase TMS

Analytics Aggregations (TMS)

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

Datastore, který provádí agregační dotazy, je postaven 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ž Analytics API tvoří tenkou, bezpečnostně vylepšenou vrstvu nad ním. V příkladech se používá jazyk dotazů a agregací Elasticsearch.

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 určením indexu v URL koncového bodu agregačního API.

Dokumenty hlavní-vedlejší

Části informací o zakázce žijí 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 v hlavním dokumentu, zatímco informace o samotné zakázce jsou ve vedlejším dokumentu. V závislosti na požadovaných informacích jsou agregace buď před agregací dat hlavní-vedlejší, nebo po ní, ale samotná agregace dat by měla být přítomna ve všech dotazech.

Modely dat indexu

Běžná data

Analýza

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "innerId": number,
  "name": řetězec,
  "tags": řetězec[],
  "smazáno": boolean,
  "trashedBy": <User>,
  "type": řetězec
}

Úkol

{
  "name": řetězec,
  "linguist": <překladatel>,
  "vendor": <dodavatel>
}

Portál zadavatele

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "smazáno": boolean,
  "název": řetězec,
  "tagy": řetězec[],
  "smazáno": boolean,
  "urlId": řetězec
}

Zákazník

{
  "id": řetězec,
  "název": řetězec
}

Klient

{
  "id": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "externíId": řetězec,
  "název": řetězec,
  "tagy": řetězec[],
  "trashed": boolean,
}

CostCenter

{
  "id": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "deleted": boolean,
  "název": řetězec,
  "tagy": řetězec[],
  "trashed": boolean,
}

Doména

{
  "id": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "název": řetězec,
  "tagy": řetězec[],
  "smazáno": boolean
}

Zakázka

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "extension": řetězec,
  "fileName": řetězec,
  "groupCount": číslo,
  "innerId": "1",
  "languagePair": řetězec,
  "lastModified": Datum,
  "localePair": řetězec,
  "sourceLanguage": řetězec,
  "sourceLocale": řetězec,
  "tagy": řetězec[],
  "targetLanguage": řetězec,
  "targetLocale": řetězec,
  "taskId": řetězec,
  "trashed": boolean,
  "trashedBy": <uživatel>,
  "uid": řetězec
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": číslo,
  "buyer": <Zákazník>,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDue": Datum,
  "endIndex": číslo,
  "groupCount": číslo,
  "innerId": řetězec,
  "lastModified": Datum,
  "level": číslo,
  "status": stav,
  "tags": [],
  "uid": řetězec,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": řetězec,
  "deleted": boolean,
  "default_: boolean,
  "includeTags": boolean,
  "název": řetězec,
  "tagy": řetězec[],
  "type": řetězec,
}

NetRateScheme

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "default_": boolean,
  "deleted": boolean,
  "externíId": řetězec,
  "název": řetězec,
  "tagy": řetězec[],
}

PriceList

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "currency": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "default_": boolean,
  "deleted": boolean,
  "název": řetězec,
  "tagy": řetězec[],
  "trashed": boolean,
  "unit": řetězec
}

Projekt

{
  "id": řetězec,
  "buyer": <Zákazník>,
  "client": <Klient>,
  "costCenter": <CostCenter>,
  "createdBy": <uživatel>,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateDue": Datum,
  "dateTrashed": Datum,
  "deleted": boolean,
  "domain": <Doména>,
  "innerId": number,
  "languagePairs": řetězec[],
  "localePairs": řetězec[],
  "mtEngine": <MtEngine>,
  "název": řetězec,
  "poznámka": řetězec,
  "owner": <vlastník>,
  "sourceLanguage": řetězec,
  "sourceLocale": řetězec,
  "status": stav,
  "subDomain": <SubDomain>,
  "tags": řetězec[],
  "targetLanguages": řetězec[],
  "targetLocales": řetězec[],
  "trashed": boolean,
  "trashedBy": <uživatel>,
  "uid": řetězec,
  "vendor": <dodavatel>
}

Cenová nabídka

{
  "id": řetězec,
  "createdBy": <uživatel>,
  "currency": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "deleted": boolean,
  "innerId": řetězec,
  "název": řetězec,
  "status": stav,
  "tagy": řetězce[],
  "smazáno": boolean,
  "trashedBy": <User>,
  "unit": řetězec
}

služba

{
  "ID": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "smazáno": boolean,
  "název": řetězec,
  "publicName": řetězec,
  "tagy": řetězce[],
  "smazáno": boolean,
  "typ": řetězec
}

SubDomain

{
  "ID": řetězec,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "smazáno": boolean,
  "název": řetězec,
  "tagy": řetězce[],
  "smazáno": boolean
}

uživatel

{
  "id": číslo,
  "aktivní": boolean,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "e-mail": řetězec,
  "jméno": řetězec,
  "celéJméno": řetězec,
  "innerId": number,
  "pracovníPozice": řetězec,
  "příjmení": řetězec,
  "kód jazyka": řetězec,
  "poznámka": řetězec,
  "role": řetězec,
  "tagy": řetězce[],
  "časovéPásmo": řetězec,
  "odstraněno": boolean,
  "uživatelskéJméno": řetězec
}

dodavatel

{
  "id": řetězec,
  "candidate": boolean,
  "dateCreated": Datum,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "odstraněno": boolean,
  "tagy": řetězec[],
  "token": řetězec,
  "odstraněno": boolean
}

WorkflowStep

{
  "id": řetězec,
  "abbreviation": řetězec,
  "dateDeleted": Datum,
  "dateTrashed": Datum,
  "název": řetězec,
  "order": číslo,
  "tags": řetězec[],
  "smazáno": boolean
}

Index analýzy

Agregace dat

"data": {
  "children": {
    "type": "typ analýzy"
  }
}

Hlavní dokument

{
  "automationWidget": <AutomationWidget>,
  "projekt": <Project>,
  "služba": <Service>
}

Vedlejší dokument

{
  "analysis": <Analysis>,
  "jobPart": <JobPart>,
  "zakázk|a": <Job>,
  "netRateScheme": <NetRateScheme>,

  "priority": číslo,
  "data": {
    "mt": {
      "match0": {
        "characters": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match100": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match50": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match75": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match85": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match95": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      }
    },
    "opakování": {
      "znaky": číslo,
      "pages": číslo,
      "percent": číslo,
      "segmenty": číslo,
      "slova": číslo
    },
    "tm": {
      "match0": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match100": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match101": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match50": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match75": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match85": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      },
      "match95": {
        "znaky": číslo,
        "pages": číslo,
        "percent": číslo,
        "segmenty": číslo,
        "slova": číslo
      }
    },
    "total": {
      "znaky": číslo,
      "pages": číslo,
      "percent": číslo,
      "segmenty": číslo,
      "slova": číslo
    }
  }
}

API Index

Agregace dat

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

Hlavní dokument

{
  "user": <User>
}

Vedlejší dokument

{
  "request": {
    "date": Datum,
    "host": řetězec,
    "ipv4": řetězec,
    "ipv6": řetězec,
    "umístění": řetězec,
    "metoda": řetězec
  },
  "response": {
    "date": Datum,
    "duration": number,
    "stav": číslo
  },
  "API": {
    "action": řetězec,
    "asynch": boolean,
    "type": řetězec,
    "uri": řetězec,
    "ver": řetězec
  }
}

Costs Index

Agregace dat

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

Hlavní dokument

{
  "automationWidget": <AutomationWidget>,
  "projekt": <Project>,
  "služba": <Service>
}

Vedlejší dokument

{
  "analysis": <Analysis>,
  "zakázk|a": <Job>,
  "jobPart": <JobPart>,
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "cenová nabídka": <Quote>,
  "pracovní postup": <WorkflowStep>,
  
  "priority": číslo,
  "data": {
    "mt": {
      "match0": číslo,
      "match100": číslo,
      "match50": číslo,
      "match75": číslo,
      "match85": číslo,
      "match95": číslo
    },
    "opakování": číslo,
    "tm": {
      "match0": číslo,
      "match100": číslo,
      "match101": číslo,
      "match50": číslo,
      "match75": číslo,
      "match85": číslo,
      "match95": číslo
    },
    "celkem": číslo
  }
}

index části zakázky

Agregace dat

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

Hlavní dokument

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

Vedlejší dokument

{
  "zakázk|a": <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
    },
    "skupiny": {
      "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": číslo,
        "relevantní": číslo,
        "nerelevantní": číslo
      },
      "qa": {
        "zkontrolováno": číslo,
        "nezkontrolováno": číslo
      }
    },
    "slova": {
      "celkem": číslo,
      "potvrzeno": číslo,
      "nepotvrzeno": číslo,
      "zamknuto": číslo,
      "nezamknuto": číslo,
      "potvrzenoAZamknuto": číslo,
      "nepotvrzenoAZamknuto": číslo,
      "dokončeno": číslo,
      "nedokončeno": číslo
    },
    "qa": {
      "varování": číslo,
      "ignorovanáVarování": číslo,
      "neignorovanáVarování": číslo
    }
  }
}

Příklady

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

  • Přihlaste se přes PM nebo profil 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 zakázek

Dotaz

{
  "agregace": {
    "data": {
      "vedlejší": {
        "type": "jobPartType"
      }
    }
  }
}

Odpověď

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

Pod polem aggregations odpověděl agregát data s 14 417 odpovídajícími dokumenty zobrazenými v poli doc_count.

Celkový počet zdrojových slov

Dotaz

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

Odpověď

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

Celkový počet slov ve zdrojovém jazyce 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
  },
  "agregations": {
    "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 Analytics požádán, aby rozdělil data podle nějaké kategorie, výsledek je zobrazen jako seznam bucketů. Každý bucket obsahuje klíč, který určuje, 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 zakázek rozdělený podle stavu 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": "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"
        }
      ]
    }
  }
}

Modul Analytics byl požádán, aby rozdělil data podle stavu projektu před data agregací.

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

Dotaz

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

Odpověď

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

Pole filtr 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.