CREATE TABLE `dev_defect_density` (
`data_date` date NOT NULL COMMENT,
`org_id` varchar(20) NOT NULL COMMENT,
`org_name` varchar(60) NOT NULL COMMENT,
`version_id` varchar(20) NOT NULL,
`version_name` varchar(20) NOT NULL,
`sys_id` varchar(20) NOT NULL COMMENT,
`sys_name` varchar(60) NOT NULL COMMENT,
`dev_defect_density` tinyint(5) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT,
PRIMARY KEY (`data_date`,`sys_id`,`sys_name`,`org_id`,`org_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
I use this query in Grafana
SELECT
data_date AS "time",
org_name as org_name,
sys_name AS metric,
sum(dev_defect_density) AS value
FROM dev_defect_density
WHERE
$__timeFilter(data_date)
GROUP BY time, org_name, metric
ORDER BY time
But got error Value column must have numeric datatype, column: org_name type: string value:xxx
Seems graphite support multiple metrics, but I also want to use it in tranditional data sources, is that possible?
The problem is that you are selecting org_name. The MySQL data source will presume that any selected column that isn’t named either time or metric is an additional metric value column, and since org_name is selected but is a varchar rather than a numeric value, it causes problems.
Try this instead
SELECT
data_date AS "time",
sys_name AS metric,
sum(dev_defect_density) AS value
avg(dev_defect_density) AS avg
FROM dev_defect_density
WHERE
$__timeFilter(data_date)
GROUP BY time, org_name, metric
ORDER BY time
I added in an average value as well to show how to add in several metric values into the same query.
SELECT
data_date AS "time",
CONCAT(org_name, "-", sys_name) AS metric,
sum(dev_defect_density) AS value
FROM dev_defect_density
WHERE
$__timeFilter(data_date)
GROUP BY time, org_name, sys_name
ORDER BY time
SELECT
data_date AS "time",
org_name AS metric1,
sys_pro_name as metric2,
sum(dev_defect_density) AS value
FROM dev_defect_density
GROUP BY time, org_name, org_name, sys_pro_name
ORDER BY time
And then use my custome plugin to draw a graphics like this:
I’m afraid I don’t know how to help you. The query I posted previously would give you one metric per combination of org_name and sys_name (as long as there is something for the time period).