mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 22:24:31 +08:00
Transformers: Support inner vs outer join (#53913)
This commit is contained in:
@ -322,15 +322,77 @@ We would then get :
|
||||
| server 2 | 88.6 | 90 | 2020-07-07 10:32:20 | Overload |
|
||||
| server 3 | 59.6 | 62 | 2020-07-07 11:34:20 | OK |
|
||||
|
||||
This transformation allows you to extract some key information out of your time series and display them in a convenient way.
|
||||
This transformation enables you to extract key information from your time series and display it in a convenient way.
|
||||
|
||||
### Join by field (outer join)
|
||||
### Join by field
|
||||
|
||||
Use this transformation to join multiple time series from a result set by field.
|
||||
Use this transformation to join multiple results into a single table. This is especially useful for converting multiple
|
||||
time series results into a single wide table with a shared time field.
|
||||
|
||||
This transformation is especially useful if you want to combine queries so that you can calculate results from the fields.
|
||||
#### Inner join
|
||||
|
||||
In the example below, I have a template query displaying time series data from multiple servers in a table visualization. I can only view the results of one query at a time.
|
||||
An inner join merges data from multiple tables where all tables share the same value from the selected field. This type of join excludes
|
||||
data where values do not match in every result.
|
||||
|
||||
Use this transformation to combine the results from multiple queries (combining on a passed join field or the first time column) into one result, and drop rows where a successful join cannot occur.
|
||||
|
||||
In the following example, two queries return table data. It is visualized as two separate tables before applying the inner join transformation.
|
||||
|
||||
Query A:
|
||||
|
||||
| Time | Job | Uptime |
|
||||
| ------------------- | ------- | --------- |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 |
|
||||
| 2020-07-07 11:14:20 | postgre | 345001233 |
|
||||
|
||||
Query B:
|
||||
|
||||
| Time | Server | Errors |
|
||||
| ------------------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | server 2 | 5 |
|
||||
| 2020-07-07 11:04:20 | server 3 | 10 |
|
||||
|
||||
The result after applying the inner join transformation looks like the following:
|
||||
|
||||
| Time | Job | Uptime | Server | Errors |
|
||||
| ------------------- | ------- | --------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 | server 2 | 5 |
|
||||
|
||||
#### Outer join
|
||||
|
||||
An outer join includes all data from an inner join and rows where values do not match in every input.
|
||||
|
||||
Use this transformation to combine the results from multiple queries (combining on a passed join field or the first time column) into one result, and drop rows where a successful join cannot occur - performing an inner join.
|
||||
|
||||
In the following example, two queries return table data. It is visualized as two tables before applying the inner join transformation.
|
||||
|
||||
Query A:
|
||||
|
||||
| Time | Job | Uptime |
|
||||
| ------------------- | ------- | --------- |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 |
|
||||
| 2020-07-07 11:14:20 | postgre | 345001233 |
|
||||
|
||||
Query B:
|
||||
|
||||
| Time | Server | Errors |
|
||||
| ------------------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | server 2 | 5 |
|
||||
| 2020-07-07 11:04:20 | server 3 | 10 |
|
||||
|
||||
The result after applying the inner join transformation looks like the following:
|
||||
|
||||
| Time | Job | Uptime | Server | Errors |
|
||||
| ------------------- | ------- | --------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 | server 2 | 5 |
|
||||
|
||||
In the following example, a template query displays time series data from multiple servers in a table visualization. The results of only one query can be viewed at a time.
|
||||
|
||||
{{< figure src="/static/img/docs/transformations/join-fields-before-7-0.png" class="docs-image--no-shadow" max-width= "1100px" >}}
|
||||
|
||||
@ -643,32 +705,3 @@ Here is the result after adding a Limit transformation with a value of '3':
|
||||
| 2020-07-07 11:34:20 | Temperature | 25 |
|
||||
| 2020-07-07 11:34:20 | Humidity | 22 |
|
||||
| 2020-07-07 10:32:20 | Humidity | 29 |
|
||||
|
||||
### Join by field (Inner join)
|
||||
|
||||
Use this transformation to combine the results from multiple queries (combining on a passed join field or the first time column) into one single result and drop rows where a successful join isn't able to occur - performing an inner join.
|
||||
|
||||
In the example below, we have two queries returning table data. It is visualized as two separate tables before applying the inner join transformation.
|
||||
|
||||
Query A:
|
||||
|
||||
| Time | Job | Uptime |
|
||||
| ------------------- | ------- | --------- |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 |
|
||||
| 2020-07-07 11:14:20 | postgre | 345001233 |
|
||||
|
||||
Query B:
|
||||
|
||||
| Time | Server | Errors |
|
||||
| ------------------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | server 2 | 5 |
|
||||
| 2020-07-07 11:04:20 | server 3 | 10 |
|
||||
|
||||
Result after applying the inner join transformation:
|
||||
|
||||
| Time | Job | Uptime | Server | Errors |
|
||||
| ------------------- | ------- | --------- | -------- | ------ |
|
||||
| 2020-07-07 11:34:20 | node | 25260122 | server 1 | 15 |
|
||||
| 2020-07-07 11:24:20 | postgre | 123001233 | server 2 | 5 |
|
||||
|
Reference in New Issue
Block a user