<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Query and transform data on Grafana Labs</title><link>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/</link><description>Recent content in Query and transform data on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v9.5/panels-visualizations/query-transform-data/index.xml" rel="self" type="application/rss+xml"/><item><title>Write expression queries</title><link>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/expression-queries/</link><pubDate>Wed, 15 Apr 2026 05:03:08 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/expression-queries/</guid><content><![CDATA[&lt;h1 id=&#34;write-expression-queries&#34;&gt;Write expression queries&lt;/h1&gt;
&lt;p&gt;Server-side expressions enable you to manipulate data returned from queries with math and other operations. Expressions create new data and do not manipulate the data returned by data sources.&lt;/p&gt;
&lt;h2 id=&#34;about-expressions&#34;&gt;About expressions&lt;/h2&gt;
&lt;p&gt;Server-side expressions allow you to manipulate data returned from queries with math and other operations. Expressions create new data and do not manipulate the data returned by data sources, aside from some minor data restructuring to make the data acceptable input for expressions.&lt;/p&gt;
&lt;h3 id=&#34;using-expressions&#34;&gt;Using expressions&lt;/h3&gt;
&lt;p&gt;Expressions are most commonly used for &lt;a href=&#34;../../../alerting/&#34;&gt;Grafana Alerting&lt;/a&gt;. The processing is done server-side, so expressions can operate without a browser session. However, expressions can also be used with backend data sources and visualization.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Expressions do not work with legacy dashboard alerts.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Expressions are meant to augment data sources by enabling queries from different data sources to be combined or by providing operations unavailable in a data source.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; When possible, you should do data processing inside the data source. Copying data from storage to the Grafana server for processing is inefficient, so expressions are targeted at lightweight data processing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Expressions work with data source queries that return time series or number data. They also operate on &lt;a href=&#34;../../../fundamentals/timeseries-dimensions/&#34;&gt;multiple-dimensional data&lt;/a&gt;. For example, a query that returns multiple series, where each series is identified by labels or tags.&lt;/p&gt;
&lt;p&gt;An individual expression takes one or more queries or other expressions as input and adds data to the result. Each individual expression or query is represented by a variable that is a named identifier known as its RefID (e.g., the default letter &lt;code&gt;A&lt;/code&gt; or &lt;code&gt;B&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;To reference the output of an individual expression or a data source query in another expression, this identifier is used as a variable.&lt;/p&gt;
&lt;h3 id=&#34;types-of-expressions&#34;&gt;Types of expressions&lt;/h3&gt;
&lt;p&gt;Expressions work with two types of data.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A collection of time series.&lt;/li&gt;
&lt;li&gt;A collection of numbers, where each number is an item.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each collection is returned from a single data source query or expression and represented by the RefID. Each collection is a set, where each item in the set is uniquely identified by its dimensions which are stored as &lt;a href=&#34;../../../fundamentals/timeseries-dimensions/#labels&#34;&gt;labels&lt;/a&gt; or key-value pairs.&lt;/p&gt;
&lt;h3 id=&#34;data-source-queries&#34;&gt;Data source queries&lt;/h3&gt;
&lt;p&gt;Server-side expressions only support data source queries for backend data sources. The data is generally assumed to be labeled time series data. In the future we intend to add an assertion of the query return type (number or time series) data so expressions can handle errors better.&lt;/p&gt;
&lt;p&gt;Data source queries, when used with expressions, are executed by the expression engine. When it does this, it restructures data to be either one time series or one number per data frame. So for example if using a data source that returns multiple series on one frame in the table view, you might notice it looks different when executed with expressions.&lt;/p&gt;
&lt;p&gt;Currently, the only non-time series format (number) is supported when you&amp;rsquo;re using data frames and you have a table response that returns a data frame with no time, string columns, and one number column:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Loc&lt;/th&gt;
              &lt;th&gt;Host&lt;/th&gt;
              &lt;th&gt;Avg_CPU&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;MIA&lt;/td&gt;
              &lt;td&gt;A&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;NYC&lt;/td&gt;
              &lt;td&gt;B&lt;/td&gt;
              &lt;td&gt;2&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The example above will produce a number that works with expressions. The string columns become labels and the number column the corresponding value. For example &lt;code&gt;{&amp;quot;Loc&amp;quot;: &amp;quot;MIA&amp;quot;, &amp;quot;Host&amp;quot;: &amp;quot;A&amp;quot;}&lt;/code&gt; with a value of 1.&lt;/p&gt;
&lt;h3 id=&#34;operations&#34;&gt;Operations&lt;/h3&gt;
&lt;p&gt;You can use the following operations in expressions: math, reduce, and resample.&lt;/p&gt;
&lt;h4 id=&#34;math&#34;&gt;Math&lt;/h4&gt;
&lt;p&gt;Math is for free-form math formulas on time series or number data. Math operations take numbers and time series as input and change them to different numbers and time series.&lt;/p&gt;
&lt;p&gt;Data from other queries or expressions are referenced with the RefID prefixed with a dollar sign, for example &lt;code&gt;$A&lt;/code&gt;. If the variable has spaces in the name, then you can use a brace syntax like &lt;code&gt;${my variable}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Numeric constants may be in decimal (&lt;code&gt;2.24&lt;/code&gt;), octal (with a leading zero like &lt;code&gt;072&lt;/code&gt;), or hex (with a leading 0x like &lt;code&gt;0x2A&lt;/code&gt;). Exponentials and signs are also supported (e.g., &lt;code&gt;-0.8e-2&lt;/code&gt;).&lt;/p&gt;
&lt;h5 id=&#34;operators&#34;&gt;Operators&lt;/h5&gt;
&lt;p&gt;The arithmetic (&lt;code&gt;&#43;&lt;/code&gt;, binary and unary &lt;code&gt;-&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;%&lt;/code&gt;, exponent &lt;code&gt;**&lt;/code&gt;), relational (&lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;==&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;), and logical (&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, &lt;code&gt;||&lt;/code&gt;, and unary &lt;code&gt;!&lt;/code&gt;) operators are supported.&lt;/p&gt;
&lt;p&gt;How the operation behaves with data depends on if it is a number or time series data.&lt;/p&gt;
&lt;p&gt;With binary operations, such as &lt;code&gt;$A &#43; $B&lt;/code&gt; or &lt;code&gt;$A || $B&lt;/code&gt;, the operator is applied in the following ways depending on the type of data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If both &lt;code&gt;$A&lt;/code&gt; and &lt;code&gt;$B&lt;/code&gt; are a number, then the operation is performed between the two numbers.&lt;/li&gt;
&lt;li&gt;If one variable is a number, and the other variable is a time series, then the operation between the value of each point in the time series and the number is performed.&lt;/li&gt;
&lt;li&gt;If both &lt;code&gt;$A&lt;/code&gt; and &lt;code&gt;$B&lt;/code&gt; are time series data, then the operation between each value in the two series is performed for each time stamp that exists in both &lt;code&gt;$A&lt;/code&gt; and &lt;code&gt;$B&lt;/code&gt;. The Resample operation can be used to line up time stamps. (&lt;strong&gt;Note:&lt;/strong&gt; in the future, we plan to add options to the Math operation for different behaviors).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Number OP number = number&lt;/li&gt;
&lt;li&gt;Number OP series = series&lt;/li&gt;
&lt;li&gt;Series OP series = series&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because expressions work with multiple series or numbers represented by a single variable, binary operations also perform a union (join) between the two variables. This is done based on the identifying labels associated with each individual series or number.&lt;/p&gt;
&lt;p&gt;So if you have numbers with labels like &lt;code&gt;{host=web01}&lt;/code&gt; in &lt;code&gt;$A&lt;/code&gt; and another number in &lt;code&gt;$B&lt;/code&gt; with the same labels then the operation is performed between those two items within each variable, and the result will share the same labels. The rules for the behavior of this union are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An item with no labels will join to anything.&lt;/li&gt;
&lt;li&gt;If both &lt;code&gt;$A&lt;/code&gt; and &lt;code&gt;$B&lt;/code&gt; each contain only one item (one series, or one number), they will join.&lt;/li&gt;
&lt;li&gt;If labels are exact math they will join.&lt;/li&gt;
&lt;li&gt;If labels are a subset of the other, for example and item in &lt;code&gt;$A&lt;/code&gt; is labeled &lt;code&gt;{host=A,dc=MIA}&lt;/code&gt; and and item in &lt;code&gt;$B&lt;/code&gt; is labeled &lt;code&gt;{host=A}&lt;/code&gt; they will join.&lt;/li&gt;
&lt;li&gt;Currently, if within a variable such as &lt;code&gt;$A&lt;/code&gt; there are different tag &lt;em&gt;keys&lt;/em&gt; for each item, the join behavior is undefined.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The relational and logical operators return 0 for false 1 for true.&lt;/p&gt;
&lt;h5 id=&#34;math-functions&#34;&gt;Math Functions&lt;/h5&gt;
&lt;p&gt;While most functions exist in the own expression operations, the math operation does have some functions similar to math operators or symbols. When functions can take either numbers or series, than the same type as the argument will be returned. When it is a series, the operation of performed for the value of each point in the series.&lt;/p&gt;
&lt;h6 id=&#34;abs&#34;&gt;abs&lt;/h6&gt;
&lt;p&gt;abs returns the absolute value of its argument which can be a number or a series. For example &lt;code&gt;abs(-1)&lt;/code&gt; or &lt;code&gt;abs($A)&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;is_inf&#34;&gt;is_inf&lt;/h6&gt;
&lt;p&gt;is_inf takes a number or a series and returns &lt;code&gt;1&lt;/code&gt; for &lt;code&gt;Inf&lt;/code&gt; values (negative or positive) and &lt;code&gt;0&lt;/code&gt; for other values. For example &lt;code&gt;is_inf($A)&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you need to specifically check for negative infinity for example, you can do a comparison like &lt;code&gt;$A == infn()&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h6 id=&#34;is_nan&#34;&gt;is_nan&lt;/h6&gt;
&lt;p&gt;is_nan takes a number or a series and returns &lt;code&gt;1&lt;/code&gt; for &lt;code&gt;NaN&lt;/code&gt; values and &lt;code&gt;0&lt;/code&gt; for other values. For example &lt;code&gt;is_nan($A)&lt;/code&gt;. This function exists because &lt;code&gt;NaN&lt;/code&gt; is not equal to &lt;code&gt;NaN&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;is_null&#34;&gt;is_null&lt;/h6&gt;
&lt;p&gt;is_null takes a number or a series and returns &lt;code&gt;1&lt;/code&gt; for &lt;code&gt;null&lt;/code&gt; values and &lt;code&gt;0&lt;/code&gt; for other values. For example &lt;code&gt;is_null($A)&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;is_number&#34;&gt;is_number&lt;/h6&gt;
&lt;p&gt;is_number takes a number or a series and returns &lt;code&gt;1&lt;/code&gt; for all real number values and &lt;code&gt;0&lt;/code&gt; for other values (which are &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;Inf&#43;&lt;/code&gt;, &lt;code&gt;Inf-&lt;/code&gt;, and &lt;code&gt;NaN&lt;/code&gt;). For example &lt;code&gt;is_number($A)&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;log&#34;&gt;log&lt;/h6&gt;
&lt;p&gt;Log returns the natural logarithm of of its argument which can be a number or a series. If the value is less than 0, NaN is returned. For example &lt;code&gt;log(-1)&lt;/code&gt; or &lt;code&gt;log($A)&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;inf-infn-nan-and-null&#34;&gt;inf, infn, nan, and null&lt;/h6&gt;
&lt;p&gt;The inf, infn, nan, and null functions all return a single value of the name. They primarily exist for testing. Example: &lt;code&gt;null()&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id=&#34;round&#34;&gt;round&lt;/h6&gt;
&lt;p&gt;Round returns a rounded integer value. For example, &lt;code&gt;round(3.123)&lt;/code&gt; or &lt;code&gt;round($A)&lt;/code&gt;. (This function should probably take an argument so it can add precision to the rounded value).&lt;/p&gt;
&lt;h6 id=&#34;ceil&#34;&gt;ceil&lt;/h6&gt;
&lt;p&gt;Ceil rounds the number up to the nearest integer value. For example, &lt;code&gt;ceil(3.123)&lt;/code&gt; returns 4.&lt;/p&gt;
&lt;h6 id=&#34;floor&#34;&gt;floor&lt;/h6&gt;
&lt;p&gt;Floor rounds the number down to the nearest integer value. For example, &lt;code&gt;floor(3.123)&lt;/code&gt; returns 3.&lt;/p&gt;
&lt;h4 id=&#34;reduce&#34;&gt;Reduce&lt;/h4&gt;
&lt;p&gt;Reduce takes one or more time series returned from a query or an expression and turns each series into a single number. The labels of the time series are kept as labels on each outputted reduced number.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fields:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Function -&lt;/strong&gt; The reduction function to use&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input -&lt;/strong&gt; The variable (refID (such as &lt;code&gt;A&lt;/code&gt;)) to resample&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode -&lt;/strong&gt; Allows control behavior of reduction function when a series contains non-numerical values (null, NaN, &#43;-Inf)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;reduction-functions&#34;&gt;Reduction Functions&lt;/h5&gt;
&lt;h6 id=&#34;count&#34;&gt;Count&lt;/h6&gt;
&lt;p&gt;Count returns the number of points in each series.&lt;/p&gt;
&lt;h6 id=&#34;mean&#34;&gt;Mean&lt;/h6&gt;
&lt;p&gt;Mean returns the total of all values in each series divided by the number of points in that series. In &lt;code&gt;strict&lt;/code&gt; mode if any values in the series are null or nan, or if the series is empty, NaN is returned.&lt;/p&gt;
&lt;h6 id=&#34;min-and-max&#34;&gt;Min and Max&lt;/h6&gt;
&lt;p&gt;Min and Max return the smallest or largest value in the series respectively. In &lt;code&gt;strict&lt;/code&gt; mode if any values in the series are null or nan, or if the series is empty, NaN is returned.&lt;/p&gt;
&lt;h6 id=&#34;sum&#34;&gt;Sum&lt;/h6&gt;
&lt;p&gt;Sum returns the total of all values in the series. If series is of zero length, the sum will be 0. In &lt;code&gt;strict&lt;/code&gt; mode if there are any NaN or Null values in the series, NaN is returned.&lt;/p&gt;
&lt;h5 id=&#34;last&#34;&gt;Last&lt;/h5&gt;
&lt;p&gt;Last returns the last number in the series. If the series has no values then returns NaN.&lt;/p&gt;
&lt;h5 id=&#34;reduction-modes&#34;&gt;Reduction Modes&lt;/h5&gt;
&lt;h6 id=&#34;strict&#34;&gt;Strict&lt;/h6&gt;
&lt;p&gt;In Strict mode the input series is processed as is. If any values in the series are non-numeric (null, NaN or &#43;-Inf), NaN is returned.&lt;/p&gt;
&lt;h6 id=&#34;drop-non-numeric&#34;&gt;Drop Non-Numeric&lt;/h6&gt;
&lt;p&gt;In this mode all non-numeric values (null, NaN or &#43;-Inf) in the input series are filtered out before executing the reduction function.&lt;/p&gt;
&lt;h6 id=&#34;replace-non-numeric&#34;&gt;Replace Non-Numeric&lt;/h6&gt;
&lt;p&gt;In this mode all non-numeric values are replaced by a pre-defined value.&lt;/p&gt;
&lt;h4 id=&#34;resample&#34;&gt;Resample&lt;/h4&gt;
&lt;p&gt;Resample changes the time stamps in each time series to have a consistent time interval. The main use case is so you can resample time series that do not share the same timestamps so math can be performed between them. This can be done by resample each of the two series, and then in a Math operation referencing the resampled variables.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fields:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input -&lt;/strong&gt; The variable of time series data (refID (such as &lt;code&gt;A&lt;/code&gt;)) to resample&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resample to -&lt;/strong&gt; The duration of time to resample to, for example &lt;code&gt;10s&lt;/code&gt;. Units may be &lt;code&gt;s&lt;/code&gt; seconds, &lt;code&gt;m&lt;/code&gt; for minutes, &lt;code&gt;h&lt;/code&gt; for hours, &lt;code&gt;d&lt;/code&gt; for days, &lt;code&gt;w&lt;/code&gt; for weeks, and &lt;code&gt;y&lt;/code&gt; of years.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Downsample -&lt;/strong&gt; The reduction function to use when there are more than one data point per window sample. See the reduction operation for behavior details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upsample -&lt;/strong&gt; The method to use to fill a window sample that has no data points.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pad&lt;/strong&gt; fills with the last know value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;backfill&lt;/strong&gt; with next known value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fillna&lt;/strong&gt; to fill empty sample windows with NaNs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;write-an-expression&#34;&gt;Write an expression&lt;/h2&gt;
&lt;p&gt;If your data source supports them, then Grafana displays the &lt;strong&gt;Expression&lt;/strong&gt; button and shows any existing expressions in the query editor list.&lt;/p&gt;
&lt;p&gt;For more information about expressions, refer to &lt;a href=&#34;#about-expressions&#34;&gt;About expressions&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the panel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Below the query, click &lt;strong&gt;Expression&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Operation&lt;/strong&gt; field, select the type of expression you want to write.&lt;/p&gt;
&lt;p&gt;For more information about expression operations, refer to &lt;a href=&#34;#about-expressions&#34;&gt;About expressions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Write the expression.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;special-cases&#34;&gt;Special cases&lt;/h2&gt;
&lt;p&gt;When any queried data source returns no series or numbers, the expression engine returns &lt;code&gt;NoData&lt;/code&gt;. For example, if a request contains two data source queries that are merged by an expression, if &lt;code&gt;NoData&lt;/code&gt; is returned by at least one of the data source queries, then the returned result for the entire query is &lt;code&gt;NoData&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For more information about how &lt;a href=&#34;../../../alerting/&#34;&gt;Grafana Alerting&lt;/a&gt; processes &lt;code&gt;NoData&lt;/code&gt; results, refer to &lt;a href=&#34;../../../alerting/alerting-rules/create-grafana-managed-rule/#no-data-and-error-handling&#34;&gt;No data and error handling&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the case of using an expression on multiple queries, the expression engine requires that all of the queries return an identical timestamp. For example, if using math to combine the results of multiple SQL queries which each use &lt;code&gt;SELECT NOW() AS &amp;quot;time&amp;quot;&lt;/code&gt;, the expression will only work if all queries evaluate &lt;code&gt;NOW()&lt;/code&gt; to an identical timestamp; which does not always happen. To resolve this, you can replace &lt;code&gt;NOW()&lt;/code&gt; with an arbitrary time, such as &lt;code&gt;SELECT 1 AS &amp;quot;time&amp;quot;&lt;/code&gt;, or any other valid UNIX timestamp.&lt;/p&gt;
]]></content><description>&lt;h1 id="write-expression-queries">Write expression queries&lt;/h1>
&lt;p>Server-side expressions enable you to manipulate data returned from queries with math and other operations. Expressions create new data and do not manipulate the data returned by data sources.&lt;/p></description></item><item><title>Share query results with another panel</title><link>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/share-query/</link><pubDate>Wed, 15 Apr 2026 05:03:08 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/share-query/</guid><content><![CDATA[&lt;h1 id=&#34;share-query-results-with-another-panel&#34;&gt;Share query results with another panel&lt;/h1&gt;
&lt;p&gt;Grafana lets you use the query result from one panel for any other panel in the dashboard. Sharing query results across panels reduces the number of queries made to your data source, which can improve the performance of your dashboard.&lt;/p&gt;
&lt;p&gt;The Dashboard data source lets you select a panel in your dashboard that contains the queries ‌you want to share the results for. Instead of sending a separate query for each panel, Grafana sends one query and other panels use the query results to construct visualizations.&lt;/p&gt;
&lt;p&gt;This strategy can drastically reduce the number of queries being made when you for example have several panels visualizing the same data.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../dashboards/build-dashboards/create-dashboard/&#34;&gt;Create a dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Change the title to &amp;ldquo;Source panel&amp;rdquo;. You&amp;rsquo;ll use this panel as a source for the other panels.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define the &lt;a href=&#34;../#add-a-query&#34;&gt;query&lt;/a&gt; or queries that you want share.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t have a data source available, use the &lt;strong&gt;Grafana&lt;/strong&gt; data source, which returns a random time series that you can use for testing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add a new panel and select the &lt;strong&gt;Dashboard&lt;/strong&gt; data source in the query editor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Use results from panel list&lt;/strong&gt;, select the first panel you created.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All queries defined in the source panel are now available to the new panel. Queries defined in the source panel can be shared with multiple panels.&lt;/p&gt;
&lt;p&gt;You can click on any of the queries to go to the panel where they are defined.&lt;/p&gt;
]]></content><description>&lt;h1 id="share-query-results-with-another-panel">Share query results with another panel&lt;/h1>
&lt;p>Grafana lets you use the query result from one panel for any other panel in the dashboard. Sharing query results across panels reduces the number of queries made to your data source, which can improve the performance of your dashboard.&lt;/p></description></item><item><title>Transform data</title><link>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/transform-data/</link><pubDate>Wed, 15 Apr 2026 05:03:08 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/transform-data/</guid><content><![CDATA[&lt;h1 id=&#34;transform-data&#34;&gt;Transform data&lt;/h1&gt;
&lt;p&gt;Transformations are a powerful way to manipulate data returned by a query before the system applies a visualization. Using transformations, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rename fields&lt;/li&gt;
&lt;li&gt;Join time series data&lt;/li&gt;
&lt;li&gt;Perform mathematical operations across queries&lt;/li&gt;
&lt;li&gt;Use the output of one transformation as the input to another transformation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For users that rely on multiple views of the same dataset, transformations offer an efficient method of creating and maintaining numerous dashboards.&lt;/p&gt;
&lt;p&gt;You can also use the output of one transformation as the input to another transformation, which results in a performance gain.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sometimes the system cannot graph transformed data. When that happens, click the &lt;code&gt;Table view&lt;/code&gt; toggle above the visualization to switch to a table view of the data. This can help you understand the final result of your transformations.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;transformation-types&#34;&gt;Transformation types&lt;/h2&gt;
&lt;p&gt;Grafana provides a number of ways that you can transform data. For a complete list of transformations, refer to &lt;a href=&#34;#transformation-functions&#34;&gt;Transformation functions&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;order-of-transformations&#34;&gt;Order of transformations&lt;/h2&gt;
&lt;p&gt;When there are multiple transformations, Grafana applies them in the order they are listed. Each transformation creates a result set that then passes on to the next transformation in the processing pipeline.&lt;/p&gt;
&lt;p&gt;The order in which Grafana applies transformations directly impacts the results. For example, if you use a Reduce transformation to condense all the results of one column into a single value, then you can only apply transformations to that single value.&lt;/p&gt;
&lt;h2 id=&#34;add-a-transformation-function-to-data&#34;&gt;Add a transformation function to data&lt;/h2&gt;
&lt;p&gt;The following steps guide you in adding a transformation to data. This documentation does not include steps for each type of transformation. For a complete list of transformations, refer to &lt;a href=&#34;#transformation-functions&#34;&gt;Transformation functions&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the panel where you want to add one or more transformations.&lt;/li&gt;
&lt;li&gt;Hover over any part of the panel to display the actions menu on the top right corner.&lt;/li&gt;
&lt;li&gt;Click the menu and select &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Transform&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click a transformation.
A transformation row appears where you configure the transformation options. For more information about how to configure a transformation, refer to &lt;a href=&#34;#transformation-functions&#34;&gt;Transformation functions&lt;/a&gt;.
For information about available calculations, refer to &lt;a href=&#34;../../calculation-types/&#34;&gt;Calculation types&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To apply another transformation, click &lt;strong&gt;Add transformation&lt;/strong&gt;.
This transformation acts on the result set returned by the previous transformation.
&lt;figure
       class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
       style=&#34;max-width: 1100px;&#34;
       itemprop=&#34;associatedMedia&#34;
       itemscope=&#34;&#34;
       itemtype=&#34;http://schema.org/ImageObject&#34;
     &gt;&lt;a
           class=&#34;lightbox-link&#34;
           href=&#34;/static/img/docs/transformations/transformations-7-0.png&#34;
           itemprop=&#34;contentUrl&#34;
         &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
             class=&#34;lazyload &#34;
             data-src=&#34;/static/img/docs/transformations/transformations-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/transformations-7-0.png?w=320 320w, /static/img/docs/transformations/transformations-7-0.png?w=550 550w, /static/img/docs/transformations/transformations-7-0.png?w=750 750w, /static/img/docs/transformations/transformations-7-0.png?w=900 900w, /static/img/docs/transformations/transformations-7-0.png?w=1040 1040w, /static/img/docs/transformations/transformations-7-0.png?w=1240 1240w, /static/img/docs/transformations/transformations-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1605&#34;height=&#34;354&#34;/&gt;
           &lt;noscript&gt;
             &lt;img
               src=&#34;/static/img/docs/transformations/transformations-7-0.png&#34;
               alt=&#34;&#34;width=&#34;1605&#34;height=&#34;354&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
           &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;debug-a-transformation&#34;&gt;Debug a transformation&lt;/h2&gt;
&lt;p&gt;To see the input and the output result sets of the transformation, click the bug icon on the right side of the transformation row.&lt;/p&gt;
&lt;p&gt;The input and output results sets can help you debug a transformation.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/debug-transformations-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/debug-transformations-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/debug-transformations-7-0.png?w=320 320w, /static/img/docs/transformations/debug-transformations-7-0.png?w=550 550w, /static/img/docs/transformations/debug-transformations-7-0.png?w=750 750w, /static/img/docs/transformations/debug-transformations-7-0.png?w=900 900w, /static/img/docs/transformations/debug-transformations-7-0.png?w=1040 1040w, /static/img/docs/transformations/debug-transformations-7-0.png?w=1240 1240w, /static/img/docs/transformations/debug-transformations-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1510&#34;height=&#34;762&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/debug-transformations-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1510&#34;height=&#34;762&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&#34;disable-a-transformation&#34;&gt;Disable a transformation&lt;/h2&gt;
&lt;p&gt;You can disable or hide one or more transformations by clicking on the eye icon on the top right side of the transformation row. This disables the applied actions of that specific transformation and can help to identify issues when you change several transformations one after another.&lt;/p&gt;
&lt;h2 id=&#34;filter-a-transformation&#34;&gt;Filter a transformation&lt;/h2&gt;
&lt;p&gt;If your panel uses more than one query, you can filter these and apply the selected transformation to only one of the queries. To do this, click the filter icon on the top right of the transformation row. This opens a drop-down with a list of queries used on the panel. From here, you can select the query you want to transform.&lt;/p&gt;
&lt;p&gt;Note that the filter icon is always displayed if your panel has more than one query, but it may not work if previous transformations for merging the queries&amp;rsquo; outputs are applied. This is because one transformation takes the output of the previous one.&lt;/p&gt;
&lt;h2 id=&#34;delete-a-transformation&#34;&gt;Delete a transformation&lt;/h2&gt;
&lt;p&gt;We recommend that you remove transformations that you don&amp;rsquo;t need. When you delete a transformation, you remove the data from the visualization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before you begin:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify all dashboards that rely on the transformation and inform impacted dashboard users.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;To delete a transformation&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open a panel for editing.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Transform&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click the trash icon next to the transformation you want to delete.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;transformation-functions&#34;&gt;Transformation functions&lt;/h2&gt;
&lt;p&gt;You can perform the following transformations on your data.&lt;/p&gt;
&lt;h3 id=&#34;add-field-from-calculation&#34;&gt;Add field from calculation&lt;/h3&gt;
&lt;p&gt;Use this transformation to add a new field calculated from two other fields. Each transformation allows you to add one new field.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode -&lt;/strong&gt; Select a mode:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reduce row -&lt;/strong&gt; Apply selected calculation on each row of selected fields independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Binary option -&lt;/strong&gt; Apply basic math operation(sum, multiply, etc) on values in a single row from two selected fields.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index -&lt;/strong&gt; Will insert a field with the row index.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Field name -&lt;/strong&gt; Select the names of fields you want to use in the calculation for the new field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculation -&lt;/strong&gt; If you select &lt;strong&gt;Reduce row&lt;/strong&gt; mode, then the &lt;strong&gt;Calculation&lt;/strong&gt; field appears. Click in the field to see a list of calculation choices you can use to create the new field. For information about available calculations, refer to &lt;a href=&#34;../../calculation-types/&#34;&gt;Calculation types&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operation -&lt;/strong&gt; If you select &lt;strong&gt;Binary option&lt;/strong&gt; mode, then the &lt;strong&gt;Operation&lt;/strong&gt; fields appear. These fields allow you to do basic math operations on values in a single row from two selected fields. You can also use numerical values for binary operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alias -&lt;/strong&gt; (Optional) Enter the name of your new field. If you leave this blank, then the field will be named to match the calculation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replace all fields -&lt;/strong&gt; (Optional) Select this option if you want to hide all other fields and display only your calculated field in the visualization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the example below, I added two fields together and named them Sum.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=320 320w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=550 550w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=750 750w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=900 900w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=1040 1040w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=1240 1240w, /static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1846&#34;height=&#34;962&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/add-field-from-calc-stat-example-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1846&#34;height=&#34;962&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;concatenate-fields&#34;&gt;Concatenate fields&lt;/h3&gt;
&lt;p&gt;This transformation combines all fields from all frames into one result. Consider:&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Temp&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;15.4&lt;/td&gt;
              &lt;td&gt;1230233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;AQI&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;3.2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;After you concatenate the fields, the data frame would be:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Temp&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
              &lt;th&gt;AQI&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;15.4&lt;/td&gt;
              &lt;td&gt;1230233&lt;/td&gt;
              &lt;td&gt;3.2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;config-from-query-results&#34;&gt;Config from query results&lt;/h3&gt;
&lt;p&gt;This transformation allow you to select one query and from it extract standard options like &lt;strong&gt;Min&lt;/strong&gt;, &lt;strong&gt;Max&lt;/strong&gt;, &lt;strong&gt;Unit&lt;/strong&gt; and &lt;strong&gt;Thresholds&lt;/strong&gt; and apply it to other query results. This enables dynamic query driven visualization configuration.&lt;/p&gt;
&lt;p&gt;If you want to extract a unique config for every row in the config query result then try the rows to fields transformation.&lt;/p&gt;
&lt;h4 id=&#34;options&#34;&gt;Options&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Config query&lt;/strong&gt;: Select the query that returns the data you want to use as configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply to&lt;/strong&gt;: Select what fields or series to apply the configuration to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply to options&lt;/strong&gt;: Usually a field type or field name regex depending on what option you selected in &lt;strong&gt;Apply to&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;convert-field-type&#34;&gt;Convert field type&lt;/h3&gt;
&lt;p&gt;This transformation changes the field type of the specified field.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Field -&lt;/strong&gt; Select from available fields&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;as -&lt;/strong&gt; Select the FieldType to convert to
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Numeric -&lt;/strong&gt; attempts to make the values numbers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;String -&lt;/strong&gt; will make the values strings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time -&lt;/strong&gt; attempts to parse the values as time
&lt;ul&gt;
&lt;li&gt;Will show an option to specify a DateFormat as input by a string like yyyy-mm-dd or DD MM YYYY hh:mm:ss&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boolean -&lt;/strong&gt; will make the values booleans&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example the following query could be modified by selecting the time field, as Time, and Date Format as YYYY.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Mark&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2017-07-01&lt;/td&gt;
              &lt;td&gt;above&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2018-08-02&lt;/td&gt;
              &lt;td&gt;below&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2019-09-02&lt;/td&gt;
              &lt;td&gt;below&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-10-04&lt;/td&gt;
              &lt;td&gt;above&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The result:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Mark&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2017-01-01 00:00:00&lt;/td&gt;
              &lt;td&gt;above&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2018-01-01 00:00:00&lt;/td&gt;
              &lt;td&gt;below&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2019-01-01 00:00:00&lt;/td&gt;
              &lt;td&gt;below&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-01-01 00:00:00&lt;/td&gt;
              &lt;td&gt;above&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;create-heatmap&#34;&gt;Create heatmap&lt;/h3&gt;
&lt;p&gt;Use this transformation to prepare histogram data to be visualized over time. Similar to the &lt;a href=&#34;../../visualizations/heatmap/&#34;&gt;Heatmap panel&lt;/a&gt;, this transformation allows you to convert histogram metrics to buckets over time.&lt;/p&gt;
&lt;h4 id=&#34;x-bucket&#34;&gt;X Bucket&lt;/h4&gt;
&lt;p&gt;This setting determines how the x-axis is split into buckets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Size&lt;/strong&gt; - Specify a time interval in the input field. For example, a time range of &lt;code&gt;1h&lt;/code&gt; makes the cells one hour wide on the x-axis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Count&lt;/strong&gt; - For non-time related series, use this option to define the number of elements in a bucket.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;y-bucket&#34;&gt;Y Bucket&lt;/h4&gt;
&lt;p&gt;This setting determines how the y-axis is split into buckets.&lt;/p&gt;
&lt;h4 id=&#34;y-bucket-scale&#34;&gt;Y Bucket scale&lt;/h4&gt;
&lt;p&gt;Use this option to set the scale of the y-axes. Select from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linear&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logarithmic&lt;/strong&gt; - Use a base 2 or base 10.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Symlog&lt;/strong&gt; - A symmetrical logarithmic scale. Use a base 2 or base 10; allows negative values.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;extract-fields&#34;&gt;Extract fields&lt;/h3&gt;
&lt;p&gt;Use this transformation to select one source of data and extract content from it in different formats. Set the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source&lt;/strong&gt; - Select the field for the source of data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Format&lt;/strong&gt; - Select one of the following:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON&lt;/strong&gt; - To parse JSON content from the source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key&#43;value parse&lt;/strong&gt; - To parse content in the format &lt;code&gt;a=b&lt;/code&gt; or &lt;code&gt;c:d&lt;/code&gt; from the source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto&lt;/strong&gt; - To discover fields automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replace all fields&lt;/strong&gt; - Optional: Select this option if you want to hide all other fields and display only your calculated field in the visualization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep time&lt;/strong&gt; - Optional: Only available if &lt;strong&gt;Replace all fields&lt;/strong&gt; is true. Keep the time field in the output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consider the following data set:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Timestamp&lt;/th&gt;
              &lt;th&gt;json_data&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678740000000000&lt;/td&gt;
              &lt;td&gt;{&amp;ldquo;value&amp;rdquo;: 1}&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678680000000000&lt;/td&gt;
              &lt;td&gt;{&amp;ldquo;value&amp;rdquo;: 5}&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678620000000000&lt;/td&gt;
              &lt;td&gt;{&amp;ldquo;value&amp;rdquo;: 12}&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;You could prepare the data to be used by a &lt;a href=&#34;../../visualizations/time-series/&#34;&gt;Time series panel&lt;/a&gt; with this configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Source: json_data&lt;/li&gt;
&lt;li&gt;Format: JSON
&lt;ul&gt;
&lt;li&gt;Field: value&lt;/li&gt;
&lt;li&gt;alias: my_value&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Replace all fields: true&lt;/li&gt;
&lt;li&gt;Keep time: true&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will generate the following output:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Timestamp&lt;/th&gt;
              &lt;th&gt;my_value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678740000000000&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678680000000000&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;1636678620000000000&lt;/td&gt;
              &lt;td&gt;12&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;field-lookup&#34;&gt;Field lookup&lt;/h3&gt;
&lt;p&gt;Use this transformation on a field value to look up additional fields from an external source.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Field&lt;/strong&gt; - Select a text field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lookup&lt;/strong&gt; - Select from &lt;strong&gt;Countries&lt;/strong&gt;, &lt;strong&gt;USA States&lt;/strong&gt;, and &lt;strong&gt;Airports&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This transformation currently supports spatial data.&lt;/p&gt;
&lt;p&gt;For example, if you have this data:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Location&lt;/th&gt;
              &lt;th&gt;Values&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;AL&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;AK&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Arizona&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Arkansas&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Somewhere&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;With this configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Field: location&lt;/li&gt;
&lt;li&gt;Lookup: USA States&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&amp;rsquo;ll get the following output:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Location&lt;/th&gt;
              &lt;th&gt;ID&lt;/th&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Lng&lt;/th&gt;
              &lt;th&gt;Lat&lt;/th&gt;
              &lt;th&gt;Values&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;AL&lt;/td&gt;
              &lt;td&gt;AL&lt;/td&gt;
              &lt;td&gt;Alabama&lt;/td&gt;
              &lt;td&gt;-80.891064&lt;/td&gt;
              &lt;td&gt;12.448457&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;AK&lt;/td&gt;
              &lt;td&gt;AK&lt;/td&gt;
              &lt;td&gt;Arkansas&lt;/td&gt;
              &lt;td&gt;-100.891064&lt;/td&gt;
              &lt;td&gt;24.448457&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Arizona&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Arkansas&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Somewhere&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;filter-by-name&#34;&gt;Filter by name&lt;/h3&gt;
&lt;p&gt;Use this transformation to remove portions of the query results.&lt;/p&gt;
&lt;p&gt;Grafana displays the &lt;strong&gt;Identifier&lt;/strong&gt; field, followed by the fields returned by your query.&lt;/p&gt;
&lt;p&gt;You can apply filters in one of two ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enter a regex expression.&lt;/li&gt;
&lt;li&gt;Click a field to toggle filtering on that field. Filtered fields are displayed with dark gray text, unfiltered fields have white text.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the example below, I removed the Min field from the results.&lt;/p&gt;
&lt;p&gt;Here is the original query table. (This is streaming data, so numbers change over time and between screenshots.)&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/filter-name-table-before-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/filter-name-table-before-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/filter-name-table-before-7-0.png?w=320 320w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=550 550w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=750 750w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=900 900w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=1040 1040w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=1240 1240w, /static/img/docs/transformations/filter-name-table-before-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1181&#34;height=&#34;338&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/filter-name-table-before-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1181&#34;height=&#34;338&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Here is the table after I applied the transformation to remove the Min field.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/filter-name-table-after-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/filter-name-table-after-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/filter-name-table-after-7-0.png?w=320 320w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=550 550w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=750 750w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=900 900w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=1040 1040w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=1240 1240w, /static/img/docs/transformations/filter-name-table-after-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1545&#34;height=&#34;680&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/filter-name-table-after-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1545&#34;height=&#34;680&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Here is the same query using a Stat visualization.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/filter-name-stat-after-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/filter-name-stat-after-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/filter-name-stat-after-7-0.png?w=320 320w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=550 550w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=750 750w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=900 900w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=1040 1040w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=1240 1240w, /static/img/docs/transformations/filter-name-stat-after-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1830&#34;height=&#34;730&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/filter-name-stat-after-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1830&#34;height=&#34;730&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;filter-data-by-query&#34;&gt;Filter data by query&lt;/h3&gt;
&lt;p&gt;Use this transformation in panels that have multiple queries, if you want to hide one or more of the queries.&lt;/p&gt;
&lt;p&gt;Grafana displays the query identification letters in dark gray text. Click a query identifier to toggle filtering. If the query letter is white, then the results are displayed. If the query letter is dark, then the results are hidden.&lt;/p&gt;
&lt;p&gt;In the example below, the panel has three queries (A, B, C). I removed the B query from the visualization.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/filter-by-query-stat-example-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/filter-by-query-stat-example-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=320 320w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=550 550w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=750 750w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=900 900w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=1040 1040w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=1240 1240w, /static/img/docs/transformations/filter-by-query-stat-example-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1841&#34;height=&#34;672&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/filter-by-query-stat-example-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1841&#34;height=&#34;672&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This transformation is not available for Graphite because this data source does not support correlating returned data with queries.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;filter-data-by-value&#34;&gt;Filter data by value&lt;/h3&gt;
&lt;p&gt;This transformation allows you to filter your data directly in Grafana and remove some data points from your query result. You have the option to include or exclude data that match one or more conditions you define. The conditions are applied on a selected field.&lt;/p&gt;
&lt;p&gt;This transformation is very useful if your data source does not natively filter by values. You might also use this to narrow values to display if you are using a shared query.&lt;/p&gt;
&lt;p&gt;The available conditions for all fields are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Regex:&lt;/strong&gt; Match a regex expression&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is Null:&lt;/strong&gt; Match if the value is null&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is Not Null:&lt;/strong&gt; Match if the value is not null&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equal:&lt;/strong&gt; Match if the value is equal to the specified value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different:&lt;/strong&gt; match if the value is different than the specified value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The available conditions for number fields are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Greater:&lt;/strong&gt; Match if the value is greater than the specified value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lower:&lt;/strong&gt; Match if the value is lower than the specified value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Greater or equal:&lt;/strong&gt; Match if the value is greater or equal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lower or equal:&lt;/strong&gt; Match if the value is lower or equal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Range:&lt;/strong&gt; Match a range between a specified minimum and maximum, min and max included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consider the following data set:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Temperature&lt;/th&gt;
              &lt;th&gt;Altitude&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:23&lt;/td&gt;
              &lt;td&gt;32&lt;/td&gt;
              &lt;td&gt;101&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:22&lt;/td&gt;
              &lt;td&gt;28&lt;/td&gt;
              &lt;td&gt;125&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:21&lt;/td&gt;
              &lt;td&gt;26&lt;/td&gt;
              &lt;td&gt;110&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;23&lt;/td&gt;
              &lt;td&gt;98&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:24&lt;/td&gt;
              &lt;td&gt;31&lt;/td&gt;
              &lt;td&gt;95&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;85&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;19&lt;/td&gt;
              &lt;td&gt;101&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;If you &lt;strong&gt;Include&lt;/strong&gt; the data points that have a temperature below 30°C, the configuration will look as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Filter Type: &lt;code&gt;Include&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Condition: Rows where &lt;code&gt;Temperature&lt;/code&gt; matches &lt;code&gt;Lower Than&lt;/code&gt; &lt;code&gt;30&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And you will get the following result, where only the temperatures below 30°C are included:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Temperature&lt;/th&gt;
              &lt;th&gt;Altitude&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:22&lt;/td&gt;
              &lt;td&gt;28&lt;/td&gt;
              &lt;td&gt;125&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:21&lt;/td&gt;
              &lt;td&gt;26&lt;/td&gt;
              &lt;td&gt;110&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;23&lt;/td&gt;
              &lt;td&gt;98&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;85&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;19&lt;/td&gt;
              &lt;td&gt;101&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;You can add more than one condition to the filter. For example, you might want to include the data only if the altitude is greater than 100. To do so, add that condition to the following configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Filter type: &lt;code&gt;Include&lt;/code&gt; rows that &lt;code&gt;Match All&lt;/code&gt; conditions&lt;/li&gt;
&lt;li&gt;Condition 1: Rows where &lt;code&gt;Temperature&lt;/code&gt; matches &lt;code&gt;Lower&lt;/code&gt; than &lt;code&gt;30&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Condition 2: Rows where &lt;code&gt;Altitude&lt;/code&gt; matches &lt;code&gt;Greater&lt;/code&gt; than &lt;code&gt;100&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you have more than one condition, you can choose if you want the action (include / exclude) to be applied on rows that &lt;strong&gt;Match all&lt;/strong&gt; conditions or &lt;strong&gt;Match any&lt;/strong&gt; of the conditions you added.&lt;/p&gt;
&lt;p&gt;In the example above we chose &lt;strong&gt;Match all&lt;/strong&gt; because we wanted to include the rows that have a temperature lower than 30 &lt;em&gt;AND&lt;/em&gt; an altitude higher than 100. If we wanted to include the rows that have a temperature lower than 30 &lt;em&gt;OR&lt;/em&gt; an altitude higher than 100 instead, then we would select &lt;strong&gt;Match any&lt;/strong&gt;. This would include the first row in the original data, which has a temperature of 32°C (does not match the first condition) but an altitude of 101 (which matches the second condition), so it is included.&lt;/p&gt;
&lt;p&gt;Conditions that are invalid or incompletely configured are ignored.&lt;/p&gt;
&lt;h3 id=&#34;group-by&#34;&gt;Group by&lt;/h3&gt;
&lt;p&gt;This transformation groups the data by a specified field (column) value and processes calculations on each group. Click to see a list of calculation choices. For information about available calculations, refer to &lt;a href=&#34;../../calculation-types/&#34;&gt;Calculation types&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example of original data.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server ID&lt;/th&gt;
              &lt;th&gt;CPU Temperature&lt;/th&gt;
              &lt;th&gt;Server Status&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;80&lt;/td&gt;
              &lt;td&gt;Shutdown&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;62&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;90&lt;/td&gt;
              &lt;td&gt;Overload&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;55&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;62&lt;/td&gt;
              &lt;td&gt;Rebooting&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:05&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:28:06&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;80&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:25:05&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:23:07&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;86&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;This transformation goes in two steps. First you specify one or multiple fields to group the data by. This will group all the same values of those fields together, as if you sorted them. For instance if we group by the Server ID field, then it would group the data this way:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server ID&lt;/th&gt;
              &lt;th&gt;CPU Temperature&lt;/th&gt;
              &lt;th&gt;Server Status&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;server 1&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;80&lt;/td&gt;
              &lt;td&gt;Shutdown&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:28:06&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;server 1&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;80&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:23:07&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;server 1&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;86&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;90&lt;/td&gt;
              &lt;td&gt;Overload&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:05&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:25:05&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;&lt;em&gt;server 3&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;62&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;&lt;em&gt;server 3&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;55&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;&lt;em&gt;server 3&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;62&lt;/td&gt;
              &lt;td&gt;Rebooting&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;All rows with the same value of Server ID are grouped together.&lt;/p&gt;
&lt;p&gt;After choosing which field you want to group your data by, you can add various calculations on the other fields, and apply the calculation to each group of rows. For instance, we could want to calculate the average CPU temperature for each of those servers. So we can add the &lt;em&gt;mean&lt;/em&gt; calculation applied on the CPU Temperature field to get the following:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Server ID&lt;/th&gt;
              &lt;th&gt;CPU Temperature (mean)&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;82&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88.6&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;59.6&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;And we can add more than one calculation. For instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For field Time, we can calculate the &lt;em&gt;Last&lt;/em&gt; value, to know when the last data point was received for each server&lt;/li&gt;
&lt;li&gt;For field Server Status, we can calculate the &lt;em&gt;Last&lt;/em&gt; value to know what is the last state value for each server&lt;/li&gt;
&lt;li&gt;For field Temperature, we can also calculate the &lt;em&gt;Last&lt;/em&gt; value to know what is the latest monitored temperature for each server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We would then get :&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Server ID&lt;/th&gt;
              &lt;th&gt;CPU Temperature (mean)&lt;/th&gt;
              &lt;th&gt;CPU Temperature (last)&lt;/th&gt;
              &lt;th&gt;Time (last)&lt;/th&gt;
              &lt;th&gt;Server Status (last)&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;82&lt;/td&gt;
              &lt;td&gt;80&lt;/td&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Shutdown&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88.6&lt;/td&gt;
              &lt;td&gt;90&lt;/td&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;Overload&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;59.6&lt;/td&gt;
              &lt;td&gt;62&lt;/td&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;This transformation enables you to extract key information from your time series and display it in a convenient way.&lt;/p&gt;
&lt;h3 id=&#34;grouping-to-matrix&#34;&gt;Grouping to matrix&lt;/h3&gt;
&lt;p&gt;Use this transformation to combine three fields-that will be used as input for the &lt;strong&gt;Column&lt;/strong&gt;, &lt;strong&gt;Row&lt;/strong&gt;, and &lt;strong&gt;Cell value&lt;/strong&gt; fields-from the query output, and generate a matrix. This matrix will be calculated as follows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Original data&lt;/strong&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Server ID&lt;/th&gt;
              &lt;th&gt;CPU Temperature&lt;/th&gt;
              &lt;th&gt;Server Status&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;82&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88.6&lt;/td&gt;
              &lt;td&gt;OK&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;59.6&lt;/td&gt;
              &lt;td&gt;Shutdown&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;We can generate a matrix using the values of &lt;code&gt;Server Status&lt;/code&gt; as column names, the &lt;code&gt;Server ID&lt;/code&gt; values as row names, and the &lt;code&gt;CPU Temperature&lt;/code&gt; as content of each cell. The content of each cell will appear for the existing column (&lt;code&gt;Server Status&lt;/code&gt;) and row combination (&lt;code&gt;Server ID&lt;/code&gt;). For the rest of the cells, you can select which value to display between: &lt;strong&gt;Null&lt;/strong&gt;, &lt;strong&gt;True&lt;/strong&gt;, &lt;strong&gt;False&lt;/strong&gt;, or &lt;strong&gt;Empty&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Server ID\Server Status&lt;/th&gt;
              &lt;th&gt;OK&lt;/th&gt;
              &lt;th&gt;Shutdown&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;82&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;88.6&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;59.6&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;histogram&#34;&gt;Histogram&lt;/h3&gt;
&lt;p&gt;Use this transformation to generate a histogram based on the input data.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bucket size&lt;/strong&gt; - The distance between the lowest item in the bucket (xMin) and the highest item in the bucket (xMax).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bucket offset&lt;/strong&gt; - The offset for non-zero based buckets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combine series&lt;/strong&gt; - Create a histogram using all the available series.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Original data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Series 1:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;A&lt;/th&gt;
              &lt;th&gt;B&lt;/th&gt;
              &lt;th&gt;C&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;3&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;4&lt;/td&gt;
              &lt;td&gt;6&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;3&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
              &lt;td&gt;7&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;4&lt;/td&gt;
              &lt;td&gt;6&lt;/td&gt;
              &lt;td&gt;8&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;5&lt;/td&gt;
              &lt;td&gt;7&lt;/td&gt;
              &lt;td&gt;9&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Series 2:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;C&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;6&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;7&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;8&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;9&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;xMin&lt;/th&gt;
              &lt;th&gt;xMax&lt;/th&gt;
              &lt;th&gt;A&lt;/th&gt;
              &lt;th&gt;B&lt;/th&gt;
              &lt;th&gt;C&lt;/th&gt;
              &lt;th&gt;C&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;3&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;3&lt;/td&gt;
              &lt;td&gt;4&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;4&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;5&lt;/td&gt;
              &lt;td&gt;6&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;6&lt;/td&gt;
              &lt;td&gt;7&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;7&lt;/td&gt;
              &lt;td&gt;8&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;8&lt;/td&gt;
              &lt;td&gt;9&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;9&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;0&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;join-by-field&#34;&gt;Join by field&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h4 id=&#34;inner-join&#34;&gt;Inner join&lt;/h4&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;In the following example, two queries return table data. It is visualized as two separate tables before applying the inner join transformation.&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:14:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;345001233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:04:20&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The result after applying the inner join transformation looks like the following:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;outer-join&#34;&gt;Outer join&lt;/h4&gt;
&lt;p&gt;An outer join includes all data from an inner join and rows where values do not match in every input. While the inner join joins Query A and Query B on the time field, the outer join includes all rows that don’t match on the time field.&lt;/p&gt;
&lt;p&gt;In the following example, two queries return table data. It is visualized as two tables before applying the outer join transformation.&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:14:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;345001233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:04:20&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The result after applying the outer join transformation looks like the following:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:04:20&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;server 3&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:14:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;345001233&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
              &lt;td&gt;server 1&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
              &lt;td&gt;server 2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;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.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/join-fields-before-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/join-fields-before-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/join-fields-before-7-0.png?w=320 320w, /static/img/docs/transformations/join-fields-before-7-0.png?w=550 550w, /static/img/docs/transformations/join-fields-before-7-0.png?w=750 750w, /static/img/docs/transformations/join-fields-before-7-0.png?w=900 900w, /static/img/docs/transformations/join-fields-before-7-0.png?w=1040 1040w, /static/img/docs/transformations/join-fields-before-7-0.png?w=1240 1240w, /static/img/docs/transformations/join-fields-before-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1283&#34;height=&#34;583&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/join-fields-before-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1283&#34;height=&#34;583&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;I applied a transformation to join the query results using the time field. Now I can run calculations, combine, and organize the results in this new table.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/join-fields-after-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/join-fields-after-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/join-fields-after-7-0.png?w=320 320w, /static/img/docs/transformations/join-fields-after-7-0.png?w=550 550w, /static/img/docs/transformations/join-fields-after-7-0.png?w=750 750w, /static/img/docs/transformations/join-fields-after-7-0.png?w=900 900w, /static/img/docs/transformations/join-fields-after-7-0.png?w=1040 1040w, /static/img/docs/transformations/join-fields-after-7-0.png?w=1240 1240w, /static/img/docs/transformations/join-fields-after-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1236&#34;height=&#34;641&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/join-fields-after-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1236&#34;height=&#34;641&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;join-by-labels&#34;&gt;Join by labels&lt;/h3&gt;
&lt;p&gt;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 &lt;strong&gt;Label&lt;/strong&gt; field.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Join&lt;/strong&gt; - Select the label to join by between the labels available or common across all time series.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Value&lt;/strong&gt; - The name for the output result.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;example&#34;&gt;Example&lt;/h4&gt;
&lt;h5 id=&#34;input&#34;&gt;Input&lt;/h5&gt;
&lt;p&gt;serie1{what=&amp;ldquo;Temp&amp;rdquo;, cluster=&amp;ldquo;A&amp;rdquo;, job=&amp;ldquo;J1&amp;rdquo;}&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;serie2{what=&amp;ldquo;Temp&amp;rdquo;, cluster=&amp;ldquo;B&amp;rdquo;, job=&amp;ldquo;J1&amp;rdquo;}&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;serie3{what=&amp;ldquo;Speed&amp;rdquo;, cluster=&amp;ldquo;B&amp;rdquo;, job=&amp;ldquo;J1&amp;rdquo;}&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;22&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;28&lt;/td&gt;
              &lt;td&gt;77&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h5 id=&#34;config&#34;&gt;Config&lt;/h5&gt;
&lt;p&gt;value: &amp;ldquo;what&amp;rdquo;&lt;/p&gt;
&lt;h5 id=&#34;output&#34;&gt;Output&lt;/h5&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;cluster&lt;/th&gt;
              &lt;th&gt;job&lt;/th&gt;
              &lt;th&gt;Temp&lt;/th&gt;
              &lt;th&gt;Speed&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;A&lt;/td&gt;
              &lt;td&gt;J1&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;A&lt;/td&gt;
              &lt;td&gt;J1&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;B&lt;/td&gt;
              &lt;td&gt;J1&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;B&lt;/td&gt;
              &lt;td&gt;J1&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
              &lt;td&gt;77&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;labels-to-fields&#34;&gt;Labels to fields&lt;/h3&gt;
&lt;p&gt;This transformation changes time series results that include labels or tags into a table where each label keys and values are included in the table result. The labels can be displayed either as columns or as row values.&lt;/p&gt;
&lt;p&gt;Given a query result of two time series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Series 1: labels Server=Server A, Datacenter=EU&lt;/li&gt;
&lt;li&gt;Series 2: labels Server=Server B, Datacenter=EU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In &amp;ldquo;Columns&amp;rdquo; mode, the result looks like this:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Datacenter&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Server A&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Server B&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;2&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;In &amp;ldquo;Rows&amp;rdquo; mode, the result has a table for each series and show each label value like this:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;label&lt;/th&gt;
              &lt;th&gt;value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Server&lt;/td&gt;
              &lt;td&gt;Server A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Datacenter&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;label&lt;/th&gt;
              &lt;th&gt;value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Server&lt;/td&gt;
              &lt;td&gt;Server B&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Datacenter&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;value-field-name&#34;&gt;Value field name&lt;/h4&gt;
&lt;p&gt;If you selected Server as the &lt;strong&gt;Value field name&lt;/strong&gt;, then you would get one field for every value of the Server label.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Datacenter&lt;/th&gt;
              &lt;th&gt;Server A&lt;/th&gt;
              &lt;th&gt;Server B&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;2&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;merging-behavior&#34;&gt;Merging behavior&lt;/h4&gt;
&lt;p&gt;The labels to fields transformer is internally two separate transformations. The first acts on single series and extracts labels to fields. The second is the &lt;a href=&#34;#merge&#34;&gt;merge&lt;/a&gt; transformation that joins all the results into a single table. The merge transformation tries to join on all matching fields. This merge step is required and cannot be turned off.&lt;/p&gt;
&lt;p&gt;To illustrate this, here is an example where you have two queries that return time series with no overlapping labels.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Series 1: labels Server=ServerA&lt;/li&gt;
&lt;li&gt;Series 2: labels Datacenter=EU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will first result in these two tables:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;ServerA&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Datacenter&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;After merge:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Server&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
              &lt;th&gt;Datacenter&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;ServerA&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;merge&#34;&gt;Merge&lt;/h3&gt;
&lt;p&gt;Use this transformation to combine the result from multiple queries into one single result. This is helpful when using the table panel visualization. Values that can be merged are combined into the same row. Values are mergeable if the shared fields contain the same data. For information, refer to &lt;a href=&#34;../../visualizations/table/&#34;&gt;Table panel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the example below, we have two queries returning table data. It is visualized as two separate tables before applying the transformation.&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Here is the result after applying the Merge transformation.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Job&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;node&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
              &lt;td&gt;25260122&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;postgre&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
              &lt;td&gt;123001233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;organize-fields&#34;&gt;Organize fields&lt;/h3&gt;
&lt;p&gt;Use this transformation to rename, reorder, or hide fields returned by the query.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This transformation only works in panels with a single query. If your panel has multiple queries, then you must either apply an Outer join transformation or remove the extra queries.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Grafana displays a list of fields returned by the query. You can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change field order by hovering your cursor over a field. The cursor turns into a hand and then you can drag the field to its new place.&lt;/li&gt;
&lt;li&gt;Hide or show a field by clicking the eye icon next to the field name.&lt;/li&gt;
&lt;li&gt;Rename fields by typing a new name in the &lt;strong&gt;Rename &lt;field&gt;&lt;/strong&gt; box.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the example below, I hid the value field and renamed Max and Min.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/organize-fields-stat-example-7-0.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/organize-fields-stat-example-7-0.png&#34;data-srcset=&#34;/static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=320 320w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=550 550w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=750 750w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=900 900w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=1040 1040w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=1240 1240w, /static/img/docs/transformations/organize-fields-stat-example-7-0.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1858&#34;height=&#34;892&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/organize-fields-stat-example-7-0.png&#34;
            alt=&#34;&#34;width=&#34;1858&#34;height=&#34;892&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;partition-by-values&#34;&gt;Partition by values&lt;/h3&gt;
&lt;p&gt;This transformation can help eliminate the need for multiple queries to the same datasource with different &lt;code&gt;WHERE&lt;/code&gt; clauses when graphing multiple series. Consider a metrics SQL table with the following data:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Region&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 12:00:00&lt;/td&gt;
              &lt;td&gt;US&lt;/td&gt;
              &lt;td&gt;1520&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 12:00:00&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;2936&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 01:00:00&lt;/td&gt;
              &lt;td&gt;US&lt;/td&gt;
              &lt;td&gt;1327&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 01:00:00&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;912&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Prior to v9.3, if you wanted to plot a red trendline for US and a blue one for EU in the same TimeSeries panel, you would likely have to split this into two queries:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT Time, Value FROM metrics WHERE Time &amp;gt; &#39;2022-10-20&#39; AND Region=&#39;US&#39;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;SELECT Time, Value FROM metrics WHERE Time &amp;gt; &#39;2022-10-20&#39; AND Region=&#39;EU&#39;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This also requires you to know ahead of time which regions actually exist in the metrics table.&lt;/p&gt;
&lt;p&gt;With the &lt;em&gt;Partition by values&lt;/em&gt; transformer, you can now issue a single query and split the results by unique values in one or more columns (&lt;code&gt;fields&lt;/code&gt;) of your choosing. The following example uses &lt;code&gt;Region&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SELECT Time, Region, Value FROM metrics WHERE Time &amp;gt; &#39;2022-10-20&#39;&lt;/code&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Region&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 12:00:00&lt;/td&gt;
              &lt;td&gt;US&lt;/td&gt;
              &lt;td&gt;1520&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 01:00:00&lt;/td&gt;
              &lt;td&gt;US&lt;/td&gt;
              &lt;td&gt;1327&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Region&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 12:00:00&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;2936&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2022-10-20 01:00:00&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;912&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;reduce&#34;&gt;Reduce&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;Reduce&lt;/em&gt; transformation applies a calculation to each field in the frame and return a single value. Time fields are removed when applying this transformation.&lt;/p&gt;
&lt;p&gt;Consider the input:&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Temp&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;12.3&lt;/td&gt;
              &lt;td&gt;256122&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;15.4&lt;/td&gt;
              &lt;td&gt;1230233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;AQI&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;6.5&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:24:20&lt;/td&gt;
              &lt;td&gt;3.2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The reduce transformer has two modes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Series to rows -&lt;/strong&gt; Creates a row for each field and a column for each calculation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduce fields -&lt;/strong&gt; Keeps the existing frame structure, but collapses each field into a single value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if you used the &lt;strong&gt;First&lt;/strong&gt; and &lt;strong&gt;Last&lt;/strong&gt; calculation with a &lt;strong&gt;Series to rows&lt;/strong&gt; transformation, then
the result would be:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Field&lt;/th&gt;
              &lt;th&gt;First&lt;/th&gt;
              &lt;th&gt;Last&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Temp&lt;/td&gt;
              &lt;td&gt;12.3&lt;/td&gt;
              &lt;td&gt;15.4&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Uptime&lt;/td&gt;
              &lt;td&gt;256122&lt;/td&gt;
              &lt;td&gt;1230233&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;AQI&lt;/td&gt;
              &lt;td&gt;6.5&lt;/td&gt;
              &lt;td&gt;3.2&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Errors&lt;/td&gt;
              &lt;td&gt;15&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The &lt;strong&gt;Reduce fields&lt;/strong&gt; with the &lt;strong&gt;Last&lt;/strong&gt; calculation,
results in two frames, each with one row:&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Temp&lt;/th&gt;
              &lt;th&gt;Uptime&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;15.4&lt;/td&gt;
              &lt;td&gt;1230233&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;AQI&lt;/th&gt;
              &lt;th&gt;Errors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;3.2&lt;/td&gt;
              &lt;td&gt;5&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;rename-by-regex&#34;&gt;Rename by regex&lt;/h3&gt;
&lt;p&gt;Use this transformation to rename parts of the query results using a regular expression and replacement pattern.&lt;/p&gt;
&lt;p&gt;You can specify a regular expression, which is only applied to matches, along with a replacement pattern that support back references. For example, let&amp;rsquo;s imagine you&amp;rsquo;re visualizing CPU usage per host and you want to remove the domain name. You could set the regex to &lt;code&gt;([^\.]&#43;)\..&#43;&lt;/code&gt; and the replacement pattern to &lt;code&gt;$1&lt;/code&gt;, &lt;code&gt;web-01.example.com&lt;/code&gt; would become &lt;code&gt;web-01&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the following example, we are stripping the prefix from event types. In the before image, you can see everything is prefixed with &lt;code&gt;system.&lt;/code&gt;&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/rename-by-regex-before-7-3.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/rename-by-regex-before-7-3.png&#34;data-srcset=&#34;/static/img/docs/transformations/rename-by-regex-before-7-3.png?w=320 320w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=550 550w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=750 750w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=900 900w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=1040 1040w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=1240 1240w, /static/img/docs/transformations/rename-by-regex-before-7-3.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;2734&#34;height=&#34;584&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/rename-by-regex-before-7-3.png&#34;
            alt=&#34;&#34;width=&#34;2734&#34;height=&#34;584&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;With the transformation applied, you can see we are left with just the remainder of the string.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 1100px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/transformations/rename-by-regex-after-7-3.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/transformations/rename-by-regex-after-7-3.png&#34;data-srcset=&#34;/static/img/docs/transformations/rename-by-regex-after-7-3.png?w=320 320w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=550 550w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=750 750w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=900 900w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=1040 1040w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=1240 1240w, /static/img/docs/transformations/rename-by-regex-after-7-3.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;2734&#34;height=&#34;1070&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/transformations/rename-by-regex-after-7-3.png&#34;
            alt=&#34;&#34;width=&#34;2734&#34;height=&#34;1070&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;rows-to-fields&#34;&gt;Rows to fields&lt;/h3&gt;
&lt;p&gt;The rows to fields transformation converts rows into separate fields. This can be useful as fields can be styled and configured individually. It can also use additional fields as sources for dynamic field configuration or map them to field labels. The additional labels can then be used to define better display names for the resulting fields.&lt;/p&gt;
&lt;p&gt;This transformation includes a field table which lists all fields in the data returned by the config query. This table gives you control over what field should be mapped to each config property (the *Use as** option). You can also choose which value to select if there are multiple rows in the returned data.&lt;/p&gt;
&lt;p&gt;This transformation requires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;One field to use as the source of field names.&lt;/p&gt;
&lt;p&gt;By default, the transform uses the first string field as the source. You can override this default setting by selecting &lt;strong&gt;Field name&lt;/strong&gt; in the &lt;strong&gt;Use as&lt;/strong&gt; column for the field you want to use instead.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One field to use as the source of values.&lt;/p&gt;
&lt;p&gt;By default, the transform uses the first number field as the source. But you can override this default setting by selecting &lt;strong&gt;Field value&lt;/strong&gt; in the &lt;strong&gt;Use as&lt;/strong&gt; column for the field you want to use instead.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Useful when visualizing data in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gauge&lt;/li&gt;
&lt;li&gt;Stat&lt;/li&gt;
&lt;li&gt;Pie chart&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;map-extra-fields-to-labels&#34;&gt;Map extra fields to labels&lt;/h4&gt;
&lt;p&gt;If a field does not map to config property Grafana will automatically use it as source for a label on the output field-&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;DataCenter&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;ServerA&lt;/td&gt;
              &lt;td&gt;US&lt;/td&gt;
              &lt;td&gt;100&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ServerB&lt;/td&gt;
              &lt;td&gt;EU&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;ServerA (labels: DataCenter: US)&lt;/th&gt;
              &lt;th&gt;ServerB (labels: DataCenter: EU)&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The extra labels can now be used in the field display name provide more complete field names.&lt;/p&gt;
&lt;p&gt;If you want to extract config from one query and apply it to another you should use the config from query results transformation.&lt;/p&gt;
&lt;h4 id=&#34;example-1&#34;&gt;Example&lt;/h4&gt;
&lt;p&gt;Input:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
              &lt;th&gt;Max&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;ServerA&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;100&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ServerB&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;200&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ServerC&lt;/td&gt;
              &lt;td&gt;30&lt;/td&gt;
              &lt;td&gt;300&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;ServerA (config: max=100)&lt;/th&gt;
              &lt;th&gt;ServerB (config: max=200)&lt;/th&gt;
              &lt;th&gt;ServerC (config: max=300)&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;30&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;As you can see each row in the source data becomes a separate field. Each field now also has a max config option set. Options like &lt;strong&gt;Min&lt;/strong&gt;, &lt;strong&gt;Max&lt;/strong&gt;, &lt;strong&gt;Unit&lt;/strong&gt; and &lt;strong&gt;Thresholds&lt;/strong&gt; are all part of field configuration and if set like this will be used by the visualization instead of any options manually configured in the panel editor options pane.&lt;/p&gt;
&lt;h3 id=&#34;prepare-time-series&#34;&gt;Prepare time series&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This transformation is available in Grafana 7.5.10&#43; and Grafana 8.0.6&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Prepare time series transformation is useful when a data source returns time series data in a format that isn&amp;rsquo;t supported by the panel you want to use. For more information about data frame formats, refer to &lt;a href=&#34;/developers/plugin-tools/introduction/data-frames&#34;&gt;Data frames&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This transformation helps you resolve this issue by converting the time series data from either the wide format to the long format or the other way around.&lt;/p&gt;
&lt;p&gt;Select the &lt;code&gt;Multi-frame time series&lt;/code&gt; option to transform the time series data frame from the wide to the long format.&lt;/p&gt;
&lt;p&gt;Select the &lt;code&gt;Wide time series&lt;/code&gt; option to transform the time series data frame from the long to the wide format.&lt;/p&gt;
&lt;h3 id=&#34;series-to-rows&#34;&gt;Series to rows&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This transformation is available in Grafana 7.1&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Use this transformation to combine the result from multiple time series data queries into one single result. This is helpful when using the table panel visualization.&lt;/p&gt;
&lt;p&gt;The result from this transformation will contain three columns: Time, Metric, and Value. The Metric column is added so you easily can see from which query the metric originates from. Customize this value by defining Label on the source query.&lt;/p&gt;
&lt;p&gt;In the example below, we have two queries returning time series data. It is visualized as two separate tables before applying the transformation.&lt;/p&gt;
&lt;p&gt;Query A:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Temperature&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:05&lt;/td&gt;
              &lt;td&gt;19&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Query B:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Humidity&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;24&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;33&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Here is the result after applying the Series to rows transformation.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Metric&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;33&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:05&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;19&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;sort-by&#34;&gt;Sort by&lt;/h3&gt;
&lt;p&gt;This transformation will sort each frame by the configured field, When &lt;code&gt;reverse&lt;/code&gt; is checked, the values will return in the opposite order.&lt;/p&gt;
&lt;h3 id=&#34;limit&#34;&gt;Limit&lt;/h3&gt;
&lt;p&gt;Use this transformation to limit the number of rows displayed.&lt;/p&gt;
&lt;p&gt;In the example below, we have the following response from the data source:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Metric&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:31:22&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:57&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;33&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 09:30:05&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;19&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Here is the result after adding a Limit transformation with a value of &amp;lsquo;3&amp;rsquo;:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Time&lt;/th&gt;
              &lt;th&gt;Metric&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Temperature&lt;/td&gt;
              &lt;td&gt;25&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 11:34:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;22&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;2020-07-07 10:32:20&lt;/td&gt;
              &lt;td&gt;Humidity&lt;/td&gt;
              &lt;td&gt;29&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;time-series-to-table-transform&#34;&gt;Time series to table transform&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This transformation is available in Grafana 9.5&#43; as an opt-in beta feature. Modify Grafana &lt;a href=&#34;../../../setup-grafana/configure-grafana/#configuration-file-location&#34;&gt;configuration file&lt;/a&gt; to enable the &lt;code&gt;timeSeriesTable&lt;/code&gt; &lt;a href=&#34;../../../setup-grafana/configure-grafana/#feature_toggles&#34;&gt;feature toggle&lt;/a&gt; to use it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Use this transformation to convert time series result into a table, converting time series data frame into a &amp;ldquo;Trend&amp;rdquo; field. &amp;ldquo;Trend&amp;rdquo; field can then be rendered using &lt;a href=&#34;../../visualizations/table/#sparkline&#34;&gt;sparkline cell type&lt;/a&gt;, producing an inline sparkline for each table row. If there are multiple time series queries, each will result in a separate table data frame. These can be joined using join or merge transforms to produce a single table with multiple sparklines per row.&lt;/p&gt;
]]></content><description>&lt;h1 id="transform-data">Transform data&lt;/h1>
&lt;p>Transformations are a powerful way to manipulate data returned by a query before the system applies a visualization. Using transformations, you can:&lt;/p>
&lt;ul>
&lt;li>Rename fields&lt;/li>
&lt;li>Join time series data&lt;/li>
&lt;li>Perform mathematical operations across queries&lt;/li>
&lt;li>Use the output of one transformation as the input to another transformation&lt;/li>
&lt;/ul>
&lt;p>For users that rely on multiple views of the same dataset, transformations offer an efficient method of creating and maintaining numerous dashboards.&lt;/p></description></item><item><title>Troubleshoot queries</title><link>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/troubleshoot-queries/</link><pubDate>Wed, 15 Apr 2026 05:03:08 +0000</pubDate><guid>https://grafana.com/docs/grafana/v9.5/panels-visualizations/query-transform-data/troubleshoot-queries/</guid><content><![CDATA[&lt;h1 id=&#34;troubleshoot-queries&#34;&gt;Troubleshoot queries&lt;/h1&gt;
&lt;p&gt;This page provides information to solve common dashboard problems.&lt;/p&gt;
&lt;h2 id=&#34;i-get-different-results-when-i-rearrange-my-functions&#34;&gt;I get different results when I rearrange my functions&lt;/h2&gt;
&lt;p&gt;Function order is very important. Just like in math, the order that you place your functions can affect the result.&lt;/p&gt;
&lt;h2 id=&#34;inspect-your-query-request-and-response&#34;&gt;Inspect your query request and response&lt;/h2&gt;
&lt;p&gt;The most common problems are related to the query and response from your data source. Even if it looks
like a bug or visualization issue in Grafana, it is almost always a problem with the data source query or
the data source response. Start by inspecting your panel query and response.&lt;/p&gt;
&lt;p&gt;For more information, refer to [Inspect request and response data](../../panel-inspector/#inspect-query-request-and-response data/).&lt;/p&gt;
&lt;h2 id=&#34;my-query-is-slow&#34;&gt;My query is slow&lt;/h2&gt;
&lt;p&gt;How many data points is your query returning? A query that returns lots of data points will be slow. Try this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;Query options&lt;/strong&gt;, limit the &lt;strong&gt;Max data points&lt;/strong&gt; returned.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Query options&lt;/strong&gt;, increase the &lt;strong&gt;Min interval&lt;/strong&gt; time.&lt;/li&gt;
&lt;li&gt;In your query, use a &lt;code&gt;group by&lt;/code&gt; function.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="troubleshoot-queries">Troubleshoot queries&lt;/h1>
&lt;p>This page provides information to solve common dashboard problems.&lt;/p>
&lt;h2 id="i-get-different-results-when-i-rearrange-my-functions">I get different results when I rearrange my functions&lt;/h2>
&lt;p>Function order is very important. Just like in math, the order that you place your functions can affect the result.&lt;/p></description></item></channel></rss>