

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Trasformazione dei dati
<a name="v9-panels-xform"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 9.x di Grafana.**  
Per le aree di lavoro Grafana che supportano la versione 10.x di Grafana, vedere. [Funzionamento nella versione 10 di Grafana](using-grafana-v10.md)  
Per le aree di lavoro Grafana che supportano la versione 8.x di Grafana, vedere. [Funzionamento in Grafana versione 8](using-grafana-v8.md)

Le trasformazioni sono un modo efficace per manipolare i dati restituiti da una query prima che il sistema applichi una visualizzazione. Utilizzando le trasformazioni, è possibile:
+ Rinominare i campi
+ Unisci i dati delle serie temporali
+ Esegui operazioni matematiche su più query
+ Usa l'output di una trasformazione come input per un'altra trasformazione

Per gli utenti che si affidano a più visualizzazioni dello stesso set di dati, le trasformazioni offrono un metodo efficiente per creare e gestire numerose dashboard.

È inoltre possibile utilizzare l'output di una trasformazione come input per un'altra trasformazione, il che si traduce in un aumento delle prestazioni.

**Nota**  
A volte il sistema non è in grado di rappresentare graficamente i dati trasformati. Quando ciò accade, fai clic sull'interruttore della **visualizzazione Tabella** sopra la visualizzazione per passare a una visualizzazione tabellare dei dati. Questo può aiutarti a comprendere il risultato finale delle tue trasformazioni.

## Tipi di trasformazione
<a name="v9-panels-xform-types"></a>

Grafana offre diversi modi per trasformare i dati. Di seguito è riportato un elenco completo delle funzioni di trasformazione.

## Ordine delle trasformazioni
<a name="v9-panels-xform-order"></a>

Quando sono presenti più trasformazioni, Grafana le applica nell'ordine in cui sono elencate. Ogni trasformazione crea un set di risultati che poi passa alla trasformazione successiva nella pipeline di elaborazione.

L'ordine in cui Grafana applica le trasformazioni influisce direttamente sui risultati. Ad esempio, se utilizzi una trasformazione Reduce per condensare tutti i risultati di una colonna in un unico valore, puoi applicare le trasformazioni solo a quel singolo valore.

## Aggiungi una funzione di trasformazione ai dati
<a name="v9-panels-xform-add"></a>

I seguenti passaggi ti guidano nell'aggiunta di una trasformazione ai dati.

**Per aggiungere una trasformazione a un pannello**

1. Vai al pannello in cui desideri aggiungere una o più trasformazioni.

1. Scegliete il titolo del pannello e fate clic su **Modifica**.

1. Seleziona la scheda **Transform** (Trasformazione).

1. Scegli una trasformazione. Viene visualizzata una riga di trasformazione in cui è possibile configurare le opzioni di trasformazione.

1. Per applicare un'altra trasformazione, scegli **Aggiungi trasformazione**. Questa trasformazione agisce sul set di risultati restituito dalla trasformazione precedente.

## Esegui il debug di una trasformazione
<a name="v9-panels-xform-debug"></a>

Per visualizzare i set di risultati in ingresso e in uscita della trasformazione, scegliete l'icona del bug sul lato destro della riga di trasformazione.

I set di risultati di input e output possono aiutarti a eseguire il debug di una trasformazione.

## Eliminare una trasformazione
<a name="v9-panels-xform-delete"></a>

Ti consigliamo di rimuovere le trasformazioni che non ti servono. Quando elimini una trasformazione, rimuovi i dati dalla visualizzazione.

Prerequisiti:

Identifica tutte le dashboard che si basano sulla trasformazione e informa gli utenti della dashboard interessati.

**Per eliminare una trasformazione**

1. Aprire un pannello per modificarlo.

1. Seleziona la scheda **Transform** (Trasformazione).

1. Scegli l'icona del cestino accanto alla trasformazione che desideri eliminare.

## Funzioni di trasformazione
<a name="v9-panels-xform-functions"></a>

È possibile eseguire le seguenti trasformazioni sui dati.

**Aggiungi campo dal calcolo**

Usa questa trasformazione per aggiungere un nuovo campo calcolato da altri due campi. Ogni trasformazione consente di aggiungere un nuovo campo.
+ **Modalità**: seleziona una modalità:
  + **Riduci riga**: applica il calcolo selezionato su ciascuna riga di campi selezionati in modo indipendente.
  + **Opzione binaria**: applica operazioni matematiche di base (somma, moltiplica, ecc.) sui valori in una singola riga da due campi selezionati.
