I have PostgreSQL Datasource. I have a database function which returns a dynamically generated string. I need to use this dynamically generated string in select clause of my dashboard panel query.
So, I defined a variable named TestCaseVar. I get the correct string in the preview values
Preview of values
(case when tt.name = ‘Test Name1’ then tt.col1 end) as "Test Name1"
Until this point things looks good.
Now, I added a panel in the dashboard and tried to use TestCaseVar in the query as below,
SELECT
$__time(tt.“timestamp”),
[[TestCaseVar]]
FROM
testtable tt
This shows me error. When I see the generated SQL I see,
SELECT
tt.“timestamp” AS “time”,
(case when tt.name = ’ ‘Test Name1’ ’ then tt.col1 end) as “Test Name1”
FROM
testtable tt
The Issue is it adds additional single quote (’) in the generated query.
How Can I get rid-off this additional single quote from the query?
Any quick help / suggestions would be highly appreciated.
Is TestCaseVar
calling a database function? Is it a single or multi-value variable?
Yes TestCaseVar is calling a database functions which receives expected result as shown in the preview of values.
Anyone any comments? Is there any suggestion or workaround to get rid-off this issue?
I can’t recreate this. Can you show your variable settings? Any other details that might help to recreate it?
I didn’t create a function but did a select string instead:
select '(case when tt.name = ‘Test Name1’ then tt.col1 end) as "Test Name1"'
)
When I test it in a query, it looks right to me:
Have you tried ${TestCaseVar:raw}
instead of [[TestCaseVar]]
?
Yes. TestCaseVar is calling a database functions which receives expected result as shown in the preview of values but even if a simple constant variable is created and assigned the text value as returned by DB function the behavior is same.
I am not seeing the same thing, I tested with “custom” variable first and it worked for me. Can you provide more details:
- Grafana version
- Postgres version
- Screenshot of your variable settings
Thanks @daniellee for your quick response !
I used ${TestCaseVar:raw} syntax as well as [[TestCaseVar:raw]]. They both seems to work.
Earlier before creating this post, I had tried to use [[TestCaseVar:raw]] and noticed that GenerateSQL option wasn’t viewable. So, I got bit confused and assumed that there is something wrong so that the GenerateSQL option isn’t available and I could not see the generated SQL.
To see the exact syntax of my single quoted string, I introduced small error in the query then I noticed that the GenerateSQL got visible and my query string was formed correctly.
Not sure why GenerateSQL option gets hidden when I use ${TestCaseVar:raw} or [[TestCaseVar:raw]].
2 Likes