I created this dynamic bar chart which change the granularity based on the date selected, so if you the date selected > year, it will group the data per year then you can drill down to Month, the same if it is Month, you can drill down to week etc. see Example here.

it was just for fun, but someone asked me how it works, I thought it is worth a Quick Blog.
As of 27 October 2020, the date parameter are only available if you connect to BigQuery.
ok, basically you need just create a custom Query that calculate the duration between the start date Parameter and end date parameter which are passed by the Calendar Control
This example is using Average Australian wholesale Electricity Market, Obviously it works with any dataset that contain date.
WITH xx AS ( SELECT *EXCEPT(YEAR), CAST(DATE_TRUNC(DATE(SETTLEMENTDATE), YEAR) AS timestamp) AS YEAR, CAST(DATE_TRUNC(DATE(SETTLEMENTDATE), MONTH) AS timestamp) AS MONTH, CAST(DATE_TRUNC(DATE(SETTLEMENTDATE), WEEK) AS timestamp) AS WEEK, CAST(DATE(SETTLEMENTDATE) AS timestamp) AS date, DATE_DIFF(PARSE_DATE('%Y%m%d', @DS_END_DATE),PARSE_DATE('%Y%m%d', @DS_START_DATE),DAY) + 1 AS nbrdays FROM xxxxxxx.PRICEARCHIVE WHERE DATE(SETTLEMENTDATE) >= PARSE_DATE('%Y%m%d', @DS_START_DATE) AND DATE(SETTLEMENTDATE) <= PARSE_DATE('%Y%m%d', @DS_END_DATE) AND UNIT="DUNIT") SELECT REGIONID, RRP, nbrdays, CASE WHEN nbrdays <= 1 THEN SETTLEMENTDATE WHEN nbrdays <= 7 THEN date WHEN nbrdays <= 31 THEN WEEK WHEN nbrdays <= 365 THEN MONTH ELSE YEAR END AS newdate, CASE WHEN nbrdays <= 1 THEN SETTLEMENTDATE WHEN nbrdays <= 7 THEN SETTLEMENTDATE WHEN nbrdays <= 31 THEN date WHEN nbrdays <= 365 THEN WEEK ELSE MONTH END AS newdate2 FROM xx
One thought on “Dynamic Date Granularity using Parameter in Google Data Studio”