工数分析
説明
工数ファクトとディメンションにクエリを行うことで分析データを取得します。
パラメータの詳細は、次のリンクを参照ください。
必要権限
なし
URL
POST /analytics/timeEntities
リクエストボディ
名前 | 型 | 必須か | 説明 |
---|---|---|---|
fields | Field[] | × | 集計対象のフィールドと集計方法を指定します。 |
groups | Group[] | × | 集計の分析軸となるディメンションとグループ化の粒度を指定します。 |
filterBy | Condition | ○ | 条件に合致した値を集計するための条件式を指定します。 |
filterScope | string | × | 条件式のフィールドに organizationId が指定された場合の み有効。それ以外は無視します。 所属組織または所属ユーザーグループでのフィルタにおいて、直接の所属か末端までのいずれかに所属するかの判定方法を指定します。 children:直属での判定 descendants:末端までのいずれかで判定 |
レスポンス
名前 | 型 | 説明 |
---|---|---|
factData | FactData[] | 集計結果 |
エラーケース
- 集計対象のフィールドが未指定
- 集計対象のフィールドが値域外
- 集計対象のフィールドに同じフィールドを複数指定した
- 集計方法が未指定
- 集計方法が値域外
- ディメンションが未指定
- ディメンションが値域外
- グループ化の粒度が未指定
- グループ化の粒度が値域外
- 条件式の演算子の種類が値域外
- 条件式の比較演算子の左オペランドが存在しない
- 条件式の比較演算子の右オペランドが存在しない
- 条件式の比較演算子のオペランドが成立していない(左右のオペランドが逆転しているなど)
- 条件式のオペランドの種類が値域外
- 条件式のフィールド名が空
- 条件式の指定したフィールドが存在しない
- 条件式の比較演算子の左オペランドと右オペランドの型が一致しない
- フィールド名、値の文字数が256文字より多い
特記事項
- コスト閲覧権限がない場合、計画コスト、実績コストは 0 で取得されます。
- 本 API は Professional エディションでのみ使用可能です。
サンプル
プロジェクト内のユーザー別の実績工数を取得する
POST /analytics/timeEntities
Request Body
{
"fields": [
{
"name": "actualTime",
"calcBy": "sum"
}
],
"groups": [
{
"name": "date",
"granularity": "month"
},
{
"name": "project",
"granularity": "project"
},
{
"name": "user",
"granularity": "user"
}
],
"filterBy": {
"type": "And",
"children": [
{
"type": "Eq",
"left": {
"name": "projectId",
"type": "field"
},
"right": {
"type": "value",
"value": "4"
}
},
{
"type": "Ge",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2018/12/01"
}
},
{
"type": "Le",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2018/12/31"
}
}
]
}
}
Response
200 OK
{
"factData":[
{
"values":{
"date":"2018/12/01 0:00:00",
"projectId":"4",
"projectName":"R商品開発",
"userId":"14",
"userName":"山本 博",
"actualTime":"5550"
}
},
{
"values":{
"date":"2018/12/01 0:00:00",
"projectId":"4",
"projectName":"R商品開発",
"userId":"21",
"userName":"岡本 直哉",
"actualTime":"1740"
}
},
{
"values":{
"date":"2018/12/01 0:00:00",
"projectId":"4",
"projectName":"R商品開発",
"userId":"23",
"userName":"植田 信貴",
"actualTime":"3840"
}
}
]
}
期間を指定して実績があるプロジェクトを取得する。
POST /analytics/timeEntities
Request Body
{
"fields": [
{
"name": "actualTime",
"calcBy": "sum"
}
],
"groups": [
{
"name": "date",
"granularity": "month"
},
{
"name": "project",
"granularity": "project"
}
],
"filterBy": {
"type": "And",
"children": [
{
"type": "Ge",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2022/10/01"
}
},
{
"type": "Le",
"left": {
"type": "field",
"name": "date"
},
"right": {
"type": "value",
"value": "2022/10/31"
}
}
]
}
}
Response
200 OK
{"factData":
[
{"values":{"date":"2022/10/01 0:00:00","projectId":"4","projectName":"R商品開発","actualTime":"360"}},
{"values":{"date":"2022/10/01 0:00:00","projectId":"15","projectName":"P機器の開発","actualTime":"180"}},
{"values":{"date":"2022/10/01 0:00:00","projectId":"27","projectName":"S機器の開発","actualTime":"120"}},
{"values":{"date":"2022/10/01 0:00:00","projectId":"29","projectName":"SI製品開発","actualTime":"60"}},
{"values":{"date":"2022/10/01 0:00:00","projectId":"32","projectName":"S1機器開発","actualTime":"300"}},
{"values":{"date":"2022/10/01 0:00:00","projectId":"39","projectName":"T製品開発","actualTime":"255"}}
]
}
型定義
Group
名前 | 型 | 必須か | 説明 |
---|---|---|---|
name | string | ○ | ディメンション表の名前 |
granularity | string | ○ | グループ化の粒度 |
Field
名前 | 型 | 必須か | 説明 |
---|---|---|---|
name | string | ○ | フィールドの名前 |
calcBy | string | ○ | フィールドの集計方法 |
FactData
名前 | 型 | 必須か | 説明 |
---|---|---|---|
values | <string, string> | ○ | 集計結果のフィールドと値 |