diff --git a/docs/sources/features/datasources/mysql.md b/docs/sources/features/datasources/mysql.md new file mode 100644 index 00000000000..dc4e68c0ed4 --- /dev/null +++ b/docs/sources/features/datasources/mysql.md @@ -0,0 +1,94 @@ ++++ +title = "Using MySQL in Grafana" +description = "Guide for using MySQL in Grafana" +keywords = ["grafana", "mysql", "guide"] +type = "docs" +[menu.docs] +name = "MySQL" +parent = "datasources" +weight = 7 ++++ + +# Using MySQL in Grafana + +> Only available in Grafana v4.3+. This data source is not ready for +> production use, currently in development (alpha state). + +Grafana ships with a built-in MySQL data source plugin that allow you to query any visualize +data from MySQL compatible database. + +## Macros + +To simplify syntax and to allow for dynamic parts, like date range filters, the query can contain macros. + +Macro example | Description +------------ | ------------- +*__timeFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name. For example, *dateColumn > FROM_UNIXTIME(1494410783) AND dateColumn < FROM_UNIXTIME(1494497183)* + +We plan to add many more macros. If you have suggestions for what macros you would like to see, please +[open an issue](https://github.com/grafana/grafana) in our GitHub repo. + +The query editor has a link named `Generated SQL` that show up after a query as been executed, while in panel edit mode. Click +on it and it will expand and show the raw interpolated SQL string that was executed. + +## Table queries + +If the `Format as` query option is set to `Table` then you can basically do any type of SQL query. The table panel will automatically show the results of whatever columns & rows your query returns. + +Query editor with example query: + +![](/img/docs/v43/mysql_table_query.png) + + +The query: + +```sql +SELECT + title as 'Title', + user.login as 'Created By' , + dashboard.created as 'Created On' + FROM dashboard +INNER JOIN user on user.id = dashboard.created_by +WHERE $__timeFilter(dashboard.created) +``` + +You can control the name of the Table panel columns by using regular `as ` SQL column selection syntax. + +The resulting table panel: + +![](/img/docs/v43/mysql_table.png) + +### Time series queries + +If you set `Format as` to `Time series`, for use in Graph panel for example, then there are some requirements for +what your query returns. + +- Must be a column named `time_sec` representing a unix epoch in seconds. +- Must be a column named `value` representing the time series value. +- Must be a column named `metric` representing the time series name. + +Example: + +```sql +SELECT + min(UNIX_TIMESTAMP(time_date_time)) as time_sec, + max(value_double) as value, + metric1 as metric +FROM test_data +WHERE $__timeFilter(time_date_time) +GROUP BY metric1, UNIX_TIMESTAMP(time_date_time) DIV 300 +ORDER BY time_sec asc +``` + +Currently, there is no support for a dynamic group by time based on time range & panel width. +This is something we plan to add. + +## Templating + +You can use variables in your queries but there are currently no support for defining `Query` variables +that target a MySQL data source. + +## Alerting + +Time series queries should work in alerting conditions. Table formatted queries is not yet supported in alert rule +conditions.