Many thanks to JetBrains for providing the OS license for an amazing GoLand IDE.
- Copy files from the
dist
folder to your Grafana plugin directory - Ensure that executable file has the execute flag
- Restart Grafana
- Check datasource list as http://you-grafana/datasources/new
The plugin is unsigned, hence you may face the error:
lvl=eror msg=“Failed to load plugin” logger=plugins error=“plugin “grafana-csv-plugin” is unsigned”
To get it to work you should make configuration as described in documentation
- Read local CSV file
- SQL queries (under the hood CSV will be converted into in-memory SQLite3 DB)
- Auto-detect column types by the first data row
- Reloading CSV file on changing
- Query variables
- Macros:
- $__timeFilter(dateColumn)
- $__timeGroup(dateColumn, interval)
- $__unixEpochFrom()
- $__unixEpochTo()
- Each CSV file must have the first row with column names
- SQLite3
- Each DS has its own table, the name of the table coincides with the DS name (for example the DS name is
my_data
, hence in a query you should select frommy_data
table)
Macros | Description |
---|---|
$__timeFilter(dateColumn) | Will be replaced by a time range filter using the specified column name. For example, dateColumn BETWEEN ‘2017-04-21T05:01:17Z’ AND ‘2017-04-21T05:06:17Z’ |
$__timeGroup(dateColumn, interval), Examples: sec: $__timeGroup(dateColumn, 60); min: $__timeGroup(dateColumn, 60m); hour: $__timeGroup(dateColumn, 1h) |
Will be replaced by an expression usable in a GROUP BY clause. For example, datetime((strftime('%s', dateColumn) / 60) * 60, 'unixepoch') |
$__unixEpochFrom() | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, 1494410783 |
$__unixEpochTo() | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, 1494497183 |
Example:
- CSV File: data/SacramentocrimeJanuary2006.csv
- DS name
jan_2006
- group by 1 hour
- filter by current time range
SELECT $__timeGroup(cdatetime, 1h) as "time", district as "metric", count(*) as "value"
FROM
jan_2006
WHERE
$__timeFilter(cdatetime)
GROUP BY "time", "metric"
ORDER BY "time"
Example:
- CSV File: data/SalesJan2009.csv
- DS name
sales
- group by 24 hours
SELECT $__timeGroup(Transaction_date, 24h) as "time", Payment_Type as "metric", count(*) as "value"
FROM
sales
GROUP BY "time", "metric"
ORDER BY "time"
- Read local file
- Read remote file
- npm run build
http://your-server:3000 (admin/admin)
manage.sh build
(build docker image)manage.sh up
(run container)manage.sh down
(stop container)
After starting container go to the showcase dashboard: http://your-host:3000/d/DTRcLsVGk/showcase-sales?orgId=1
- 1.1.0 which doesn't support SQL, but supports the filtering expressions.