

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Consulta y transformación de los datos
<a name="v9-panels-query-xform"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 9.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte [Uso de la versión 10 de Grafana](using-grafana-v10.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Grafana admite muchos tipos de [orígenes de datos](AMG-data-sources.md). Las *consultas* a los orígenes de datos devuelven datos que Grafana puede *transformar* y visualizar. Cada origen de datos usa su propio lenguaje de consulta, y cada uno de los complementos de orígenes de datos implementa una interfaz de usuario para generar consultas llamada editor de consultas.

## Acerca de las consultas
<a name="v9-panels-query-xform-about"></a>

Los paneles de Grafana se comunican con los orígenes de datos mediante consultas, que recuperan datos para la visualización. Una consulta es una pregunta escrita en el lenguaje de consulta utilizado por el origen de datos.

Puede configurar la frecuencia de las consultas y los límites de recopilación de datos en las opciones de orígenes de datos del panel. Grafana admite hasta 26 consultas por panel.

Puede encontrar más información sobre el lenguaje de consulta de cada origen de datos en la sección [Orígenes de datos](AMG-data-sources.md).

**Editores de consultas**

El *editor de consultas* de cada origen de datos proporciona una interfaz de usuario personalizada que le ayuda a escribir consultas que aprovechen sus capacidades únicas.

Debido a las diferencias entre los lenguajes de consulta, cada editor de consultas de orígenes de datos tiene un aspecto y un funcionamiento diferentes. Según el origen de datos, el editor de consultas puede proporcionar características de autocompletado, nombres de métricas, sugerencias de variables o una interfaz visual de creación de consultas.

Para obtener más información sobre las características únicas del editor de consultas de un origen de datos específico, consulte su documentación:
+ Para ver los orígenes de datos incluidos en Grafana, consulte [Orígenes de datos integrados](AMG-data-sources-builtin.md).
+ Para ver los orígenes de datos incluidos en la edición Enterprise de Grafana, consulte [Conexión con orígenes de datos de Enterprise](AMG-data-sources-enterprise.md).

**Sintaxis de la consulta**

Los orígenes de datos utilizan diferentes lenguajes de consulta para solicitar datos. Para obtener más información sobre el lenguaje de consulta exclusivo de un origen de datos específico, consulte su documentación.

**Ejemplo de PostgreSQL:**

```
SELECT hostname FROM host WHERE region IN($region)
```

**Ejemplo de PromQL:**

```
query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
```

**Orígenes de datos especiales**

Grafana también incluye tres orígenes de datos especiales: **Grafana**, **Mixto** y **Panel de control**. Para obtener más detalles, consulte Orígenes de datos

## Navegación por la pestaña de consultas
<a name="v9-panels-query-xform-navigate"></a>

La pestaña **Consulta** de un panel consta de los siguientes elementos:
+ **Selector de orígenes de datos**: seleccione el origen de datos que se va a consultar.
+ **Opciones de consulta**: establece los parámetros máximos de recuperación de datos y los intervalos de tiempo de ejecución de las consultas.
+ **Botón Inspector de consultas:** abre el panel de inspector de consultas, donde puede ver y optimizar la consulta.
+ **Lista de editores de consultas**: muestra las consultas que ha escrito.
+ **Expresiones**: utiliza el generador de expresiones para crear expresiones de alerta. Para obtener más información sobre las expresiones, consulte [Escritura de consultas de expresiones](v9-panels-query-xform-expressions.md).

## Adición de una consulta
<a name="v9-panels-query-xform-add"></a>

Una consulta devuelve datos que Grafana visualiza en los paneles del panel de control. Al crear un panel, Grafana selecciona automáticamente el origen de datos predeterminado.

**Adición de una consulta**

1. Edite el panel al que va a agregar una consulta.

1. Elija la pestaña **Queries** (Consultas).

1. Seleccione el menú desplegable **Origen de datos** y seleccione un origen de datos.

1. Elija **opciones de consulta** para configurar el número máximo de puntos de datos que necesita. Para obtener más información sobre las opciones de consulta, consulte [Opciones de consulta](#v9-panels-query-xform-options).

1. En el editor de consultas, escriba la consulta.

1. Seleccione **Aplicar**.

Grafana consulta el origen de datos y visualiza los datos.

## Administración de consultas
<a name="v9-panels-query-xform-manage"></a>

Grafana organiza las consultas en filas de consultas plegables. Cada fila de consulta contiene un editor de consultas y se identifica con una letra (A, B, C, etc.).

Para administrar las consultas, puede copiarlas, ocultarlas, eliminarlas, reordenarlas y activar la ayuda del editor de consultas.

## Opciones de consulta
<a name="v9-panels-query-xform-options"></a>

Seleccione **Opciones de consulta** junto al selector de orígenes de datos para ver la configuración del origen de datos seleccionado. Los cambios que haga aquí solo afectarán a las consultas efectuadas en este panel.

Grafana establece valores predeterminados que se muestran en texto gris oscuro. Los cambios se muestran en texto blanco. Para devolver un campo a la configuración predeterminada, elimine el texto blanco del campo.

Las opciones de consulta de orígenes de datos del panel incluyen las siguientes:
+ **Máximo de puntos de datos**: si el origen de datos lo admite, se establece el número máximo de puntos de datos para cada serie devuelta. Si la consulta devuelve más puntos de datos que la configuración de puntos de datos máximos, el origen de datos reduce el número de puntos devueltos al agregarlos por promedio, máximo u otra función.

  Puede limitar el número de puntos para mejorar el rendimiento de la consulta o suavizar la línea visualizada. El valor predeterminado es el ancho (o el número de píxeles) del gráfico, ya que solo puede visualizar tantos puntos de datos como el espacio disponible en el panel del gráfico.

  Con los datos de streaming, Grafana utiliza el valor máximo de puntos de datos para el búfer móvil. La transmisión es un flujo continuo de datos y el almacenamiento en búfer divide la transmisión en partes. Por ejemplo, Loki transmite los datos en su modo de seguimiento en directo.
+ **Intervalo mínimo**: establece un límite mínimo para el intervalo que se calcula automáticamente, que suele ser el intervalo mínimo de almacenamiento. Si se guarda un punto de datos cada 15 segundos, no se beneficiará de tener un intervalo inferior a ese. También puede establecerlo en un intervalo mínimo superior al intervalo de extracción para recuperar consultas más detalladas y que funcionen bien.
+ **Intervalo**: establece un intervalo de tiempo que puede utilizar para agregar o agrupar puntos de datos por tiempo.

  Grafana calcula automáticamente un intervalo apropiado que puede usar como variable en las consultas con plantillas. La variable se mide en segundos (`$__interval`) o milisegundos (`$__interval_ms`).

  Los intervalos se utilizan normalmente en funciones de agregación, como la suma o el promedio. Por ejemplo, esta es una consulta de Prometheus que usa la variable de intervalo: `rate(http_requests_total[$__interval])`.

  Este intervalo automático se calcula en función del ancho del gráfico. A medida que el usuario se aleja de una visualización, el intervalo aumenta, lo que da como resultado una agregación más gruesa. Del mismo modo, si el usuario amplía la imagen, el intervalo disminuye, lo que da como resultado una agregación más detallada.

  Para obtener más información, consulte [Variables globales](v9-dash-variable-add.md#v9-dash-variable-add-global).
+ **Tiempo relativo**: anula el intervalo de tiempo relativo de los paneles individuales, lo que hace que sean diferentes de lo que está seleccionado en el selector de tiempo del panel de control, en la esquina superior derecha del panel de control. Puede usarlo para mostrar métricas de diferentes períodos de tiempo o días en el mismo panel de control.
**nota**  
Las anulaciones de tiempo del panel no tienen efecto cuando el intervalo de tiempo del panel de control es absoluto.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/grafana/latest/userguide/v9-panels-query-xform.html)
+ **Cambio de hora**: anula el intervalo de tiempo de los paneles individuales mediante el cambio del inicio y el final en relación con el selector de tiempo. Por ejemplo, puede cambiar el intervalo de tiempo del panel para que esté dos horas antes que el selector de tiempo del panel de control.
**nota**  
Las anulaciones de tiempo del panel no tienen efecto cuando el intervalo de tiempo del panel de control es absoluto.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/grafana/latest/userguide/v9-panels-query-xform.html)
+ **Tiempo de espera de la caché**: *(visible solo si está disponible en el origen de datos)* anula el tiempo de espera de la caché predeterminado si el almacén de series temporales tiene una caché de consultas. Especifique este valor como un valor numérico en segundos.

# Escritura de consultas de expresiones
<a name="v9-panels-query-xform-expressions"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 9.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte [Uso de la versión 10 de Grafana](using-grafana-v10.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Las expresiones del lado del servidor permiten manipular los datos devueltos por las consultas mediante operaciones matemáticas y de otro tipo. Las expresiones crean datos nuevos y no manipulan los datos devueltos por los orígenes de datos.

## Acerca de las expresiones
<a name="v9-panels-query-about"></a>

Las expresiones del lado del servidor permiten manipular los datos devueltos por las consultas mediante operaciones matemáticas y de otro tipo. Las expresiones crean datos nuevos y no manipulan los datos devueltos por los orígenes de datos, aparte de llevar a cabo una pequeña reestructuración de los datos para convertirlos en una entrada aceptable para las expresiones.

**Uso de expresiones**

Las expresiones se usan principalmente en [Grafana Alerting](v9-alerts.md). El procesamiento se efectúa en el servidor, por lo que las expresiones pueden funcionar sin una sesión de navegador. Sin embargo, las expresiones también se pueden usar con visualizaciones y orígenes de datos de backend.

**nota**  
Las expresiones no funcionan con las alertas de los paneles antiguos.

Las expresiones están diseñadas para aumentar los orígenes de datos, ya que permiten combinar consultas de diferentes orígenes de datos o proporcionan operaciones que no están disponibles en un origen de datos.

**nota**  
Siempre que sea posible, debe procesar los datos dentro del origen de datos. Copiar datos del almacenamiento al servidor de Grafana para su procesamiento es ineficiente, por lo que las expresiones están destinadas a un procesamiento de datos ligero.

Las expresiones funcionan con consultas de orígenes de datos que devuelven series temporales o datos numéricos. También funcionan con [datos multidimensionales](getting-started-grafanaui.md#time-series-dimensions). Por ejemplo, una consulta que devuelve varias series, donde cada serie se identifica mediante etiquetas.

Una expresión individual toma una o más consultas u otras expresiones como entrada y agrega datos al resultado. Cada expresión o consulta individual se representa mediante una variable que es un identificador denominado RefID (por ejemplo, la letra `A` o `B` por defecto).

Para hacer referencia al resultado de una expresión individual o a una consulta de origen de datos en otra expresión, este identificador se utiliza como variable.

**Tipos de expresiones**

Las expresiones funcionan con dos tipos de datos.
+ Una colección de series temporales.
+ Una colección de números, donde cada número es un elemento.

Cada colección se devuelve a partir de una única consulta o expresión de origen de datos y se representa mediante el RefID. Cada colección es un conjunto, en el que cada elemento del conjunto se identifica de forma única por sus dimensiones, que se almacenan como [etiquetas](getting-started-grafanaui.md#labels) o pares clave-valor.

**Consultas al origen de datos**

Las expresiones del lado del servidor solo admiten consultas de orígenes de datos para orígenes de datos de backend. Por lo general, se supone que los datos están etiquetados como datos de serie temporal. En el futuro, pretendemos agregar una aserción de datos de tipo de devolución de la consulta (número o serie temporal) para que las expresiones puedan gestionar mejor los errores.

Las consultas al origen de datos, cuando se utilizan con expresiones, las ejecuta el motor de expresiones. Cuando lo hace, reestructura los datos para que sean una serie temporal o un número por marco de datos. Por ejemplo, si utiliza un origen de datos que devuelve varias series en un fotograma en la vista de tabla, puede que observe un aspecto diferente cuando se ejecuta con expresiones.

Actualmente, el único formato que no es de serie temporal (número) que se admite cuando se utilizan marcos de datos es si se tiene una respuesta de tabla que devuelve un marco de datos sin hora, columnas de cadenas y una columna numérica:


| Loc | Host | Avg\$1CPU | 
| --- | --- | --- | 
|  MIA  |  A  |  1  | 
|  NYC  |  B  |  2  | 

El siguiente ejemplo produce un número que funciona con expresiones. Las columnas de cadenas se convierten en etiquetas y la columna numérica en el valor correspondiente. Por ejemplo, `{"Loc": "MIA", "Host": "A"}` con un valor de 1.

**Operaciones**

Puede usar las siguientes operaciones en las expresiones: matemática, reducción y remuestreo.

**Matemático**

Las matemáticas son para fórmulas matemáticas de formato libre sobre series temporales o datos numéricos. Las operaciones matemáticas toman números y series temporales como entrada y los cambian por números y series temporales diferentes.

Se hace referencia a los datos de otras consultas o expresiones con el prefijo RefID con un signo de dólar, por ejemplo, `$A`. Si el nombre de la variable tiene espacios, puede usar una sintaxis de corchetes similar a la siguiente: `${my variable}`.

Las constantes numéricas pueden estar en decimal (`2.24`), octal (con un cero a la izquierda, como `072`) o hexadecimales (con un 0x a la izquierda, como `0x2A`). También se admiten exponenciales y signos (por ejemplo, `-0.8e-2`).

**Operadores**

Se admiten los operadores aritméticos (`+`, binarios y unarios `-`, `*`, `/`, `%`, exponentes `**`), relacionales (`<`, `>`, `==`, `!=`, `>=`, `<=`) y lógicos (`&&`, `||` y unarios `!`).

El comportamiento de la operación con los datos depende de si se trata de datos numéricos o de serie temporal.

En las operaciones binarias, como `$A + $B` o `$A || $B`, el operador se aplica de las siguientes maneras según el tipo de datos:
+ Si `$A` y `$B` son números, la operación se lleva a cabo entre los dos números.
+ Si una variable es un número y la otra es una serie temporal, se lleva a cabo la operación entre el valor de cada punto de la serie temporal y el número.
+ Si `$A` y `$B` son datos de serie temporal, la operación entre cada valor de las dos series se lleva a cabo para cada marca temporal que exista en `$A` y `$B`. La operación `Resample` se puede utilizar para alinear las marcas de tiempo.

Resumen:
+ Número OP número = número
+ Número OP serie = serie
+ Serie OP serie = serie

Como las expresiones funcionan con varias series o números representados por una sola variable, las operaciones binarias también llevan a cabo una unión entre las dos variables. Esto se hace en función de las etiquetas de identificación asociadas a cada serie o número individual.

Por lo tanto, si tiene números con etiquetas como `{host=web01}` en `$A` y otro número en `$B` con las mismas etiquetas, la operación se lleva a cabo entre esos dos elementos dentro de cada variable y el resultado compartirá las mismas etiquetas. Las reglas para el comportamiento de esta unión son las siguientes:
+ Un elemento sin etiquetas se unirá a cualquier cosa.
+ Si `$A` y `$B` contienen solo un elemento (una serie o un número), se unirán.
+ Si las etiquetas coinciden exactamente, se unirán.
+ Si las etiquetas son un subconjunto de las demás, por ejemplo, si un elemento `$A` está etiquetado como `{host=A,dc=MIA}` y otro elemento `$B` está etiquetado como `{host=A}`, se unirán.
+ Si dentro de una variable, como `$A`, hay diferentes claves de etiqueta para cada elemento, el comportamiento de unión no está definido.

Los operadores lógicos y relacionales devuelven 0 si es falso y 1 si es verdadero.

**Funciones matemáticas**

Si bien la mayoría de las funciones se encuentran en las propias operaciones de expresión, la operación matemática tiene algunas funciones similares a los símbolos u operadores matemáticos. Cuando las funciones pueden tomar números o series, se devolverá el mismo tipo que el argumento. Cuando se trata de una serie, la operación se lleva a cabo para el valor de cada punto de la serie.

*abs*

abs devuelve el valor absoluto de su argumento, que puede ser un número o una serie. Por ejemplo, `abs(-1)` o `abs($A)`.

*is\$1inf*

is\$1inf toma un número o una serie y devuelve `1` para valores `Inf` (negativos o positivos) y `0` para otros valores. Por ejemplo, `is_inf($A)`.

**nota**  
Si tiene que comprobar específicamente el infinito negativo, por ejemplo, puede hacer una comparación, como `$A == infn()`.

*is\$1nan*

is\$1nan toma un número o una serie y devuelve `1` para valores `NaN` y `0` para otros valores. Por ejemplo, `is_nan($A)`. Esta función existe porque `NaN` no es igual a `NaN`.

*is\$1null*

is\$1null toma un número o una serie y devuelve `1` para valores `null` y `0` para otros valores. Por ejemplo, `is_null($A)`.

*is\$1number*

is\$1number toma un número o una serie y devuelve `1` para todos los valores numéricos reales y `0` para los demás valores (que son `null`, `Inf+`, `Inf-` y `NaN`). Por ejemplo, `is_number($A)`.

*log*

Log devuelve el logaritmo natural de su argumento, que puede ser un número o una serie. Si el valor es inferior a 0, se devuelve `NaN`. Por ejemplo, `log(-1)` o `log($A)`.

*inf, infn, nan y null*

Todas las funciones inf, infn, nan y null devuelven un único valor del nombre. Existen principalmente para efectuar pruebas. Ejemplo: `null()`.

*round*

Redondear devuelve un valor entero redondeado. Por ejemplo, `round(3.123)` o `round($A)`.

*ceil*

Ceil redondea el número al valor entero más cercano. Por ejemplo, `ceil(3.123)` devuelve `4`.

*floor*

Floor redondea el número al valor entero más cercano. Por ejemplo, `floor(3.123` devuelve `3`.

**Reducir**

Reduce toma una o más series temporales devueltas por una consulta o expresión y convierte cada serie en un único número. Las etiquetas de la serie temporal se mantienen como etiquetas en cada número reducido generado.

*Campos:*
+ **Función**: la función de reducción que se va a utilizar.
+ **Entrada**: la variable (refID, como `A`) que se va a volver a muestrear.
+ **Modo**: permite controlar el comportamiento de la función de reducción cuando una serie contiene valores no numéricos (nulo, NaN, \$1-Inf).

**Funciones de reducción**

*Recuento*

El recuento devuelve el número de puntos de cada serie.

*Mean*

La media devuelve el total de todos los valores de cada serie dividido por el número de puntos de esa serie. En el modo `strict`, si algún valor de la serie es nulo o NaN, o si la serie está vacía, se devuelve NaN.

*Min y Max*

Min y Max devuelven el valor más pequeño o más alto de la serie, respectivamente. En el modo `strict`, si algún valor de la serie es nulo o NaN, o si la serie está vacía, se devuelve NaN.

*Sum (Suma)*

La suma devuelve el total de todos los valores de la serie. Si la serie tiene una longitud cero, la suma será 0. En el modo `strict`, si algún valor de la serie es NaN o nulo, se devuelve NaN.

*Último*

Last devuelve el último número de la serie. Si la serie no tiene valores, devuelve NaN.

**Modos de reducción**

*Estricto*

En el modo estricto, la serie de entrada se procesa tal cual. Si algún valor de la serie no es numérico (null, NaN o \$1-Inf), se devuelve NaN.

*Eliminación de los valores no numéricos*

En este modo, todos los valores no numéricos (nulo, NaN o \$1-Inf) de la serie de entrada se filtran antes de ejecutar la función de reducción.

*Sustitución de los valores no numéricos*

En este modo, todos los valores no numéricos se sustituyen por un valor predefinido.

**Remuestreo**

Remuestreo cambia las marcas de tiempo de cada serie temporal para tener un intervalo de tiempo coherente. El caso de uso principal es volver a muestrear series temporales que no comparten las mismas marcas temporales para poder llevar a cabo operaciones matemáticas entre ellas. Para hacerlo, puede volver a muestrear cada una de las dos series y, a continuación, mediante una operación matemática que haga referencia a las variables remuestreadas.

*Campos:*
+ **Entrada**: la variable de los datos de serie temporal (refID, como `A`) que se va a volver a muestrear.
+ **Remuestreo** a: el tiempo que se debe remuestrear, por ejemplo, `10s.`. Las unidades pueden ser `s` (segundos), `m` (minutos), `h` (horas), `d` (días), `w` (semanas) y `y` (años).
+ **Reducción de muestreo**: función de reducción que se utiliza cuando hay más de un punto de datos por muestra de ventana. Consulte la operación de reducción para obtener detalles sobre el comportamiento.
+ **Aumento de muestreo**: el método que se utiliza para rellenar una muestra de ventana que no tiene puntos de datos.
  + **pad** se rellena con el último valor conocido.
  + **backfill** con el siguiente valor conocido.
  + **fillna** para llenar las ventanas de muestra vacías con NaNs

## Escritura de una expresión
<a name="v9-panels-query-write"></a>

Si el origen de datos las admite, Grafana muestra el botón **Expresión** y muestra todas las expresiones existentes en la lista del editor de consultas.

**Escritura de una expresión**

1. Abra el panel.

1. Debajo de la consulta, seleccione **Expresión**.

1. En el campo **Operación**, seleccione el tipo de expresión que desee escribir.

1. Escriba la expresión.

1. Seleccione **Aplicar**.

## Casos especiales
<a name="v9-panels-query-special"></a>

Cuando un origen de datos consultado no devuelve series ni números, el motor de expresiones devuelve `NoData`. Por ejemplo, si una solicitud contiene dos consultas de origen de datos que se combinan mediante una expresión, si `NoData` devuelve al menos una de las consultas de origen de datos, el resultado devuelto para toda la consulta es `NoData`. Para obtener más información sobre cómo Grafana Alerting procesa los resultados de `NoData`, consulte [Gestión de casos de error o ausencia de datos](v9-alerting-managerules-grafana.md#v9-alerting-rule-no-data-error).

# Uso compartido de los resultados de las consultas con otro panel
<a name="v9-panels-query-share"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 9.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte [Uso de la versión 10 de Grafana](using-grafana-v10.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Grafana le permite usar el resultado de la consulta de un panel para cualquier otro panel del panel de control. Al compartir los resultados de las consultas en todos los paneles, se reduce la cantidad de consultas que se hacen al origen de datos, lo que puede mejorar el rendimiento del panel.

El origen de datos del panel de control le permite seleccionar un panel del panel de control que contenga las consultas con las que desea compartir los resultados. En lugar de enviar una consulta independiente para cada panel, Grafana envía una consulta y los demás paneles utilizan los resultados de la consulta para crear visualizaciones.

Esta estrategia puede reducir drásticamente la cantidad de consultas que se hacen cuando, por ejemplo, hay varios paneles que visualizan los mismos datos.

**Uso compartido de los resultados de las consultas**

1. [Cree un panel de control](v9-dash-creating.md).

1. Cambie el título a `Source panel`. Utilizará este panel como origen para los demás paneles.

1. Defina la consulta o consultas que desee compartir.

   Si no tiene una fuente de datos disponible, utilice la fuente de **TestData**datos, que devuelve una serie temporal aleatoria que puede utilizar para realizar pruebas.

1. Agregue un segundo panel y seleccione el origen de datos del **panel de control** en el editor de consultas.

1. En **Usar los resultados de la lista de paneles**, seleccione el primer panel que haya creado.

Todas las consultas definidas en el panel de origen están ahora disponibles en el nuevo panel. Las consultas hechas en el panel de origen se pueden compartir en varios paneles.

Puede hacer clic en cualquiera de las consultas para ir al panel donde están definidas.

# Transformación de datos
<a name="v9-panels-xform"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 9.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte [Uso de la versión 10 de Grafana](using-grafana-v10.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Las transformaciones son una forma eficaz de manipular los datos devueltos por una consulta antes de que el sistema aplique una visualización. Con las transformaciones, puede hacer lo siguiente:
+ Cambiar el nombre de un campo
+ Unir datos de serie temporal
+ Ejecutar operaciones matemáticas en las consultas
+ Uso de la salida de una transformación como entrada para otra transformación

Para los usuarios que dependen de varias vistas del mismo conjunto de datos, las transformaciones ofrecen un método eficaz para crear y mantener numerosos paneles.

También puede utilizar la salida de una transformación como entrada para otra transformación, lo que se traduce en un aumento del rendimiento.

**nota**  
A veces, el sistema no puede convertir en gráficos los datos transformados. Cuando eso suceda, haga clic en el conmutador **Vista de tabla** situado encima de la visualización para cambiar a una vista de tabla de los datos. Esto puede ayudarlo a entender el resultado final de sus transformaciones.

## Tipos de transformación
<a name="v9-panels-xform-types"></a>

Grafana proporciona varias formas de transformar los datos. A continuación, encontrará una lista completa de las funciones de transformación.

## Orden de las transformaciones
<a name="v9-panels-xform-order"></a>

Cuando existen varias transformaciones, Grafana las aplica en el orden en que aparecen en la lista. Cada transformación crea un conjunto de resultados que pasa a la siguiente transformación de la canalización de procesamiento.

El orden en que Grafana aplica las transformaciones afecta directamente a los resultados. Por ejemplo, si usa una transformación de Reducción para condensar todos los resultados de una columna en un único valor, después solo podrá aplicar las transformaciones a ese único valor.

## Adición de una función de transformación a los datos
<a name="v9-panels-xform-add"></a>

Los siguientes pasos sirven de guía para agregar una transformación a los datos.

**Adición de una transformación a un panel**

1. Vaya al panel en el que desea agregar una o más transformaciones.

1. Elija el título del panel y haga clic en **Editar**.

1. Elija la pestaña **Transform (Transformación)**.

1. Elija una transformación. Aparece una fila de transformaciones en la que puede configurar las opciones de transformación.

1. Para aplicar otra transformación, elija **Agregar transformación**. Esta transformación actúa sobre el conjunto de resultados devuelto por la transformación anterior.

## Depuración de una transformación
<a name="v9-panels-xform-debug"></a>

Para ver los conjuntos de resultados de entrada y salida de la transformación, elija el icono de depuración situado en la parte derecha de la fila de la transformación.

Los conjuntos de resultados de entrada y salida pueden ayudar a depurar una transformación.

## Eliminación de una transformación
<a name="v9-panels-xform-delete"></a>

Le recomendamos que elimine las transformaciones que no necesite. Al eliminar una transformación, se eliminan los datos de la visualización.

Requisitos previos:

Identifique todos los paneles de control que se basan en la transformación e informe a los usuarios afectados.

**Eliminación de una transformación**

1. Abra un panel para editarlo.

1. Elija la pestaña **Transform (Transformación)**.

1. Elija el icono de papelera situado al lado de la transformación que quiere eliminar.

## Funciones de transformación
<a name="v9-panels-xform-functions"></a>

Puede llevar a cabo las siguientes transformaciones en sus datos.

**Agregar un campo a partir de un cálculo**

Use esta transformación para agregar un campo nuevo calculado a partir de otros dos campos. Cada transformación le permite agregar un campo nuevo.
+ **Modo**: seleccione un modo.
  + **Reducir fila**: aplique el cálculo seleccionado en cada fila de campos seleccionados de forma independiente.
  + **Opción binaria**: permite aplicar operaciones matemáticas básicas (sumar, multiplicar, etc.) a los valores de una sola fila de dos campos seleccionados.
+ **Nombre del campo**: permite seleccionar los nombres de los campos que quiera utilizar en el cálculo del nuevo campo.
+ **Cálculo**: si selecciona el modo **Reducir fila**, aparece el campo **Cálculo**. Haga clic en el campo para ver una lista de las opciones de cálculo que puede utilizar para crear el nuevo campo. Para obtener información sobre los cálculos disponibles, consulte [Tipos de cálculo](v9-panels-calculation-types.md).
+ **Operación**: si selecciona el modo de **opción binaria**, aparecen los campos de **Operación**. Estos campos permiten llevar a cabo operaciones matemáticas básicas con los valores de una sola fila a partir de dos campos seleccionados. También puede utilizar valores numéricos para operaciones binarias.
+ **Alias**: (opcional) ingrese el nombre del nuevo campo. Si deja este campo en blanco, se le asignará un nombre que se corresponda con el cálculo.
+ **Reemplazar todos los campos**: (opcional) seleccione esta opción si quiere ocultar los demás campos y mostrar solo el campo calculado en la visualización.

**Concatenar campos**

Esta transformación combina todos los campos de todos los marcos en un solo resultado. Tome como ejemplo estas dos consultas.

Consulta A:


| Temp | Tiempo de actividad | 
| --- | --- | 
|  15,4  |  1230233  | 

Consulta B:


| ICA | Errores | 
| --- | --- | 
|  3.2  |  5  | 

Tras concatenar los campos, el marco de datos sería:


| Temp | Tiempo de actividad | ICA | Errores | 
| --- | --- | --- | --- | 
|  15.4  |  1230233  |  3.2  |  5  | 

**Configuración a partir de los resultados de la consulta**

Esta transformación le permite seleccionar una consulta y con ella extraer las opciones estándar, como el **mínimo**, el **máximo**, la **unidad** y los **umbrales**, y aplicarlas a otros resultados de consultas. Esto permite configurar la visualización de forma dinámica mediante las consultas.

Si quiere extraer una configuración única para cada fila del resultado de la consulta de configuración, pruebe la transformación de filas a campos.

**Opciones**
+ **Consulta de configuración**: seleccione la consulta que devuelva los datos que quiera usar como configuración.
+ **Aplicar a**: seleccione a qué campos o series se debe aplicar la configuración.
+ **Opciones de Aplicar a**: normalmente, un tipo de campo o una expresión regular para el nombre del campo, según lo que haya seleccionado en **Aplicar a**.

**Conversión del tipo de campo**

Esta transformación modifica el tipo del campo especificado.
+ **Campo**: seleccione uno de los campos disponibles.
+ **as** — Seleccione la opción FieldType a la que desea convertir
  + **Numérico**: intenta convertir los valores en números.
  + **Cadena**: convertirá los valores en cadenas.
  + **Tiempo**: intenta analizar los valores como tiempo.
    + Mostrará una opción para especificar una entrada mediante una cadena DateFormat como yyyy-mm-dd DD MM YYYY hh:mm:ss
  + **Booleano**: hará que los valores sean booleanos.

Por ejemplo, la siguiente consulta podría modificarse seleccionando el campo de tiempo como Tiempo y el formato de fecha como AAAA.


| Time | Marca | Valor | 
| --- | --- | --- | 
|  1/7/2017  |  encima  |  25  | 
|  2/8/2018  |  debajo  |  22  | 
|  2/9/2019  |  debajo  |  29  | 
|  4 de octubre de 2020  |  encima  |  22  | 

Resultado:


| Time | Marca | Valor | 
| --- | --- | --- | 
|  1/1/2017  |  encima  |  25  | 
|  1/1/2018  |  debajo  |  22  | 
|  1/1/2019  |  debajo  |  29  | 
|  1/1/2020  |  encima  |  22  | 

**Filtrado de datos por nombre**

Use esta transformación para eliminar partes de los resultados de la consulta.

Grafana muestra el campo **Identificador**, seguido de los campos devueltos por la consulta.

Puede aplicar filtros de dos maneras:
+ Ingrese una expresión regular.
+ Elija un campo para activar o desactivar el filtrado en él. Los campos filtrados se muestran con texto gris oscuro y los campos sin filtrar tienen texto blanco.

**Filtrar datos por consulta**

Utilice esta transformación en los paneles que tienen varias consultas si quiere ocultar una o varias de las consultas.

Grafana muestra las letras de identificación de la consulta en texto gris oscuro. Haga clic en un identificador de consulta para activar o desactivar el filtrado. Si la letra de la consulta es blanca, se muestran los resultados. Si la letra de la consulta es oscura, se ocultan los resultados.

**nota**  
Esta transformación no está disponible para Graphite porque este origen de datos no admite la correlación de los datos devueltos con las consultas.

**Filtrar datos por valor**

Esta transformación le permite filtrar sus datos directamente en Grafana y eliminar algunos puntos de datos del resultado de la consulta. Tiene la opción de incluir o excluir los datos que coincidan con una o varias condiciones que defina. Las condiciones se aplican a un campo seleccionado.

Esta transformación es útil si el origen de datos no filtra por valores de forma nativa. También puede usar esta opción para restringir los valores que se muestran si utiliza una consulta compartida.

Las condiciones disponibles para todos los campos son:
+ **Expresión regular**: busque coincidencias con una expresión regular.
+ **Es nulo**: aplique coincidencias si el valor es nulo.
+ **No es nulo**: aplique coincidencias si el valor no es nulo.
+ **Igual**: aplique coincidencias si el valor es igual al valor especificado.
+ **Diferente**: aplique coincidencias si el valor es diferente al valor especificado.

Las condiciones disponibles para los campos numéricos son:
+ **Mayor**: aplique coincidencias si el valor es mayor que el valor especificado.
+ **Menor**: aplique coincidencias si el valor es menor que el valor especificado.
+ **Mayor o igual**: aplique coincidencias si el valor es mayor o igual.
+ **Menor o igual**: aplique coincidencias si el valor es menor o igual.
+ **Rango**: busque coincidencias dentro de un rango entre un mínimo y un máximo especificados, ambos incluidos.

Observe el siguiente conjunto de datos:


| Time | Temperatura | Altitud | 
| --- | --- | --- | 
|  7/7/2020 11:34:23 H  |  32  |  101  | 
|  7/7/2020 11:34:22 H  |  28  |  125  | 
|  7/7/2020 11:34:21 H  |  26  |  110  | 
|  7/7/2020 11:34:20 H  |  23  |  98  | 
|  7/7/2020 10:32:24 A.M.  |  31  |  95  | 
|  7/7/2020 10:31:22 H  |  20  |  85  | 
|  7/7/2020 9:30:57 H  |  19  |  101  | 

Si **incluye** los puntos de datos que tienen una temperatura inferior a 30 °C, la configuración tendrá el siguiente aspecto:
+ **Tipo de filtro**: `Include`
+ **Condición**: filas en las que `Temperature` coincide con `Lower Than 30`

Y obtendrá el siguiente resultado, donde solo se incluyen las temperaturas por debajo de 30 °C:


| Time | Temperatura | Altitud | 
| --- | --- | --- | 
|  7/7/2020 11:34:22 H  |  28  |  125  | 
|  7/7/2020 11:34:21 H  |  26  |  110  | 
|  7/7/2020 11:34:20 H  |  23  |  98  | 
|  7/7/2020 10:31:22 A.M.  |  20  |  85  | 
|  7/7/2020 9:30:57 H  |  19  |  101  | 

Puede agregar más de una condición al filtro. Por ejemplo, quizás quiera incluir los datos solo si la altitud es superior a 100. Para ello, agregue esa condición a la siguiente configuración:
+ Tipo de filtro: `Include` filas que `Match All` condiciones
+ Condición 1: filas en las que `Temperature` coincide con `Lower` a `30`
+ Condición 2: filas en las que `Altitude` coincide con `Greater` a `100`

Si tiene más de una condición, puede elegir si quiere que la acción (incluir o excluir) se aplique a las filas que **coincidan con todas** las condiciones o que **coincidan con cualquiera** de las condiciones que haya agregado.

En el ejemplo anterior, elegimos **Coincidir con todo** porque queríamos incluir las filas que tienen una temperatura inferior a 30 Y una altitud superior a 100. Si, en su lugar, quisiéramos incluir las filas que tienen una temperatura inferior a 30 O una altitud superior a 100, seleccionaríamos **Coincidir con cualquier**. Esto incluiría la primera fila de los datos originales, que tiene una temperatura de 32 °C (no coincide con la primera condición) pero una altitud de 101 (que sí coincide con la segunda condición), por lo que se incluye.

Se ignoran las condiciones que no sean válidas o que estén configuradas de forma incompleta.

**Agrupar por**

Esta transformación agrupa los datos por un valor de campo (columna) específico y procesa los cálculos de cada grupo. Haga clic para ver una lista de opciones de cálculo.

A continuación se muestra un ejemplo de datos originales.


| Time | ID del servidor | Temperatura de la CPU | Estado del servidor | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Servidor 1  |  80  |  Apagado  | 
|  7/7/2020 11:34:20 H  |  Servidor 3  |  62  |  OK  | 
|  7/7/2020 10:32:20 H  |  Servidor 2  |  90  |  Sobrecarga  | 
|  7/7/2020 10:31:22 H  |  Servidor 3  |  55  |  OK  | 
|  7/7/2020 9:30:57 H  |  Servidor 3  |  62  |  Rebooting  | 
|  7/7/2020 9:30:05 A.M.  |  Servidor 2  |  88  |  OK  | 
|  7/7/2020 9:28:06 A.M.  |  Servidor 1  |  80  |  OK  | 
|  7/7/2020 9:25:05 A.M.  |  Servidor 2  |  88  |  OK  | 
|  7/7/2020 9:23:07 H  |  Servidor 1  |  86  |  OK  | 

Esta transformación se efectúa en dos pasos. En primer lugar, especifique uno o varios campos por los que agrupar los datos. Esto agrupará los mismos valores de esos campos, como si los hubiera ordenado. Por ejemplo, si los agrupamos por el campo ID del servidor, agruparía los datos de esta manera:


| Time | ID del servidor | Temperatura de la CPU | Estado del servidor | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 A.M.  |  Servidor 1  |  80  |  Apagado  | 
|  7/7/2020 9:28:06 A.M.  |  Servidor 1  |  80  |  OK  | 
|  7/7/2020 9:23:07 H  |  Servidor 1  |  86  |  OK  | 
|  7/7/2020 10:32:20 A.M.  |  Servidor 2  |  90  |  Sobrecarga  | 
|  7/7/2020 9:30:05 A.M.  |  Servidor 2  |  88  |  OK  | 
|  7/7/2020 9:25:05 A.M.  |  Servidor 2  |  88  |  OK  | 
|  7/7/2020 11:34:20 H  |  Servidor 3  |  62  |  OK  | 
|  7/7/2020 10:31:22 H  |  Servidor 3  |  55  |  OK  | 
|  7/7/2020 9:30:57 H  |  Servidor 3  |  62  |  Rebooting  | 

Se agrupan todas las filas con el mismo valor de ID del servidor.

Tras elegir el campo por el que quiere agrupar los datos, puede agregar varios cálculos en los demás campos y aplicar el cálculo a cada grupo de filas. Por ejemplo, podríamos querer calcular la temperatura media de la CPU para cada uno de esos servidores. Así que podemos agregar el cálculo de la *media* aplicado al campo Temperatura de la CPU para obtener lo siguiente:


| ID del servidor | Temperatura de la CPU (media) | 
| --- | --- | 
|  Servidor 1  |  82  | 
|  Servidor 2  |  8.6  | 
|  Servidor 3  |  59,6  | 

Y podemos agregar más de un cálculo. Por ejemplo:
+ Para el campo Hora, podemos calcular el valor *Último* para saber cuándo se recibió el último punto de datos de cada servidor.
+ Para el campo Estado del servidor, podemos calcular el valor *Último* para saber cuál es el último valor de estado de cada servidor.
+ Para el campo Temperatura, también podemos calcular el valor *Último* para saber cuál es la última temperatura monitoreada para cada servidor.

Entonces obtendríamos:


| ID del servidor | Temperatura de la CPU (media) | Temperatura de la CPU (última) | Hora (última) | Estado del servidor (último) | 
| --- | --- | --- | --- | --- | 
|  Servidor 1  |  82  |  80  |  7/7/2020 11:34:20 A.M.  |  Apagado  | 
|  Servidor 2  |  8.6  |  90  |  7/7/2020 10:32:20 A.M.  |  Sobrecarga  | 
|  Servidor 3  |  59.6  |  62  |  7/7/2020 11:34:20 A.M.  |  OK  | 

Esta transformación le permite extraer información clave de sus series temporales y mostrarla en un formato cómodo.

**Unión por campo**

Utilice esta transformación para unir varios resultados en una sola tabla. Esto resulta especialmente útil para convertir los resultados de varias series temporales en una sola tabla ancha con un campo de etiqueta compartido.

*Unión interna*

La unión interna combina los datos de varias tablas que comparten el mismo valor del campo seleccionado. Este tipo de unión excluye los datos cuyos valores no coinciden en todos los resultados.

Use esta transformación para combinar los resultados de varias consultas (mediante la combinación en un campo de unión aprobado o en la primera columna de tiempo) en un solo resultado y elimine las filas en las que no se pueda llevar a cabo una unión correcta.

En el ejemplo siguiente, dos consultas devuelven datos de la tabla. Se visualiza como dos tablas independientes antes de aplicar la transformación de unión interna.

Consulta A:


| Time | Trabajo | Tiempo de actividad | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  25260122  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  123001233  | 
|  7/7/2020 11:14:20 H  |  postgre  |  345001233  | 

Consulta B:


| Time | Server | Errores | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Servidor 1  |  15  | 
|  7/7/2020 11:24:20 H  |  Servidor 2  |  5  | 
|  7/7/2020 11:04:20 H  |  Servidor 3  |  10  | 

El resultado tras aplicar la transformación de unión interna es similar al siguiente:


| Time | Trabajo | Tiempo de actividad | Server | Errores | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  25260122  |  Servidor 1  |  15  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  123001233  |  Servidor 2  |  5  | 

*Unión externa*

La unión externa incluye todos los datos de una unión interna y las filas en las que los valores no coinciden en todas las entradas. Mientras que la unión interna une la Consulta A y la Consulta B en el campo de tiempo, la unión externa incluye todas las filas que no coinciden en el campo de tiempo.

En el ejemplo siguiente, dos consultas devuelven datos de la tabla. Se visualiza como dos tablas antes de aplicar la transformación de unión externa.

Consulta A:


| Time | Trabajo | Tiempo de actividad | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  25260122  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  123001233  | 
|  7/7/2020 11:14:20 H  |  postgre  |  345001233  | 

Consulta B:


| Time | Server | Errores | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Servidor 1  |  15  | 
|  7/7/2020 11:24:20 H  |  Servidor 2  |  5  | 
|  7/7/2020 11:04:20 H  |  Servidor 3  |  10  | 

El resultado después de aplicar la transformación de unión externa es similar al siguiente:


| Time | Trabajo | Tiempo de actividad | Server | Errores | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 11:04:20 H  |    |    |  Servidor 3  |  10  | 
|  7/7/2020 11:14:20 H  |  postgre  |  345001233  |    |    | 
|  7/7/2020 11:34:20 H  |  nodo  |  25260122  |  Servidor 1  |  15  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  123001233  |  Servidor 2  |  5  | 

**Etiquetas para campos**

Esta transformación cambia los resultados de las series temporales que incluyen etiquetas a una tabla en la que las claves y los valores de cada etiqueta se incluyen en el resultado de la tabla. Las etiquetas se pueden mostrar como columnas o como valores de fila.

Si tenemos el siguiente resultado de una consulta de dos series temporales:
+ Serie 1: etiquetas Servidor=Servidor A, Centro de datos=UE
+ Serie 2: etiquetas Servidor=Servidor B, Centro de datos=UE

En el modo **Columnas**, el resultado es el siguiente:


| Time | Server | Centro de datos | Valor | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Servidor A  |  UE  |  1  | 
|  7/7/2020 11:34:20 H  |  Servidor B  |  UE  |  2  | 

En el modo “Filas”, el resultado tiene una tabla para cada serie y muestra cada valor de etiqueta de la siguiente manera:


| etiqueta | valor | 
| --- | --- | 
|  Server  |  Servidor A  | 
|  Centro de datos  |  UE  | 


| etiqueta | valor | 
| --- | --- | 
|  Server  |  Servidor B  | 
|  Centro de datos  |  UE  | 

*Nombre del campo de valor*

Si ha seleccionado Servidor como **Nombre del campo de valor**, obtendrá un campo por cada valor de la etiqueta del servidor.


| Time | Centro de datos | Servidor A | Servidor B | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  UE  |  1  |  2  | 

*Comportamiento de combinación*

El transformador de etiquetas a campos consta internamente de dos transformaciones separadas. La primera actúa sobre una sola serie y extrae las etiquetas de los campos. La segunda es la transformación de combinación que une todos los resultados en una sola tabla. La transformación de combinación intenta unir todos los campos coincidentes. Este paso de combinación es necesario y no se puede desactivar. 

**nota**  
La transformación de *combinación* se puede utilizar por sí sola y se describe en detalle a continuación.

Para ilustrarlo, a continuación se muestra un ejemplo en el que tiene dos consultas que devuelven series temporales sin etiquetas superpuestas.
+ Serie 1: etiquetas Servidor=ServidorA
+ Serie 2: etiquetas Centro de datos=EU

En primer lugar, se obtendrán estas dos tablas:


| Time | Server | Valor | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  ServidorA  |  10  | 


| Time | Centro de datos | Valor | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  UE  |  20  | 

Después de la combinación:


| Time | Server | Valor | Centro de datos | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  ServidorA  |  10  |    | 
|  7/7/2020 11:34:20 H  |    |  20  |  UE  | 

**Merge**

Use esta transformación para combinar el resultado de varias consultas en un único resultado. Resulta útil cuando se usa la visualización del panel de tablas. Los valores que se pueden unir se combinan en la misma fila. Los valores se pueden combinar si los campos compartidos contienen los mismos datos.

En el siguiente ejemplo, tenemos dos consultas que devuelven datos de tablas. Se visualiza como dos tablas independientes antes de aplicar la transformación.

Consulta A:


| Time | Trabajo | Tiempo de actividad | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  25260122  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  123001233  | 

Consulta B:


| Time | Trabajo | Errores | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  15  | 
|  7/7/2020 11:24:20 H  |  postgre  |  5  | 

Este es el resultado después de aplicar la transformación Combinar:


| Time | Trabajo | Errores | Tiempo de actividad | 
| --- | --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  nodo  |  15  |  25260122  | 
|  7/7/2020 11:24:20 A.M.  |  postgre  |  5  |  123001233  | 

**Organizar campos**

Use esta transformación para cambiar el nombre, reordenar u ocultar los campos devueltos por la consulta.

**nota**  
Esta transformación solo funciona en paneles con una única consulta. Si su panel tiene varias consultas, debe aplicar una transformación de Unión externa o eliminar las consultas adicionales.

Grafana muestra una lista de los campos devueltos por la consulta. Puede:
+ Para cambiar el orden de los campos, pase el cursor sobre uno de ellos. El cursor se convertirá en una mano y podrá arrastrar el campo a su nueva ubicación.
+ Para ocultar o mostrar un campo, haga clic en el icono de ojo situado al lado del nombre del campo.
+ Para cambiar el nombre de los campos, escriba un nombre nuevo en el cuadro Cambiar nombre.

**Particionar por valores**

Esta transformación puede ayudar a eliminar la necesidad de llevar a cabo múltiples consultas al mismo origen de datos con cláusulas diferentes `WHERE` al crear representaciones gráficas de varias series. Tome como ejemplo una tabla SQL de métricas con los siguientes datos:


| Time | Region | Valor | 
| --- | --- | --- | 
|  20/10/2022 12:00:00 P.M.  |  EE. UU.  |  1520  | 
|  20/10/2022 12:00:00 P.M.  |  UE  |  2936  | 
|  20/10/2022 01:00:00 A. M.  |  EE. UU.  |  1327  | 
|  20/10/2022 13:00:00  |  UE  |  912  | 

Antes de la versión 9.3, si querías trazar una línea de tendencia roja para EE. UU. y otra azul para la UE en el mismo TimeSeries panel, lo más probable es que tuvieras que dividirla en dos consultas:

```
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='US'
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='EU'
```

Eso también requeriría saber con antelación qué regiones existen realmente en la tabla de métricas.

Con el transformador *Particionar por valores*, puede emitir una sola consulta y dividir los resultados por valores únicos en una o varias columnas (`fields`) de su elección. El siguiente ejemplo utiliza `Region`.

```
SELECT Time, Region, Value FROM metrics WHERE Time > '2022-10-20'
```


| Time | Region | Valor | 
| --- | --- | --- | 
|  20 DE OCTUBRE DE 2022 A LAS 12:00:00  |  EE. UU.  |  1520  | 
|  20/10/2022 13:00:00  |  EE. UU.  |  1327  | 


| Time | Region | Valor | 
| --- | --- | --- | 
|  20/10/2022 12:00:00 P.M.  |  UE  |  2936  | 
|  20/10/2022 01:00:00 A. M.  |  UE  |  912  | 

**Reducir**

La transformación *Reducir* aplica un cálculo a cada campo del marco y devuelve un único valor. Al aplicar esta transformación, se eliminan los campos de tiempo.

Pongamos por ejemplo la entrada:

Consulta A:


| Time | Temp | Tiempo de actividad | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 A.M.  |  12.3  |  256122  | 
|  7/7/2020 11:24:20 A.M.  |  15.4  |  1230233  | 

Consulta B:


| Time | ICA | Errores | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 A.M.  |  6.5  |  15  | 
|  7/7/2020 11:24:20 H  |  3.2  |  5  | 

El transformador Reducir tiene dos modos:
+ **De series a filas**: crea una fila para cada campo y una columna para cada cálculo.
+ **Reducir campos**: mantiene la estructura del marco existente, pero contrae los campos en un único valor.

Por ejemplo, si utilizó el cálculo **Primero** y **Último** con una transformación **De series a filas**, el resultado sería:


| Campo | Primero | Último | 
| --- | --- | --- | 
|  Temp  |  12.3  |  15.4  | 
|  Tiempo de actividad  |  256122  |  1230233  | 
|  ICA  |  6.5  |  3.2  | 
|  Errores  |  15  |  5  | 

Al reducir los campos con el cálculo último, se obtienen dos marcos, cada uno con una fila:

Consulta A:


| Temp | Tiempo de actividad | 
| --- | --- | 
|  15.4  |  1230233  | 

Consulta B:


| ICA | Errores | 
| --- | --- | 
|  3.2  |  5  | 

**Cambiar nombre por expresión regular**

Use esta transformación para cambiar el nombre de partes de los resultados de la consulta mediante una expresión regular y un patrón de reemplazo.

Puede especificar una expresión regular, que solo se aplica a las coincidencias, junto con un patrón de reemplazo que admita las referencias inversas. Por ejemplo, imaginemos que está visualizando el uso de la CPU por host y desea eliminar el nombre de dominio. Podría establecer la expresión regular en `([^\.]+)\..+` y el patrón de reemplazo en `$1`, `web-01.example.com` se convertiría en `web-01`.

**Filas a campos**

Utilice la transformación de filas a campos para convertir las filas en campos separados. Puede resultar útil porque los campos se pueden diseñar y configurar de forma individual. También puede usar campos adicionales como orígenes para la configuración dinámica de campos o asignarlos a etiquetas de campo. Luego, las etiquetas adicionales se pueden usar para definir mejor los nombres de visualización de los campos resultantes.

Esta transformación incluye una tabla de campos en la que se enumeran todos los campos de los datos devueltos por la consulta de configuración. Esta tabla le permite controlar qué campo debe asignarse a cada propiedad de configuración (la opción \$1Usar como\$1\$1). También puede elegir qué valor seleccionar si hay varias filas en los datos devueltos.

Esta transformación requiere:
+ Un campo que se usará como origen de los nombres de campo.

  De forma predeterminada, la transformación usa el primer campo de cadena como origen. Para anular esta configuración predeterminada, seleccione **Nombre del campo** en la columna **Usar como** para el campo que desee usar en su lugar.
+ Un campo que se usará como origen de los valores.

  De forma predeterminada, la transformación usa el primer numérico como origen. Sin embargo, puede anular esta configuración predeterminada si selecciona **Valor del campo** en la columna **Usar como** para el campo que desee usar en su lugar.

Resulta útil cuando se visualizan datos de:
+ Calibre
+ Estadística
+ Gráfico circular

*Asignación de campos adicionales a etiquetas*

Si un campo no se asigna a la propiedad de configuración, Grafana lo usará automáticamente como origen de una etiqueta en el campo de salida.

Ejemplo:


| Name | DataCenter | Valor | 
| --- | --- | --- | 
|  ServidorA  |  EE. UU.  |  100  | 
|  ServidorB  |  UE  |  200  | 

Salida:


| Servera (etiquetas: DataCenter EE. UU.) | ServerB (etiquetas DataCenter: UE) | 
| --- | --- | 
|  10  |  20  | 

Las etiquetas adicionales ahora se pueden usar en el nombre para mostrar del campo para proporcionar nombres de campo más completos.

Si desea extraer la configuración de una consulta y aplicarla a otra, debe usar la transformación Configuración a partir de los resultados de la consulta.

*Ejemplo*

Input:


| Name | Valor | Máximo | 
| --- | --- | --- | 
|  ServidorA  |  10  |  100  | 
|  ServidorB  |  20  |  200  | 
|  ServidorC  |  30  |  300  | 

Salida:


| ServidorA (config: max=100) | ServidorB (config: max=200) | ServidorC (config: max=300) | 
| --- | --- | --- | 
|  10  |  20  |  30  | 

Como puede ver, cada fila de los datos de origen se convierte en un campo independiente. Cada campo tiene ahora un conjunto de opciones de configuración máxima. Las opciones como el mínimo, el máximo, la unidad y los umbrales forman parte de la configuración del campo y, si se configuran de esta manera, la visualización utilizará esta opción en lugar de las opciones configuradas manualmente en el panel de opciones del editor de paneles.

**Preparar series temporales**

Preparar la transformación de series temporales resulta útil cuando un origen de datos devuelve datos de serie temporal en un formato que no es compatible con el panel que se desea utilizar.

Esta transformación ayuda a resolver este problema al convertir los datos de serie temporal del formato ancho al formato largo o al revés.

Seleccione la opción **Series temporales de varios marcos** para transformar el marco de datos de serie temporal del formato ancho al formato largo.

Seleccione la opción **Series temporales anchas** para transformar el marco de datos de serie temporal del formato largo al formato ancho.

**De series a filas**

Use esta transformación para combinar el resultado de varias consultas de datos de serie temporal en un único resultado. Resulta útil cuando se usa la visualización del panel de tablas.

El resultado de esta transformación contendrá tres columnas: Tiempo, Métrica y Valor. La columna Métrica se agrega para que pueda ver fácilmente desde qué consulta se origina la métrica. Para personalizar este valor, defina Etiqueta en la consulta de origen.

En el siguiente ejemplo, tenemos dos consultas que devuelven datos de serie temporal. Se visualiza como dos tablas independientes antes de aplicar la transformación.

Consulta A:


| Time | Temperatura | 
| --- | --- | 
|  7/7/2020 11:34:20 A.M.  |  25  | 
|  7/7/2020 10:31:22 H  |  22  | 
|  7/7/2020 9:30:05 A.M.  |  19  | 

Consulta B:


| Time | Humedad | 
| --- | --- | 
|  7/7/2020 11:34:20 H  |  24  | 
|  7/7/2020 10:32:20 H  |  29  | 
|  7/7/2020 9:30:57 A.M.  |  33  | 

Este es el resultado después de aplicar la transformación De series a filas.


| Time | Métrica | Valor | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Temperatura  |  25  | 
|  7/7/2020 11:34:20 H  |  Humedad  |  22  | 
|  7/7/2020 10:32:20 H  |  Humedad  |  29  | 
|  7/7/2020 10:31:22 H  |  Temperatura  |  22  | 
|  7/7/2020 9:30:57 H  |  Humedad  |  33  | 
|  7/7/2020 9:30:05 A.M.  |  Temperatura  |  19  | 

**Ordenar por**

Esta transformación ordenará cada marco por el campo configurado. Cuando `reverse` está marcado, los valores se devolverán en el orden opuesto.

**Límite**

Utilice esta transformación para limitar el número de filas que se muestran.

En el ejemplo siguiente, tenemos la siguiente respuesta del origen de datos:


| Time | Métrica | Valor | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Temperatura  |  25  | 
|  7/7/2020 11:34:20 H  |  Humedad  |  22  | 
|  7/7/2020 10:32:20 H  |  Humedad  |  29  | 
|  7/7/2020 10:31:22 H  |  Temperatura  |  22  | 
|  7/7/2020 9:30:57 H  |  Humedad  |  33  | 
|  7/7/2020 9:30:05 A.M.  |  Temperatura  |  19  | 

Este es el resultado después de agregar una transformación Limitar con un valor de “3”:


| Time | Métrica | Valor | 
| --- | --- | --- | 
|  7/7/2020 11:34:20 H  |  Temperatura  |  25  | 
|  7/7/2020 11:34:20 H  |  Humedad  |  22  | 
|  7/7/2020 10:32:20 H  |  Humedad  |  29  | 

# Solución de problemas de consultas
<a name="v9-panels-query-troubleshoot"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 9.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte [Uso de la versión 10 de Grafana](using-grafana-v10.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

En esta página se proporciona información para resolver los problemas más comunes del panel de control.

**Obtengo resultados diferentes cuando reorganizo mis funciones**

El orden de las funciones es muy importante. Al igual que en matemáticas, el orden en el que coloques las funciones puede afectar al resultado.

**Inspección de la solicitud y la respuesta a la consulta**

Los problemas más comunes están relacionados con la consulta y la respuesta del origen de datos. Incluso si parece un error o un problema de visualización en Grafana, casi siempre es un problema con la consulta o la respuesta del origen de datos. Comience por inspeccionar la consulta y la respuesta del panel.

Para obtener más información, consulte [Inspect request and response data](v9-panels-panel-inspector.md).

**Mi consulta va lenta**

¿Cuántos puntos de datos devuelve su consulta? Una consulta que devuelva muchos puntos de datos será lenta. Pruebe esto:
+ En **Opciones de consulta**, limite el **Máximo de puntos de datos** devueltos.
+ En **Opciones de consulta**, aumente el tiempo de **Intervalo mínimo**.
+ En la consulta, utilice una función `group by`.