+ **Nome campo**: seleziona i nomi dei campi che desideri utilizzare nel calcolo per il nuovo campo.
+ **Calcolo**: se si seleziona **la modalità Riduci righe**, viene visualizzato il campo **Calcolo**. Fai clic sul campo per visualizzare un elenco di scelte di calcolo che puoi utilizzare per creare il nuovo campo. Per informazioni sui calcoli disponibili, consulta [Tipi di calcolo](v9-panels-calculation-types.md).
+ **Operazione**: se si seleziona la modalità **opzione binaria**, vengono visualizzati i campi **Operazione**. Questi campi consentono di eseguire operazioni matematiche di base sui valori in un'unica riga da due campi selezionati. È inoltre possibile utilizzare valori numerici per operazioni binarie.
+ **Alias**: (Facoltativo) Inserisci il nome del nuovo campo. Se lasci questo campo vuoto, al campo verrà assegnato un nome corrispondente al calcolo.
+ **Sostituisci tutti i campi**: (Facoltativo) Seleziona questa opzione se desideri nascondere tutti gli altri campi e visualizzare solo il campo calcolato nella visualizzazione.

**Concatena i campi**

Questa trasformazione combina tutti i campi di tutti i frame in un unico risultato. Considerate queste due domande.

Interrogazione A:


| Temp | Tempo di operatività | 
| --- | --- | 
|  15.4  |  1230233  | 

Interrogazione B:


| AQI | Errori | 
| --- | --- | 
|  3.2  |  5  | 

Dopo aver concatenato i campi, il frame di dati sarebbe:


| Temp | Operatività | AQI | Errori | 
| --- | --- | --- | --- | 
|  15,4  |  1230233  |  3.2  |  5  | 

**Config dai risultati della query**

Questa trasformazione consente di selezionare una query e da essa estrarre opzioni standard come **Min**, **Max**, **Unit** e **Thresholds** e applicarle ad altri risultati della query. Ciò consente una configurazione dinamica della visualizzazione basata sulle query.

Se desideri estrarre una configurazione unica per ogni riga del risultato della query di configurazione, prova la trasformazione da righe a campi.

**Opzioni**
+ **Interrogazione di configurazione**: seleziona la query che restituisce i dati che desideri utilizzare come configurazione.
+ **Applica a**: seleziona i campi o le serie a cui applicare la configurazione.
+ **Applica alle opzioni**: in genere un tipo di campo o un'espressione regolare del nome di campo a seconda dell'opzione selezionata in **Applica a**.

**Converti il tipo di campo**

Questa trasformazione modifica il tipo di campo del campo specificato.
+ **Campo**: seleziona uno dei campi disponibili
+ **as**: seleziona il formato FieldType in cui convertire
  + **Numerico**: tenta di rendere numerici i valori
  + **Stringa**: renderà i valori stringhe
  + **Ora**: tenta di analizzare i valori come tempo
    + Mostrerà un'opzione per specificare un DateFormat come input da una stringa come yyyy-mm-dd o DD MM YYYY hh:mm:ss
  + **Booleano: renderà i valori booleani**

Ad esempio, è possibile modificare la seguente query selezionando il campo orario come Ora e il formato della data come YYYY.


| Orario | Segna | Valore | 
| --- | --- | --- | 
|  01/07/2017  |  sopra  |  25  | 
|  02/08/2018  |  sotto  |  22  | 
|  02/09/2019  |  sotto  |  29  | 
|  04/10/2020  |  sopra  |  22  | 

Il risultato:


| Orario | Mark | Valore | 
| --- | --- | --- | 
|  1/1/2017  |  sopra  |  25  | 
|  1/1/2018  |  sotto  |  22  | 
|  1/1/2019  |  sotto  |  29  | 
|  1/1/2020  |  sopra  |  22  | 

**Filtra i dati per nome**

Utilizzate questa trasformazione per rimuovere parti dei risultati della query.

Grafana visualizza il campo **Identificatore**, seguito dai campi restituiti dalla query.

Puoi applicare i filtri in due modi:
+ Immettere un'espressione regex.
+ Scegli un campo per attivare il filtro su quel campo. I campi filtrati vengono visualizzati con testo grigio scuro, i campi non filtrati hanno testo bianco.

