Reputation: 395
When i make a table panel and go to "Options" tab, columns parameter set to Auto: Columns and their order are determined by the data query.
Is there a doc on how write prometheus queries for grafana tables?
My prometheus data is a metric with 2 labels my_col
and my_row
:
my_metric{instance="lh",job="job",my_col="1",my_row="A"} 6
my_metric{instance="lh",job="job",my_col="2",my_row="A"} 8
my_metric{instance="lh",job="job",my_col="1",my_row="B"} 10
my_metric{instance="lh",job="job",my_col="2",my_row="B"} 17
I want to make a table that looks like:
| | 1 | 2 |
| A | 6 | 8 |
| B | 10| 17|
Upvotes: 12
Views: 29840
Reputation: 113
After some experimentations in Grafana 9.1.1, I have obtained a way to construct a table like you have described with prometheus metric like that. Here are Grafana transform functions you will need:
Upvotes: 11
Reputation: 580
It is possible with Grafana 7.0.3. I think it was possible with earlier versions as well, but the approach has changed since 7.0.0 with the introduction of transformations.
Add two queries:
my_metric{instance="lh",job="job",my_col="1"}
my_metric{instance="lh",job="job",my_col="2"}
Make them instant queries and format them as tables. Create the transformation Outer join
and join by my_col
. You should get the two values as Value #A
and Value #B
. You can use the transformation Organize fields
to rename them and drop all the other fields.
Upvotes: 6
Reputation: 96
There is some documentation in the Grafana docs about Table Panels here: https://grafana.com/docs/features/panels/table_panel/#table-panel
The particular transform you showed in the example doesn't appear to be supported in the above documentation unfortunately.
If possible, a change to the structure of the prometheus data to something like the below should make this easier:
my_metric{instance="lh",job="job",col_1="6",col_2="8",my_row="A"}
my_metric{instance="lh",job="job",col_1="10",col_2="17",my_row="B"}
Upvotes: 2