I need help does grafana has a date-picker as a variable
e.g
I want my dashboards to change based on the date selected
What data source are you using? Most data sources have this built in. If you are using a database with a query language, then they have macros for using the date range as a variable (see $__timeFrom macro in mysql as an example).
I am using Microsoft SQL Server, but I would want a user to select a single date which is used in the query to retrieve data of that specific date
I have a time series picker like this:
Would also like to have Date: --from-- --To–
when looking back for a long period
I see grafana has time range (from and to), but i would want users to choose only one date, not a range.
There is no way to get Grafana to have a time picker with one date. There is nearly always a range - for example for your date: 2020-04-20 I’m guessing that you are querying for that day. This is the range 2020-04:20 00:00:00 to 2020-04-20 23:59:59.
For Microsoft SQL Server, then you have similar macros for time that you can use in your sql query:
$__timeFrom()
is probably the one you want to use. It gives you the from date of the time range.
Alright, thank you so much.
Hi @daniellee ,
I feel I actually need the user to select a single date as well instead of a date range to make an unambiguous/simple UI for a specific case. I m going to try to explain (hopefully it s clear enough…).
- We are using a postgres data source with our own SQL queries & Grafana variables
- The main goal of this dashboard is to show statistics over a given period (typically the previous week or previous month)
- In addition, on some visualizations of the same dashboard, we want to show a history of these statistics in time to see how the current period compares to the past ones with a bar plot. So we typically have a variable “$NumberOfPastPeriods” to show multiple past bars.
When the main period of interest is 1 week, things work out. The user can just select a time range of 7 days, we get the interval size with $__timeTo()-__timeFrom() and go back in time $NumberOfPastPeriods * ($__timeTo()-__timeFrom()) in our query (while truncating per week) with each bin representing a period with the same characteristics (eg Monday to Sunday)
The problem is for months. If the user chooses an interval “Previous month” then what we get is the $__timeTo() and __timeFrom() for the previous month. The problem is that months can have 30, 31 or 28/29 days.
So "Going back in time by $NumberOfPastPeriods * ($__timeTo()-__timeFrom())
(while truncating dates by month) does not really work - we are not getting “true” months.
A straightforward/simple UI for users would be to select 1) a single current date (i.e., not a range); 2) the main period of interest with our own constraints (eg, 1w, 1M); 3) and the number of past periods for historical plots ($NumberOfPastPeriods).
This would require a new option (e.g. “Single date instead of range”) in the dashboard settings.
Or are we missing a creating way to do what we try to achieve?
Thanks so much
B
Don’t know if this question is still relevant but maybe this is a workaround for your question
Years later … still a relevant issue. I know that you need to select From and To times but I also want to select another couple of dates to populate variables. Here’s my scenario.
I built a dashboard that shows CPU, Memory, # of API calls, etc. over selected From/To range (e.g., Last 3 hours), then contrasts that with the same time range from two other days using Offset. Here’s an example of one of the queries that contains an offset:
sum (irate(container_network_receive_bytes_total{cluster=~“${cluster:regex}”, namespace=~“${namespace:regex}”}[$__rate_interval] offset ${Offset1}d))
Currently I’m using Text as the variable type and I enter 1 for yesterday or 7 for same day last week. It works great and is very useful but if I want to compare today’s traffic to a date several months ago I need to pull up a calendar and count the number of days to place in the offset field. Being able to use a date picker to populate the Offset variables would be MUCH better.