**Filtra i dati per query**

Utilizzate questa trasformazione nei pannelli che hanno più interrogazioni, se volete nascondere una o più interrogazioni.

Grafana visualizza le lettere di identificazione della query in testo grigio scuro. Fai clic su un identificatore di query per attivare il filtro. Se la lettera di interrogazione è bianca, vengono visualizzati i risultati. Se la lettera di interrogazione è scura, i risultati vengono nascosti.

**Nota**  
Questa trasformazione non è disponibile per Graphite perché questa fonte di dati non supporta la correlazione dei dati restituiti con le query.

**Filtra i dati per valore**

Questa trasformazione consente di filtrare i dati direttamente in Grafana e rimuovere alcuni punti dati dai risultati della query. Hai la possibilità di includere o escludere i dati che soddisfano una o più condizioni da te definite. Le condizioni vengono applicate a un campo selezionato.

Questa trasformazione è utile se l'origine dati non filtra nativamente in base ai valori. È inoltre possibile utilizzarla per restringere i valori da visualizzare se si utilizza una query condivisa.

Le condizioni disponibili per tutti i campi sono:
+ **Regex**: corrisponde a un'espressione regex
+ **Is Null**: corrisponde se il valore è nullo
+ **Is Not Null**: corrisponde se il valore non è nullo
+ **Uguale**: corrisponde se il valore è uguale al valore specificato
+ **Diverso**: corrisponde se il valore è diverso dal valore specificato

Le condizioni disponibili per i campi numerici sono:
+ **Maggiore**: corrisponde se il valore è maggiore del valore specificato
+ **Inferiore**: corrisponde se il valore è inferiore al valore specificato
+ **Maggiore o uguale**: corrisponde se il valore è maggiore o uguale
+ **Minore o uguale**: corrisponde se il valore è inferiore o uguale
+ **Intervallo**: corrisponde a un intervallo compreso tra un minimo e un massimo specificati, inclusi il minimo e il massimo

Considerate il seguente set di dati:


| Orario | Temperatura | Altitude (Altitudine) | 
| --- | --- | --- | 
|  07/07/2020 11:34:23  |  32  |  101  | 
|  07/07/2020 11:34:22  |  28  |  125  | 
|  07/07/2020 11:34:21  |  26  |  110  | 
|  07/07/2020 11:34:20  |  23  |  98  | 
|  07/07/2020 10:32:24  |  31  |  95  | 
|  07/07/2020 10:31:22  |  20  |  85  | 
|  07/07/2020 9:30:57  |  19  |  101  | 

Se **includi** i punti dati con una temperatura inferiore a 30°C, la configurazione sarà la seguente:
+ **Tipo di filtro:** `Include`
+ **Condizione**: righe in cui `Temperature` corrispondono `Lower Than 30`

E otterrete il seguente risultato, in cui sono incluse solo le temperature inferiori a 30°C:


| Orario | Temperatura | Altitude (Altitudine) | 
| --- | --- | --- | 
|  07/07/2020 11:34:22  |  28  |  125  | 
|  07/07/2020 11:34:21  |  26  |  110  | 
|  07/07/2020 11:34:20  |  23  |  98  | 
|  07/07/2020 10:31:22  |  20  |  85  | 
|  07/07/2020 9:30:57  |  19  |  101  | 

Puoi aggiungere più di una condizione al filtro. Ad esempio, potresti voler includere i dati solo se l'altitudine è maggiore di 100. A tale scopo, aggiungi tale condizione alla seguente configurazione:
+ Tipo di filtro: `Include` righe che `Match All` condizionano
+ Condizione 1: righe in cui `Temperature` corrisponde `Lower` a `30`
+ Condizione 2 - Righe in cui `Altitude` corrisponde `Greater` a `100`

Quando hai più di una condizione, puoi scegliere se desideri che l'azione (includi/escludi) venga applicata alle righe che **soddisfano tutte le** condizioni o **soddisfano** una delle condizioni che hai aggiunto.

Nell'esempio precedente abbiamo scelto **Abbina tutto** perché volevamo includere le righe che hanno una temperatura inferiore a 30 E un'altitudine superiore a 100. Se volessimo invece includere le righe che hanno una temperatura inferiore a 30 O un'altitudine superiore a 100, selezioneremmo **Match any**. Ciò includerebbe la prima riga dei dati originali, che ha una temperatura di 32°C (non corrisponde alla prima condizione) ma un'altitudine di 101 (che corrisponde alla seconda condizione), quindi è inclusa.

