Formatta l'output dell'interfaccia a riga di comando cbt
Questo documento descrive come formattare tipi specifici di dati archiviati in
Le righe di Bigtable quando visualizzate dal
Interfaccia a riga di comando cbt
di Google.
Esempi di formattazione
A partire dalla versione 0.12.0, la cbt
CLI
può formattare
determinati tipi complessi di dati archiviati nelle righe della tabella.
Quando utilizzi il comando cbt read
o cbt lookup
, la cbt
CLI
può "stampare in un formato gradevole" i valori memorizzati nelle righe.
L'esempio seguente mostra l'output dei dati della cbt
CLI
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 della cbt
CLI
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"
Stampare le righe con la formattazione
Per formattare una colonna o una famiglia di colonne, devi fornire un file YAML che specifichi la formattazione della colonna. Quando chiami cbt lookup
o
cbt read
, devi passare il percorso del file YAML con l'argomento format-file
. Lo snippet seguente 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
Definire i formati dei dati delle colonne in YAML
Il file YAML di formattazione deve collegare i nomi delle colonne o delle famiglie di colonne con i tipi di dati memorizzati al loro interno. Lo snippet che segue 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;
}
Esempio:
- Il campo
protocol_buffer_definitions
fornisce un elenco di file .proto che possono contenere tipi di messaggi del buffer di protocollo da utilizzare per decodifica i dati protobuf. - Il campo
protocol_buffer_paths
fornisce un elenco di percorsi locali che possono contenere file .proto per la decodifica dei tipi di buffer del protocollo. Non è necessario specificare le posizioni del buffer di protocollo standard come i messaggi nel pacchettogoogle/protobuf
. Il campo
columns
contiene un elenco di nomi di colonne con i tipi di dati corrispondenti per ogni colonna:- La colonna
protobuf
haencoding
impostato su "ProtocolBuffer" etype
impostato su "Cat". Lacbt
CLI interprete e formatta tutti i valori memorizzati in questa colonna come tipo di messaggioCat
proto. Il tipo deve corrispondere a un tipo di messaggio definito in uno dei file .proto forniti per il campoprotocol_buffer_definition
. - Il campo
encoding
della colonnajson
è impostato su "json".cbt
interpreta e formatta tutti i valori archiviati in questa colonna come JSON alla struttura del centro di costo.
- La colonna
Altri campi che puoi fornire:
default_encoding
: questo campo definisce una formattazione predefinita per tutti tutte le colonne di una tabella o tutte le colonne di una famiglia di colonne.default_type
: questo campo definisce un tipo di dati predefinito per le colonne con codifica Protocol Buffer, big endian e little endian.families
: questo campo definisce le codifiche e i tipi per tutte le colonne all'interno di una famiglia di colonne. Puoi fornire undefault_encoding
e undefault_type
per una famiglia di colonne. Puoi anche sostituire queste codifiche a livello di colonna fornendo un campocolumns
che elenca le colonne per nome con la codifica e i tipi di dati appropriati, come mostrato nello snippet seguente:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
Tipi di dati supportati
La
Interfaccia a riga di comando cbt
supporta la formattazione per diversi tipi di dati complessi. Le seguenti
che elenca le stringhe e i tipi di dati supportati da fornire nel file YAML
per ogni tipo di elenco. I valori delle stringhe 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 dati non elaborati una rappresentazione esadecimale dei dati archiviati.
- I tipi disponibili per le codifiche big-endian e small-endian sono
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,float32
efloat64
. La lunghezza dei dati archiviati deve essere un multiplo del le dimensioni del tipo, in byte. I dati vengono visualizzati come scalari se corrisponde alla dimensione del tipo o come array. I nomi dei tipi non sono sensibile alle maiuscole. - I tipi specificati per la codifica protocol-buffer devono corrispondere ai tipi di messaggio definiti nei file di definizione del protocollo-buffer forniti. I tipi non sono sensibili alle maiuscole. Se non viene specificato alcun tipo, viene utilizzato per impostazione predefinita il nome della colonna per i dati della colonna visualizzati.
- I valori di formattazione per YAML non sono sensibili alle maiuscole.