組織の実績工数の取得
工数分析 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
{
"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"
}
}
]
}
}
次のようなレスポンスが返ります。
{
"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のファクトとディメンション」