Le condizioni non valide o configurate in modo incompleto vengono ignorate.

**Gruppo da**

Questa trasformazione raggruppa i dati in base a un valore di campo (colonna) specificato ed elabora i calcoli su ciascun gruppo. Fai clic per visualizzare un elenco di scelte di calcolo.

Ecco un esempio di dati originali.


| Orario | ID del server | Temperatura della CPU | Stato del server | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20AM  |  server 1  |  80  |  Arresto  | 
|  07/07/2020 11:34:20  |  server 3  |  62  |  OK  | 
|  07/07/2020 10:32:20  |  server 2  |  90  |  Sovraccarico  | 
|  07/07/2020 10:31:22  |  server 3  |  55  |  OK  | 
|  07/07/2020 9:30:57  |  server 3  |  62  |  Reebooting (Riavvio in corso)  | 
|  07/07/2020 9:30:05  |  server 2  |  88  |  OK  | 
|  07/07/2020 09:28:06  |  server 1  |  80  |  OK  | 
|  07/07/2020 09:25:05  |  server 2  |  88  |  OK  | 
|  07/07/2020 09:23:07  |  server 1  |  86  |  OK  | 

Questa trasformazione avviene in due fasi. Per prima cosa specificate uno o più campi in base ai quali raggruppare i dati. In questo modo verranno raggruppati tutti gli stessi valori di quei campi, come se li avessi ordinati. Ad esempio, se raggruppiamo i dati in base al campo Server ID, i dati verranno raggruppati in questo modo:


| Orario | ID del server | Temperatura della CPU | Stato del server | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20AM  |  server 1  |  80  |  Arresto  | 
|  07/07/2020 09:28:06  |  server 1  |  80  |  OK  | 
|  07/07/2020 09:23:07  |  server 1  |  86  |  OK  | 
|  07/07/2020 10:32:20  |  server 2  |  90  |  Sovraccarico  | 
|  07/07/2020 9:30:05  |  server 2  |  88  |  OK  | 
|  07/07/2020 09:25:05  |  server 2  |  88  |  OK  | 
|  07/07/2020 11:34:20  |  server 3  |  62  |  OK  | 
|  07/07/2020 10:31:22  |  server 3  |  55  |  OK  | 
|  07/07/2020 9:30:57  |  server 3  |  62  |  Reebooting (Riavvio in corso)  | 

Tutte le righe con lo stesso valore di Server ID vengono raggruppate.

Dopo aver scelto il campo in base al quale raggruppare i dati, puoi aggiungere vari calcoli sugli altri campi e applicare il calcolo a ciascun gruppo di righe. Ad esempio, potremmo voler calcolare la temperatura media della CPU per ciascuno di questi server. Quindi possiamo aggiungere il calcolo *medio* applicato al campo della temperatura della CPU per ottenere quanto segue:


| ID del server | Temperatura della CPU (media) | 
| --- | --- | 
|  server 1  |  82  | 
|  server 2  |  8.6  | 
|  server 3  |  59,6  | 

E possiamo aggiungere più di un calcolo. Per esempio:
+ Per il campo Time, possiamo calcolare l'*ultimo* valore, per sapere quando è stato ricevuto l'ultimo punto dati per ogni server
+ Per il campo Server Status, possiamo calcolare il valore *Last* per sapere qual è l'ultimo valore di stato per ogni server
+ Per il campo Temperature, possiamo anche calcolare l'*ultimo* valore per sapere qual è l'ultima temperatura monitorata per ogni server

Otterremmo quindi:


| ID del server | Temperatura della CPU (media) | Temperatura della CPU (ultima) | Ora (ultima) | Stato del server (ultimo) | 
| --- | --- | --- | --- | --- | 
|  server 1  |  82  |  80  |  07/07/2020 11:34:20  |  Arresto  | 
|  server 2  |  8.6  |  90  |  07/07/2020 10:32:20  |  Sovraccarico  | 
|  server 3  |  59,6  |  62  |  07/07/2020 11:34:20  |  OK  | 

Questa trasformazione consente di estrarre le informazioni chiave dalle serie temporali e di visualizzarle in modo conveniente.

**Partecipa per campo**

Usa questa trasformazione per unire più risultati in un'unica tabella. Ciò è particolarmente utile per convertire i risultati di più serie temporali in un'unica tabella ampia con un campo temporale condiviso.

