Formatta l'output dell'interfaccia a riga di comando cbt
L'interfaccia a riga di comando
cbt
ti consente di formattare i dati delle righe Bigtable codificati quando
visualizzi i dati nel terminale. La formattazione dei dati ti aiuta a esaminare e
risolvere i problemi relativi ai tipi di dati complessi direttamente dalla riga di comando.
Esempi di formattazione
A partire dalla versione 0.12.0, la CLI cbt può formattare alcuni tipi complessi di dati archiviati nelle righe della tabella.
Quando utilizzi il comando cbt read o cbt lookup, la
CLI cbt
può
"formattare il codice" i valori memorizzati nelle righe.
L'esempio seguente mostra l'output dei dati dall'interfaccia a riga di comando cbt senza formattazione.
----------------------------------------
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
"\n\x05Brave\x10\x02"
fam1:col2 @ 2022/03/14-11:17:20.014000
"{\"name\": \"Brave\", \"age\": 2}"
L'esempio seguente mostra l'output dei dati dall'interfaccia a riga di comando cbt con formattazione.
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
name: "Brave"
age: 2
fam1:col2 @ 2022/03/14-11:17:20.014000
age: 2.00
name: "Brave"
Stampa righe con formattazione
Per formattare una colonna o una famiglia di colonne, devi fornire un file YAML che
specifichi la formattazione per quella colonna. Quando chiami cbt lookup o
cbt read, passi il percorso del file YAML con l'argomento format-file. Il seguente snippet mostra un esempio di chiamata di cbt lookup con l'argomento format-file fornito.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
Definisci i formati dei dati delle colonne in YAML
Il file YAML di formattazione deve collegare i nomi delle colonne o famiglia di colonne con i tipi di dati memorizzati al loro interno. Il seguente snippet mostra un esempio di un file di formattazione YAML.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
Il seguente snippet mostra i contenuti di "cat.proto".
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
Analizzando l'esempio:
- Il campo
protocol_buffer_definitionsfornisce un elenco di file .proto che possono contenere tipi di messaggi del buffer di protocollo da utilizzare per la decodifica dei dati protobuf. - Il campo
protocol_buffer_pathsfornisce un elenco di percorsi locali che possono contenere file .proto per la decodifica dei tipi di buffer di protocollo. Non è necessario specificare le posizioni delle importazioni standard del buffer di protocollo, come i messaggi nel pacchettogoogle/protobuf. Il campo
columnscontiene un elenco di nomi di colonne con i tipi di dati corrispondenti per ogni colonna:- La colonna
protobufhaencodingimpostato su "ProtocolBuffer" etypeimpostato su "Cat". La CLIcbtinterpreta e formatta tutti i valori archiviati in questa colonna come tipo di messaggio protoCat. Il tipo deve corrispondere a un tipo di messaggio definito in uno dei file .proto forniti per il campoprotocol_buffer_definition. - La colonna
jsonha il campoencodingimpostato su "json".cbtinterpreta e formatta tutti i valori archiviati in questa colonna come struttura JSON.
- La colonna
Altri campi che puoi fornire:
default_encoding: questo campo definisce una formattazione predefinita per tutte le colonne di una tabella o di una famiglia di colonne.default_type: questo campo definisce un tipo di dati predefinito per le colonne codificate con buffer di protocollo, big-endian e little-endian.families: questo campo definisce codifiche e tipi per tutte le colonne all'interno di una famiglia di colonne. Puoi fornire undefault_encodinge undefault_typeper una famiglia di colonne. Puoi anche eseguire l'override di queste codifiche a livello di colonna fornendo un campocolumnsche elenca le colonne per nome con la codifica e i tipi di dati appropriati, come mostrato nel seguente snippet:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
Tipi di dati supportati
La CLI
cbt
supporta la formattazione per diversi tipi di dati complessi. La tabella seguente elenca i tipi di dati e le stringhe supportati da fornire nel file YAML per ciascun tipo di elenco. I valori stringa non sono sensibili alle maiuscole.
| Tipo di dati | Valore di formattazione per YAML |
|---|---|
| Esadecimale | Hex, H |
| Big-endian | BigEndian, B |
| Little-endian | LittleEndian, L |
| Buffer di protocollo | ProtocolBuffer, P, PROTO |
| JSON | JSON, J |
Tabella 1. Tipi di dati supportati per la formattazione nell'output cbt.
- La codifica esadecimale è indipendente dal tipo. I dati vengono visualizzati come rappresentazione esadecimale non elaborata dei dati archiviati.
- I tipi disponibili per le codifiche big-endian e little-endian sono
int8,int16,int32,int64,uint8,uint16,uint32,uint64,float32efloat64. La lunghezza dei dati archiviati deve essere un multiplo della dimensione del tipo, in byte. I dati vengono visualizzati come scalari se la lunghezza memorizzata corrisponde alla dimensione del tipo o come array in caso contrario. I nomi dei tipi non sono sensibili alle maiuscole. - I tipi specificati per la codifica protocol-buffer devono corrispondere ai tipi di messaggio definiti nei file di definizione protocol-buffer forniti. I tipi non sono sensibili alle maiuscole. Se non viene specificato alcun tipo, il valore predefinito è il nome della colonna per i dati della colonna visualizzati.
- I valori di formattazione per YAML non sono sensibili alle maiuscole.