fix: azure,bamboo,github,jira distinct primary key (#6850) (#6851)
* fix: azure,bamboo,github,jira distinct primary key
diff --git a/grafana/dashboards/AzureDevOps.json b/grafana/dashboards/AzureDevOps.json
index 207b301..6f120d8 100644
--- a/grafana/dashboards/AzureDevOps.json
+++ b/grafana/dashboards/AzureDevOps.json
@@ -18,7 +18,7 @@
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
- "id": 46,
+ "id": 7,
"links": [],
"liveNow": false,
"panels": [
@@ -43,7 +43,7 @@
"content": "- Use Cases: This dashboard shows the basic Git and Code Review metrics from Azure DevOps.\n- Data Source Required: Azure DevOps",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -130,16 +130,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "select\n\tcount(*) as pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\t\n\n",
+ "rawSql": "select\n\tcount(distinct pr.id) as pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\t\n\n",
"refId": "A",
"select": [
[
@@ -151,6 +152,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -253,7 +271,7 @@
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "with _prs as(\n SELECT\n DATE_ADD(date(created_date), INTERVAL -DAY(date(created_date))+1 DAY) as time,\n count(*) as pr_count\n FROM pull_requests\n WHERE\n base_repo_id in ($repo_id)\n and $__timeFilter(created_date)\n and created_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n group by 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n pr_count as \"Pull Request Count\"\nFROM _prs\nORDER BY time\n",
+ "rawSql": "with _prs as(\n SELECT\n DATE_ADD(date(created_date), INTERVAL -DAY(date(created_date))+1 DAY) as time,\n count(distinct id) as pr_count\n FROM pull_requests\n WHERE\n base_repo_id in ($repo_id)\n and $__timeFilter(created_date)\n and created_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n group by 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n pr_count as \"Pull Request Count\"\nFROM _prs\nORDER BY time\n",
"refId": "A",
"select": [
[
@@ -379,12 +397,13 @@
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n author_name,\n\tcount(*) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'MERGED'\ngroup by 1\norder by 2 desc\nlimit 20\n",
+ "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n author_name,\n\tcount(distinct pr.id) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'MERGED'\ngroup by 1\norder by 2 desc\nlimit 20\n",
"refId": "A",
"select": [
[
@@ -396,6 +415,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -483,7 +519,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -674,16 +710,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n\tcount(*) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'CLOSED'",
+ "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n\tcount(distinct pr.id) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'CLOSED'",
"refId": "A",
"select": [
[
@@ -695,6 +732,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -869,7 +923,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1039,7 +1093,7 @@
"content": "<br/>\n\nThis dashboard is created based on this [data schema](https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema). Want to add more metrics? Please follow the [guide](https://devlake.apache.org/docs/Configuration/Dashboards/GrafanaUserGuide).",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -1105,7 +1159,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1114,7 +1168,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n count(*)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n count(distinct id)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -1201,7 +1255,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1210,7 +1264,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then 1 else null end)/count(*)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then id else null end)/count(distinct id)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -1391,7 +1445,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n result,\n count(*) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
+ "rawSql": "SELECT\n result,\n count(distinct id) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
"refId": "A",
"select": [
[
@@ -1476,7 +1530,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1616,7 +1670,7 @@
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(*) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Pipeline runs Count\"\nFROM _builds\nORDER BY time\n",
+ "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(distinct id) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%azure%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Pipeline runs Count\"\nFROM _builds\nORDER BY time\n",
"refId": "A",
"select": [
[
@@ -1766,7 +1820,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%azure%\"\r\n and cicd_scope_id in ($repo_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Pipeline runs Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
+ "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result,\r\n id\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%azure%\"\r\n and cicd_scope_id in ($repo_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n GROUP BY \r\n time, result, id\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Pipeline runs Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
"refId": "A",
"select": [
[
@@ -2002,6 +2056,6 @@
"timezone": "",
"title": "Azure DevOps",
"uid": "ba7e3a95-80ed-4067-a54b-2a82758eb3dd",
- "version": 4,
+ "version": 3,
"weekStart": ""
}
\ No newline at end of file
diff --git a/grafana/dashboards/Bamboo.json b/grafana/dashboards/Bamboo.json
index 3235540..024c365 100644
--- a/grafana/dashboards/Bamboo.json
+++ b/grafana/dashboards/Bamboo.json
@@ -18,7 +18,7 @@
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
- "id": 5,
+ "id": 12,
"links": [],
"liveNow": false,
"panels": [
@@ -43,7 +43,7 @@
"content": "- Use Cases: This dashboard shows the basic CI/CD metrics from Bamboo, such as [Build Count](https://devlake.apache.org/docs/Metrics/BuildCount), [Build Duration](https://devlake.apache.org/docs/Metrics/BuildDuration) and [Build Success Rate](https://devlake.apache.org/docs/Metrics/BuildSuccessRate). A build in Bamboo is an execution of a Bamboo Plan.\n- Data Source Required: Bamboo",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -97,7 +97,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -106,7 +106,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n count(*)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n count(distinct id)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -193,7 +193,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -202,7 +202,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then 1 else null end)/count(*)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then id else null end)/count(distinct id)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -383,7 +383,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n result,\n count(*) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
+ "rawSql": "SELECT\n result,\n count(distinct id) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
"refId": "A",
"select": [
[
@@ -468,7 +468,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -608,7 +608,7 @@
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(*) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Build Count\"\nFROM _builds\nORDER BY time\n",
+ "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(distinct id) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%bamboo%\"\n and cicd_scope_id in ($plan_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Build Count\"\nFROM _builds\nORDER BY time\n",
"refId": "A",
"select": [
[
@@ -753,11 +753,12 @@
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%bamboo%\"\r\n and cicd_scope_id in ($plan_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Build Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
+ "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result,\r\n id\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%bamboo%\"\r\n and cicd_scope_id in ($plan_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n GROUP BY\r\n time, result, id\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Build Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
"refId": "A",
"select": [
[
@@ -769,6 +770,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ca_analysis",
"timeColumn": "create_time",
"timeColumnType": "timestamp",
@@ -1077,7 +1095,7 @@
"content": "<br/>\n\nThis dashboard is created based on this [data schema](https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema). Want to add more metrics? Please follow the [guide](https://devlake.apache.org/docs/Configuration/Dashboards/GrafanaUserGuide).",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -1134,6 +1152,6 @@
"timezone": "",
"title": "Bamboo",
"uid": "a90e58d9-7acc-4858-aa77-f606d11a7d4a",
- "version": 3,
+ "version": 2,
"weekStart": ""
}
\ No newline at end of file
diff --git a/grafana/dashboards/GitHub.json b/grafana/dashboards/GitHub.json
index 8f36372..99a9e71 100644
--- a/grafana/dashboards/GitHub.json
+++ b/grafana/dashboards/GitHub.json
@@ -18,7 +18,7 @@
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
- "id": 27,
+ "id": 14,
"links": [],
"liveNow": false,
"panels": [
@@ -43,7 +43,7 @@
"content": "- Use Cases: This dashboard shows the basic Git and Code Review metrics from GitHub.\n- Data Source Required: GitHub",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -130,7 +130,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -354,7 +354,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -565,7 +565,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -748,8 +748,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -866,8 +865,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -990,7 +988,7 @@
"showHeader": true,
"sortBy": []
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1065,8 +1063,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1099,16 +1096,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "select\n\tcount(*) as pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\t\n\n",
+ "rawSql": "select\n\tcount(distinct pr.id) as pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\t\n\n",
"refId": "A",
"select": [
[
@@ -1120,6 +1118,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -1169,8 +1184,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1216,12 +1230,13 @@
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "with _prs as(\n SELECT\n DATE_ADD(date(created_date), INTERVAL -DAY(date(created_date))+1 DAY) as time,\n count(*) as pr_count\n FROM pull_requests\n WHERE\n base_repo_id in ($repo_id)\n and $__timeFilter(created_date)\n and created_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n group by 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n pr_count as \"Pull Request Count\"\nFROM _prs\nORDER BY time\n",
+ "rawSql": "with _prs as(\n SELECT\n DATE_ADD(date(created_date), INTERVAL -DAY(date(created_date))+1 DAY) as time,\n count(distinct id) as pr_count\n FROM pull_requests\n WHERE\n base_repo_id in ($repo_id)\n and $__timeFilter(created_date)\n and created_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n group by 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n pr_count as \"Pull Request Count\"\nFROM _prs\nORDER BY time\n",
"refId": "A",
"select": [
[
@@ -1233,6 +1248,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -1282,8 +1314,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1330,12 +1361,13 @@
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n author_name,\n\tcount(*) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n and pr.status = 'MERGED'\ngroup by 1\norder by 2 desc\nlimit 20\n",
+ "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n author_name,\n\tcount(distinct pr.id) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n and pr.status = 'MERGED'\ngroup by 1\norder by 2 desc\nlimit 20\n",
"refId": "A",
"select": [
[
@@ -1347,6 +1379,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -1401,8 +1450,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1434,7 +1482,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1513,8 +1561,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
}
]
}
@@ -1591,8 +1638,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1625,16 +1671,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n\tcount(*) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'CLOSED'",
+ "rawSql": "-- The PR/MR statuses are standardized to DevLake's statuses 'OPEN', 'MERGED' and 'CLOSED'. You can check out the original status from the field `original_status`\nselect\n\tcount(distinct pr.id) as merged_pull_request_count\nfrom \n\tpull_requests pr\nwhere\n $__timeFilter(created_date)\n\tand base_repo_id in ($repo_id)\n\tand pr.status = 'CLOSED'",
"refId": "A",
"select": [
[
@@ -1646,6 +1693,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ae_projects",
"timeColumn": "ae_create_time",
"timeColumnType": "timestamp",
@@ -1707,8 +1771,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
}
]
},
@@ -1784,8 +1847,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1818,7 +1880,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -1888,8 +1950,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -1980,8 +2041,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -2012,7 +2072,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -2082,8 +2142,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -2184,8 +2243,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
}
]
}
@@ -2214,7 +2272,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -2223,7 +2281,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n count(*)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n count(distinct id)\nFROM \n cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -2279,8 +2337,7 @@
"mode": "absolute",
"steps": [
{
- "color": "blue",
- "value": null
+ "color": "blue"
}
]
},
@@ -2310,7 +2367,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -2319,7 +2376,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then 1 else null end)/count(*)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
+ "rawSql": "SELECT\n 1.0 * count(case when result = 'SUCCESS' then id else null end)/count(distinct id)\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)",
"refId": "A",
"select": [
[
@@ -2500,7 +2557,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "SELECT\n result,\n count(*) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
+ "rawSql": "SELECT\n result,\n count(distinct id) as build_count\nFROM cicd_pipelines\nWHERE\n $__timeFilter(finished_date)\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\nGROUP BY 1\nORDER BY 2 desc",
"refId": "A",
"select": [
[
@@ -2556,8 +2613,7 @@
"mode": "absolute",
"steps": [
{
- "color": "light-orange",
- "value": null
+ "color": "light-orange"
}
]
},
@@ -2585,7 +2641,7 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": "mysql",
@@ -2672,8 +2728,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -2725,7 +2780,7 @@
"hide": false,
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(*) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Workflow Runs Count\"\nFROM _builds\nORDER BY time\n",
+ "rawSql": "WITH _builds as(\n SELECT\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\n count(distinct id) as build_count\n FROM cicd_pipelines\n WHERE\n $__timeFilter(finished_date)\n and result = 'SUCCESS'\n and id like \"%github%\"\n and cicd_scope_id in ($repo_id)\n -- the following condition will remove the month with incomplete data\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\n GROUP BY 1\n)\n\nSELECT \n date_format(time,'%M %Y') as month,\n build_count as \"Workflow Runs Count\"\nFROM _builds\nORDER BY time\n",
"refId": "A",
"select": [
[
@@ -2803,8 +2858,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -2875,7 +2929,7 @@
"group": [],
"metricColumn": "none",
"rawQuery": true,
- "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%github%\"\r\n and cicd_scope_id in ($repo_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Workflow Runs Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
+ "rawSql": "WITH _build_success_rate as(\r\n SELECT\r\n DATE_ADD(date(finished_date), INTERVAL -DAYOFMONTH(date(finished_date))+1 DAY) as time,\r\n result,\r\n id\r\n FROM\r\n cicd_pipelines\r\n WHERE\r\n $__timeFilter(finished_date)\r\n and id like \"%github%\"\r\n and cicd_scope_id in ($repo_id)\r\n -- the following condition will remove the month with incomplete data\r\n and finished_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH)\r\n GROUP BY \r\n time, result, id\r\n)\r\n\r\nSELECT \r\n date_format(time,'%M %Y') as month,\r\n 1.0 * sum(case when result = 'SUCCESS' then 1 else 0 end)/ count(*) as \"Workflow Runs Success Rate\"\r\nFROM _build_success_rate\r\nGROUP BY time\r\nORDER BY time",
"refId": "A",
"select": [
[
@@ -2962,8 +3016,7 @@
"mode": "absolute",
"steps": [
{
- "color": "green",
- "value": null
+ "color": "green"
},
{
"color": "red",
@@ -3114,8 +3167,7 @@
"mode": "absolute",
"steps": [
{
- "color": "purple",
- "value": null
+ "color": "purple"
},
{
"color": "red",
@@ -3248,7 +3300,7 @@
"content": "<br/>\n\nThis dashboard is created based on this [data schema](https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema). Want to add more metrics? Please follow the [guide](https://devlake.apache.org/docs/Configuration/Dashboards/GrafanaUserGuide).",
"mode": "markdown"
},
- "pluginVersion": "9.5.2",
+ "pluginVersion": "9.5.15",
"targets": [
{
"datasource": {
@@ -3306,6 +3358,6 @@
"timezone": "",
"title": "GitHub",
"uid": "KXWvOFQnz",
- "version": 3,
+ "version": 9,
"weekStart": ""
}
\ No newline at end of file
diff --git a/grafana/dashboards/Jira.json b/grafana/dashboards/Jira.json
index 66bf76e..508756e 100644
--- a/grafana/dashboards/Jira.json
+++ b/grafana/dashboards/Jira.json
@@ -3,7 +3,10 @@
"list": [
{
"builtIn": 1,
- "datasource": "-- Grafana --",
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
@@ -13,10 +16,9 @@
]
},
"editable": true,
- "gnetId": null,
+ "fiscalYearStartMonth": 0,
"graphTooltip": 0,
- "id": 14,
- "iteration": 1682063040196,
+ "id": 26,
"links": [
{
"asDropdown": false,
@@ -45,9 +47,13 @@
"url": ""
}
],
+ "liveNow": false,
"panels": [
{
- "datasource": null,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"gridPos": {
"h": 3,
"w": 13,
@@ -56,12 +62,21 @@
},
"id": 128,
"options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
"content": "- Use Cases: This dashboard shows the basic project management metrics from Jira.\n- Data Source Required: Jira",
"mode": "markdown"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"queryType": "randomWalk",
"refId": "A"
}
@@ -70,7 +85,10 @@
"type": "text"
},
{
- "datasource": null,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"gridPos": {
"h": 1,
"w": 24,
@@ -78,6 +96,15 @@
"y": 3
},
"id": 126,
+ "targets": [
+ {
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "refId": "A"
+ }
+ ],
"title": "1. Issue Throughput",
"type": "row"
},
@@ -124,15 +151,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"metricColumn": "none",
"queryType": "randomWalk",
"rawQuery": true,
- "rawSql": "select \r\n count(*) as value\r\nfrom issues i\r\n join board_issues bi on i.id = bi.issue_id\r\nwhere \r\n i.type in ($type)\r\n and $__timeFilter(i.created_date)\r\n and bi.board_id in ($board_id)",
+ "rawSql": "select \r\n count(distinct i.id) as value\r\nfrom issues i\r\n join board_issues bi on i.id = bi.issue_id\r\nwhere \r\n i.type in ($type)\r\n and $__timeFilter(i.created_date)\r\n and bi.board_id in ($board_id)",
"refId": "A",
"select": [
[
@@ -144,6 +173,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"timeColumn": "time",
"where": [
{
@@ -201,15 +247,17 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"metricColumn": "none",
"queryType": "randomWalk",
"rawQuery": true,
- "rawSql": "select \r\n count(*) as value\r\nfrom issues i\r\n join board_issues bi on i.id = bi.issue_id\r\nwhere \r\n i.type in ($type)\r\n and i.status = 'DONE'\r\n and $__timeFilter(i.created_date)\r\n and bi.board_id in ($board_id)",
+ "rawSql": "select \r\n count(distinct i.id) as value\r\nfrom issues i\r\n join board_issues bi on i.id = bi.issue_id\r\nwhere \r\n i.type in ($type)\r\n and i.status = 'DONE'\r\n and $__timeFilter(i.created_date)\r\n and bi.board_id in ($board_id)",
"refId": "A",
"select": [
[
@@ -221,6 +269,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"timeColumn": "time",
"where": [
{
@@ -243,6 +308,8 @@
"mode": "palette-classic"
},
"custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 1,
@@ -302,15 +369,18 @@
"sum"
],
"displayMode": "list",
- "placement": "bottom"
+ "placement": "bottom",
+ "showLegend": true
},
"tooltip": {
- "mode": "multi"
+ "mode": "multi",
+ "sort": "none"
}
},
"pluginVersion": "8.0.6",
"targets": [
{
+ "datasource": "mysql",
"format": "time_series",
"group": [],
"metricColumn": "none",
@@ -338,8 +408,6 @@
]
}
],
- "timeFrom": null,
- "timeShift": null,
"title": "Issue Status Distribution over Month [Issues Created in Selected Time Range]",
"type": "timeseries"
},
@@ -391,9 +459,10 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": "mysql",
"format": "time_series",
"group": [],
"metricColumn": "none",
@@ -425,7 +494,6 @@
"type": "stat"
},
{
- "cacheTimeout": null,
"datasource": "mysql",
"description": "Issue Delivery Rate = count(Delivered Issues)/count(Issues)",
"fieldConfig": {
@@ -434,6 +502,8 @@
"mode": "palette-classic"
},
"custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
"axisLabel": "Delivery Rate(%)",
"axisPlacement": "auto",
"barAlignment": 0,
@@ -491,15 +561,18 @@
"legend": {
"calcs": [],
"displayMode": "list",
- "placement": "bottom"
+ "placement": "bottom",
+ "showLegend": true
},
"tooltip": {
- "mode": "single"
+ "mode": "single",
+ "sort": "none"
}
},
"pluginVersion": "8.0.6",
"targets": [
{
+ "datasource": "mysql",
"format": "time_series",
"group": [],
"metricColumn": "none",
@@ -527,14 +600,15 @@
]
}
],
- "timeFrom": null,
- "timeShift": null,
"title": "Issue Delivery Rate over Time [Issues Created in Selected Time Range]",
"type": "timeseries"
},
{
"collapsed": false,
- "datasource": null,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"gridPos": {
"h": 1,
"w": 24,
@@ -543,6 +617,15 @@
},
"id": 110,
"panels": [],
+ "targets": [
+ {
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "refId": "A"
+ }
+ ],
"title": "2. Issue Lead Time",
"type": "row"
},
@@ -591,9 +674,11 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": "mysql",
+ "editorMode": "code",
"format": "table",
"group": [],
"metricColumn": "none",
@@ -610,6 +695,23 @@
}
]
],
+ "sql": {
+ "columns": [
+ {
+ "parameters": [],
+ "type": "function"
+ }
+ ],
+ "groupBy": [
+ {
+ "property": {
+ "type": "string"
+ },
+ "type": "groupBy"
+ }
+ ],
+ "limit": 50
+ },
"table": "ca_analysis",
"timeColumn": "create_time",
"timeColumnType": "timestamp",
@@ -622,8 +724,6 @@
]
}
],
- "timeFrom": null,
- "timeShift": null,
"title": "Mean Issue Lead Time in Days [Issues Resolved in Select Time Range]",
"type": "stat"
},
@@ -671,9 +771,10 @@
"text": {},
"textMode": "auto"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": "mysql",
"format": "table",
"group": [],
"metricColumn": "none",
@@ -702,8 +803,6 @@
]
}
],
- "timeFrom": null,
- "timeShift": null,
"title": "80% Issues' Lead Time are less than # days [Issues Resolved in Select Time Range]",
"type": "stat"
},
@@ -716,6 +815,8 @@
"mode": "palette-classic"
},
"custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
"axisLabel": "Lead Time(days)",
"axisPlacement": "auto",
"axisSoftMin": 0,
@@ -726,7 +827,13 @@
"tooltip": false,
"viz": false
},
- "lineWidth": 1
+ "lineWidth": 1,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
},
"mappings": [],
"thresholds": {
@@ -755,25 +862,33 @@
"id": 17,
"interval": "",
"options": {
+ "barRadius": 0,
"barWidth": 0.5,
+ "fullHighlight": false,
"groupWidth": 0.7,
"legend": {
"calcs": [],
"displayMode": "list",
- "placement": "bottom"
+ "placement": "bottom",
+ "showLegend": true
},
"orientation": "auto",
"showValue": "auto",
+ "stacking": "none",
"text": {
"valueSize": 12
},
"tooltip": {
- "mode": "single"
- }
+ "mode": "single",
+ "sort": "none"
+ },
+ "xTickLabelRotation": 0,
+ "xTickLabelSpacing": 0
},
"pluginVersion": "8.0.6",
"targets": [
{
+ "datasource": "mysql",
"format": "table",
"group": [],
"metricColumn": "none",
@@ -802,8 +917,6 @@
]
}
],
- "timeFrom": null,
- "timeShift": null,
"title": "Mean Issue Lead Time [Issues Resolved in Select Time Range]",
"type": "barchart"
},
@@ -842,7 +955,7 @@
"alertThreshold": false
},
"percentage": false,
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"pointradius": 0.5,
"points": false,
"renderer": "flot",
@@ -852,6 +965,7 @@
"steppedLine": false,
"targets": [
{
+ "datasource": "mysql",
"format": "time_series",
"group": [],
"metricColumn": "none",
@@ -891,9 +1005,7 @@
"yaxis": "right"
}
],
- "timeFrom": null,
"timeRegions": [],
- "timeShift": null,
"title": "Cumulative Distribution of Requirement Lead Time [Issues Resolved in Select Time Range]",
"tooltip": {
"shared": false,
@@ -903,9 +1015,7 @@
"transformations": [],
"type": "graph",
"xaxis": {
- "buckets": null,
"mode": "series",
- "name": null,
"show": true,
"values": [
"current"
@@ -918,26 +1028,24 @@
"label": "Percent Rank (%)",
"logBase": 1,
"max": "1.2",
- "min": null,
"show": true
},
{
"$$hashKey": "object:77",
"format": "short",
- "label": null,
"logBase": 1,
- "max": null,
- "min": null,
"show": false
}
],
"yaxis": {
- "align": false,
- "alignLevel": null
+ "align": false
}
},
{
- "datasource": null,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"gridPos": {
"h": 2,
"w": 24,
@@ -946,12 +1054,21 @@
},
"id": 130,
"options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
"content": "<br/>\n\nThis dashboard is created based on this [data schema](https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema). Want to add more metrics? Please follow the [guide](https://devlake.apache.org/docs/Configuration/Dashboards/GrafanaUserGuide).",
"mode": "markdown"
},
- "pluginVersion": "8.0.6",
+ "pluginVersion": "9.5.15",
"targets": [
{
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"queryType": "randomWalk",
"refId": "A"
}
@@ -960,7 +1077,7 @@
}
],
"refresh": "",
- "schemaVersion": 30,
+ "schemaVersion": 38,
"style": "dark",
"tags": [
"Data Source Dashboard"
@@ -968,7 +1085,6 @@
"templating": {
"list": [
{
- "allValue": null,
"current": {
"selected": true,
"text": [
@@ -980,8 +1096,6 @@
},
"datasource": "mysql",
"definition": "select concat(name, '--', id) from boards where id like 'jira%'",
- "description": null,
- "error": null,
"hide": 0,
"includeAll": true,
"label": "Choose Board",
@@ -996,7 +1110,6 @@
"type": "query"
},
{
- "allValue": null,
"current": {
"selected": false,
"text": "All",
@@ -1004,8 +1117,6 @@
},
"datasource": "mysql",
"definition": "select distinct type from issues",
- "description": null,
- "error": null,
"hide": 0,
"includeAll": true,
"label": "Issue Type",
@@ -1029,5 +1140,6 @@
"timezone": "",
"title": "Jira",
"uid": "F5vqBQl7z",
- "version": 3
+ "version": 4,
+ "weekStart": ""
}
\ No newline at end of file