*Connessione interna*

Un inner join unisce i dati di più tabelle in cui tutte le tabelle condividono lo stesso valore del campo selezionato. Questo tipo di join esclude i dati in cui i valori non corrispondono in tutti i risultati.

Utilizzate questa trasformazione per combinare i risultati di più query (combinati su un campo di join passato o sulla prima colonna time) in un unico risultato e rilasciate le righe in cui un'unione non può avvenire con successo.

Nell'esempio seguente, due query restituiscono i dati della tabella. Viene visualizzato come due tabelle separate prima di applicare la trasformazione Inner Join.

Interrogazione A:


| Orario | Processo | Tempo di operatività | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  25260122  | 
|  07/07/2020 11:24:20  |  locandina  |  123001233  | 
|  07/07/2020 11:14:20  |  locandina  |  345001233  | 

Interrogazione B:


| Orario | Server | Errori | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  server 1  |  15  | 
|  07/07/2020 11:24:20  |  server 2  |  5  | 
|  07/07/2020 11:04:20  |  server 3  |  10  | 

Il risultato dopo l'applicazione della trasformazione inner join è simile al seguente:


| Orario | Processo | Operatività | Server | Errori | 
| --- | --- | --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  25260122  |  server 1  |  15  | 
|  07/07/2020 11:24:20  |  locandina  |  123001233  |  server 2  |  5  | 

*Giunto esterno*

Un outer join include tutti i dati di un inner join e le righe in cui i valori non corrispondono in tutti gli input. Mentre l'inner join unisce la Query A e la Query B nel campo temporale, l'outer join include tutte le righe che non corrispondono nel campo time.

Nell'esempio seguente, due query restituiscono i dati della tabella. Viene visualizzato come due tabelle prima di applicare la trasformazione outer join.

Interrogazione A:


| Orario | Processo | Tempo di operatività | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  25260122  | 
|  07/07/2020 11:24:20  |  locandina  |  123001233  | 
|  07/07/2020 11:14:20  |  locandina  |  345001233  | 

Interrogazione B:


| Orario | Server | Errori | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  server 1  |  15  | 
|  07/07/2020 11:24:20  |  server 2  |  5  | 
|  07/07/2020 11:04:20  |  server 3  |  10  | 

Il risultato dopo l'applicazione della trasformazione outer join è simile al seguente:


| Orario | Processo | Operatività | Server | Errori | 
| --- | --- | --- | --- | --- | 
|  07/07/2020 11:04:20  |    |    |  server 3  |  10  | 
|  07/07/2020 11:14:20  |  locandina  |  345001233  |    |    | 
|  07/07/2020 11:34:20  |  nodo  |  25260122  |  server 1  |  15  | 
|  07/07/2020 11:24:20  |  locandina  |  123001233  |  server 2  |  5  | 

**Etichette per i campi**

Questa trasformazione modifica i risultati delle serie temporali che includono etichette o tag in una tabella in cui le chiavi e i valori di ogni etichetta sono inclusi nel risultato della tabella. Le etichette possono essere visualizzate come colonne o come valori di riga.

Dato il risultato di una query di due serie temporali:
+ Serie 1: etichette Server=Server A, Datacenter=EU
+ Serie 2 — etichette Server=Server B, Datacenter=EU

In modalità **Columns**, il risultato è simile al seguente:


| Orario | Server | Datacenter | Valore | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20  |  Server A  |  UE  |  1  | 
|  07/07/2020 11:34:20  |  Server B  |  UE  |  2  | 

In modalità «Righe», il risultato ha una tabella per ogni serie e mostra il valore di ogni etichetta in questo modo:


| etichetta | value | 
| --- | --- | 
|  Server  |  Server A  | 
|  Datacenter  |  UE  | 


| etichetta | value | 
| --- | --- | 
|  Server  |  Server B  | 
|  Datacenter  |  UE  | 

*Nome del campo Valore*

Se hai selezionato Server come **nome del campo Valore**, otterrai un campo per ogni valore dell'etichetta Server.


| Orario | Datacenter | Server A | Server B | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20  |  UE  |  1  |  2  | 

*Comportamento di fusione*

