メインコンテンツまでスキップ

組織の実績工数の取得

工数分析 API を使用することで、指定した組織に所属するユーザーが入力した実績工数を集計できます。

POST /analytics/timeEntities

集計対象の指定

リクエストボディの fields パラメータに集計対象のフィールドとフィールドの集計方法を指定します。 実績工数を集計する場合、集計対象のフィールドの名前 name には actualTime、フィールドの集計方法 calcBy には sum を指定します。

  "fields": [
{
"name": "actualTime",
"calcBy": "sum"
}
],

分析軸の指定

リクエストボディの groups パラメータに分析軸となるディメンションとグループ化の粒度を指定します。 組織ごとの実績工数を集計する場合、ディメンションの名前 name には user、グループ化の粒度 granularity には organization を指定します。

  "groups": [
{
"name": "user",
"granularity": "organization"
}
],

ここではさらに実績工数を月単位で集計するために、groups パラメータにディメンションの名前 date、グループ化の粒度 month の指定を追加します。

  "groups": [
{
"name": "user",
"granularity": "organization"
},
{
"name": "date",
"granularity": "month"
}
],
注記

日単位での集計の場合は date、週単位での集計の場合は week を指定します。

条件式の指定

リクエストボディの filterBy パラメータに集計の条件を指定します。 条件は、対象となるフィールドの名前、演算子、値を用いて true または false に評価される式で表します。

<フィールド名> <演算子> <値>

Web API では条件式を JSON オブジェクトで表現するため、上記の条件式は Web API のリクエストでは以下のようになります。

{
"type": <演算子>,
"left": {
"type": "field",
"name": <フィールド名>
},
"right": {
"type": "value",
"value": <値>
}
}

複数の条件式を論理演算子(AND や OR)を用いて組み合わせることもできます。

条件式1 AND 条件式2

上記の条件式の JSON オブジェクトでの表現は次のようになります。

{
"type": "and",
"children": [
条件式1,
条件式2
]
}

ここでは、実績工数を集計する期間を指定します。 これは date フィールドに対して ge 演算子と le 演算子を使用した次のような条件式で表せます。

{
"type": "and",
"children": [
{
"type": "ge",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2022-04-01"
}
},
{
"type": "le",
"left": {
"type": "filed",
"name": "date"
},
"right": {
"type": "value",
"value": "2022-09-30"
}
}
]
}
注記
  • ge は greater than or equal to の略で「大きいか等しい(以上)」を表し、左辺(left)に指定したフィールドの値が右辺(right)に指定した値以上の場合に true となります。
  • le は less than or equal to の略で「小さいか等しい(以下)」を表し、左辺に指定したフィールドの値が右辺に指定した値以下の場合に true となります。

さらに集計対象の組織を指定する場合は、次のような条件式を追加します。

{
"type": "in",
"left": {
"type": "field",
"name": "organizationId"
},
"right": {
"type": "value",
"value": "72"
}
}
注記

in 演算子は、左辺に指定したフィールドが、右辺に指定したいずれかの値に等しい場合に true となります。 値はカンマ区切りで複数指定できます。

注記

in 演算子を organizationId フィールドとともに使用した場合は特別な意味となり、指定したいずれかの ID の組織またはその配下の組織に一致する場合に true となります。 この例の場合、ID:72 の組織または ID:72 の組織の配下にあるいずれかの組織に所属するユーザーの実績工数が集計対象となります。

Web API を実行する

リクエストは次のようになります。

POST /analytics/timeEntities
Request Body
{
"fields": [
{
"name": "actualTime",
"calcBy": "sum"
}
],
"groups": [
{
"name": "user",
"granularity": "organization"
},
{
"name": "date",
"granularity": "month"
}
],
"filterBy": {
"type": "and",
"children": [
{
"type": "ge",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2022-04-01"
}
},
{
"type": "le",
"left": {
"type": "filed",
"name": "date"
},
"right": {
"type": "value",
"value": "2022-09-30"
}
},
{
"type": "in",
"left": {
"type": "field",
"name": "organizationId"
},
"right": {
"type": "value",
"value": "72"
}
}
]
}
}

次のようなレスポンスが返ります。

Request Body
{
"factData": [
{
"values": {
"date": "2022/04/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "31200"
}
},
{
"values": {
"date": "2022/04/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "25260"
}
},
{
"values": {
"date": "2022/05/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "52800"
}
},
{
"values": {
"date": "2022/05/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "41790"
}
},
{
"values": {
"date": "2022/06/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "52800"
}
},
{
"values": {
"date": "2022/06/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "46260"
}
},
{
"values": {
"date": "2022/07/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "49530"
}
},
{
"values": {
"date": "2022/07/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "43410"
}
},
{
"values": {
"date": "2022/08/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "55230"
}
},
{
"values": {
"date": "2022/08/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "44640"
}
},
{
"values": {
"date": "2022/09/01 0:00:00",
"organizationId": "6",
"organizationName": "開発1課",
"actualTime": "58380"
}
},
{
"values": {
"date": "2022/09/01 0:00:00",
"organizationId": "7",
"organizationName": "開発2課",
"actualTime": "48030"
}
}
]
}
注記

レスポンスに含まれるフィールドはリクエストの groups パラメータの指定によって異なります。
詳細は次のリンクを参照ください。:分析APIのファクトとディメンション