Il trasformatore delle etichette per i campi è composto internamente da due trasformazioni separate. Il primo agisce su una singola serie ed estrae le etichette nei campi. La seconda è la trasformazione di fusione che unisce tutti i risultati in un'unica tabella. La trasformazione di unione tenta di unire tutti i campi corrispondenti. Questa fase di unione è obbligatoria e non può essere disattivata. 

**Nota**  
La trasformazione di *fusione* può essere utilizzata da sola ed è descritta in dettaglio di seguito.

Per illustrare ciò, ecco un esempio in cui sono presenti due query che restituiscono serie temporali senza etichette sovrapposte.
+ Serie 1 — labels server=Servera
+ Serie 2 — labels datacenter=EU

Ciò risulterà innanzitutto in queste due tabelle:


| Orario | Server | Valore | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  Servire A  |  10  | 


| Orario | Datacenter | Valore | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  UE  |  20  | 

Dopo l'unione:


| Orario | Server | Valore | Datacenter | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20  |  Servire A  |  10  |    | 
|  07/07/2020 11:34:20  |    |  20  |  UE  | 

**Unione**

Utilizzate questa trasformazione per combinare il risultato di più interrogazioni in un unico risultato. Ciò è utile quando si utilizza la visualizzazione del pannello tabellare. I valori che possono essere uniti vengono combinati nella stessa riga. I valori sono unibili se i campi condivisi contengono gli stessi dati.

Nell'esempio seguente, abbiamo due query che restituiscono i dati della tabella. Viene visualizzato come due tabelle separate prima di applicare la trasformazione.

Interrogazione A:


| Orario | Processo | Tempo di operatività | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  25260122  | 
|  07/07/2020 11:24:20  |  locandina  |  123001233  | 

Interrogazione B:


| Orario | Processo | Errori | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  15  | 
|  07/07/2020 11:24:20  |  locandina  |  5  | 

Ecco il risultato dopo aver applicato la trasformazione Merge:


| Orario | Processo | Errori | Operatività | 
| --- | --- | --- | --- | 
|  07/07/2020 11:34:20  |  nodo  |  15  |  25260122  | 
|  07/07/2020 11:24:20  |  locandina  |  5  |  123001233  | 

**Organizza i campi**

Utilizzate questa trasformazione per rinominare, riordinare o nascondere i campi restituiti dalla query.

**Nota**  
Questa trasformazione funziona solo nei pannelli con una singola interrogazione. Se il pannello ha più interrogazioni, è necessario applicare una trasformazione Outer join o rimuovere le interrogazioni aggiuntive.

Grafana mostra un elenco di campi restituiti dalla query. Puoi:
+ Modifica l'ordine dei campi posizionando il cursore su un campo. Il cursore si trasforma in una mano e quindi puoi trascinare il campo nella nuova posizione.
+ Nascondi o mostra un campo facendo clic sull'icona a forma di occhio accanto al nome del campo.
+ Rinomina i campi digitando un nuovo nome nella casella Rinomina.

**Partizione per valori**

Questa trasformazione può aiutare a eliminare la necessità di più query sulla stessa origine dati con `WHERE` clausole diverse quando si rappresentano graficamente più serie. Prendi in considerazione una tabella SQL di metriche con i seguenti dati:


| Orario | Region | Valore | 
| --- | --- | --- | 
|  20/10/2022 12:00:00  |  US  |  1520  | 
|  20/10/2022 12:00:00  |  UE  |  2936  | 
|  20/10/2022 1:00:00  |  US  |  1327  | 
|  20/10/2022 1:00:00  |  UE  |  912  | 

Prima della versione 9.3, se volevi tracciare una linea di tendenza rossa per gli Stati Uniti e una blu per l'UE nello stesso TimeSeries pannello, probabilmente dovevi suddividerla in due domande:

```
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'
```

Ciò richiede anche che tu sappia in anticipo quali regioni esistono effettivamente nella tabella delle metriche.

Con il trasformatore *Partition by values*, ora puoi emettere una singola query e dividere i risultati per valori univoci in una o più colonne (`fields`) a tua scelta. Nell'esempio seguente viene utilizzato `Region`.

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


| Orario | Region | Valore | 
| --- | --- | --- | 
|  20/10/2022 12:00:00  |  US  |  1520  | 
|  20/10/2022 1:00:00  |  US  |  1327  | 


| Orario | Region | Valore | 
| --- | --- | --- | 
|  20/10/2022 12:00:00  |  UE  |  2936  | 
|  20/10/2022 1:00:00  |  UE  |  912  | 

**Ridurre**

La trasformazione *Reduce* applica un calcolo a ogni campo del frame e restituisce un singolo valore. I campi relativi all'ora vengono rimossi quando si applica questa trasformazione.

Considerate l'input:

Interrogazione A:


| Orario | Temp | Tempo di operatività | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  12.3  |  256122  | 
|  07/07/2020 11:24:20  |  15,4  |  1230233  | 

Interrogazione B:


| Orario | AQI | Errori | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  6,5  |  15  | 
|  07/07/2020 11:24:20  |  3.2  |  5  | 

Il trasformatore di riduzione ha due modalità:
+ **Da serie a righe**: crea una riga per ogni campo e una colonna per ogni calcolo.
+ **Riduci campi**: mantiene la struttura del frame esistente, ma comprime ogni campo in un unico valore.

Ad esempio, se hai utilizzato il **primo** e **l'ultimo** calcolo con una trasformazione **da serie a righe**, il risultato sarebbe:


| Campo | Primo | Ultimo | 
| --- | --- | --- | 
|  Temp  |  12.3  |  15.4  | 
|  Operatività  |  256122  |  1230233  | 
|  AQI  |  6,5  |  3.2  | 
|  Errori  |  15  |  5  | 

I campi Riduci con l'ultimo calcolo restituiscono due frame, ciascuno con una riga:

Interrogazione A:


| Temp | Tempo di operatività | 
| --- | --- | 
|  15.4  |  1230233  | 

Interrogazione B:


| AQI | Errori | 
| --- | --- | 
|  3.2  |  5  | 

**Rinomina tramite regex**

Utilizzate questa trasformazione per rinominare parti dei risultati della query utilizzando un'espressione regolare e un pattern sostitutivo.

È possibile specificare un'espressione regolare, che viene applicata solo alle corrispondenze, insieme a un pattern sostitutivo che supporti i riferimenti a ritroso. Ad esempio, immaginiamo di visualizzare l'utilizzo della CPU per host e di voler rimuovere il nome di dominio. È possibile impostare l'espressione regolare su `([^\.]+)\..+` e il pattern sostitutivo su`$1`, `web-01.example.com` diventerebbe. `web-01`

**Da righe a campi**

La trasformazione da righe a campi converte le righe in campi separati. Ciò può essere utile in quanto i campi possono essere modificati e configurati individualmente. Può anche utilizzare campi aggiuntivi come fonti per la configurazione dinamica dei campi o mapparli alle etichette dei campi. Le etichette aggiuntive possono quindi essere utilizzate per definire nomi di visualizzazione migliori per i campi risultanti.

Questa trasformazione include una tabella di campi che elenca tutti i campi nei dati restituiti dalla query di configurazione. Questa tabella consente di controllare quale campo deve essere mappato a ciascuna proprietà di configurazione (l'opzione\$1Usa come\$1\$1). Puoi anche scegliere quale valore selezionare se ci sono più righe nei dati restituiti.

Questa trasformazione richiede:
+ Un campo da usare come origine dei nomi dei campi.

  Per impostazione predefinita, la trasformazione utilizza il primo campo stringa come origine. Puoi sovrascrivere questa impostazione predefinita selezionando **Nome campo** nella colonna **Usa come** per il campo che desideri utilizzare al suo posto.
+ Un campo da usare come fonte di valori.

  Per impostazione predefinita, la trasformazione utilizza il primo campo numerico come origine. Tuttavia, puoi ignorare questa impostazione predefinita selezionando **Valore del campo** nella colonna **Usa come** per il campo che desideri utilizzare al suo posto.

Utile per visualizzare i dati in:
+ Gauge
+ Stat
+ Grafico a torta

*Associa campi aggiuntivi alle etichette*

Se un campo non è mappato alla proprietà di configurazione, Grafana lo utilizzerà automaticamente come sorgente per un'etichetta sul campo di output-

Esempio:


| Name | DataCenter | Valore | 
| --- | --- | --- | 
|  ServerA  |  US  |  100  | 
|  Server B  |  UE  |  200  | 

Output:


| ServerA (etichette DataCenter: US) | ServerB (etichette DataCenter: EU) | 
| --- | --- | 
|  10  |  20  | 

Le etichette aggiuntive possono ora essere utilizzate nel campo Nome visualizzato per fornire nomi di campo più completi.

Se vuoi estrarre la configurazione da una query e applicarla a un'altra, dovresti usare la configurazione dalla trasformazione dei risultati della query.

*Esempio*

Input:


| Name | Valore | Max | 
| --- | --- | --- | 
|  ServerA  |  10  |  100  | 
|  Server B  |  20  |  200  | 
|  Server C  |  30  |  300  | 

Output:


| ServerA (configurazione: max=100) | ServerB (configurazione: max=200) | ServerC (configurazione: max=300) | 
| --- | --- | --- | 
|  10  |  20  |  30  | 

Come puoi vedere, ogni riga dei dati di origine diventa un campo separato. Ogni campo ora ha anche un set di opzioni di configurazione massimo. Opzioni come Min, Max, Unit e Thresholds fanno tutte parte della configurazione del campo e, se impostate in questo modo, verranno utilizzate dalla visualizzazione al posto delle opzioni configurate manualmente nel riquadro delle opzioni dell'editor del pannello.

**Prepara le serie temporali**

La preparazione della trasformazione delle serie temporali è utile quando un'origine dati restituisce dati di serie temporali in un formato non supportato dal pannello che si desidera utilizzare.

Questa trasformazione consente di risolvere questo problema convertendo i dati delle serie temporali dal formato ampio al formato lungo o viceversa.

Seleziona l'opzione **Serie temporale a più fotogrammi** per trasformare l'intervallo di dati delle serie temporali dal formato ampio a quello lungo.

Seleziona l'opzione **Wide time series** per trasformare il frame di dati delle serie temporali dal formato lungo a quello ampio.

**Da serie a righe**

Utilizzate questa trasformazione per combinare il risultato di più interrogazioni di dati su serie temporali in un unico risultato. Ciò è utile quando si utilizza la visualizzazione del pannello tabellare.

Il risultato di questa trasformazione conterrà tre colonne: Time, Metric e Value. La colonna Metrica viene aggiunta in modo da poter vedere facilmente da quale query proviene la metrica. Personalizza questo valore definendo Label nella query di origine.

Nell'esempio seguente, abbiamo due query che restituiscono dati di serie temporali. Viene visualizzato come due tabelle separate prima di applicare la trasformazione.

Interrogazione A:


| Orario | Temperatura | 
| --- | --- | 
|  07/07/2020 11:34:20  |  25  | 
|  07/07/2020 10:31:22  |  22  | 
|  07/07/2020 9:30:05  |  19  | 

Interrogazione B:


| Orario | Umidità | 
| --- | --- | 
|  07/07/2020 11:34:20AM  |  24  | 
|  07/07/2020 10:32:20  |  29  | 
|  07/07/2020 9:30:57  |  33  | 

Ecco il risultato dopo aver applicato la trasformazione Series to rows.


| Orario | Metrica | Valore | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  Temperatura  |  25  | 
|  07/07/2020 11:34:20  |  Umidità  |  22  | 
|  07/07/2020 10:32:20AM  |  Umidità  |  29  | 
|  07/07/2020 10:31:22  |  Temperatura  |  22  | 
|  07/07/2020 9:30:57  |  Umidità  |  33  | 
|  07/07/2020 09:30:05  |  Temperatura  |  19  | 

**Ordina per**

Questa trasformazione ordinerà ogni frame in base al campo configurato. Quando `reverse` è selezionata, i valori verranno restituiti nell'ordine inverso.

**Limite**

Utilizzate questa trasformazione per limitare il numero di righe visualizzate.

Nell'esempio seguente, abbiamo la seguente risposta dalla fonte di dati:


| Orario | Metrica | Valore | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  Temperatura  |  25  | 
|  07/07/2020 11:34:20  |  Umidità  |  22  | 
|  07/07/2020 10:32:20AM  |  Umidità  |  29  | 
|  07/07/2020 10:31:22  |  Temperatura  |  22  | 
|  07/07/2020 9:30:57  |  Umidità  |  33  | 
|  07/07/2020 09:30:05  |  Temperatura  |  19  | 

Ecco il risultato dopo aver aggiunto una trasformazione Limit con un valore di '3':


| Orario | Metrica | Valore | 
| --- | --- | --- | 
|  07/07/2020 11:34:20  |  Temperatura  |  25  | 
|  07/07/2020 11:34:20  |  Umidità  |  22  | 
|  07/07/2020 10:32:20AM  |  Umidità  |  29  | 