Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Formatta l'output dell'interfaccia a riga di comando cbt
Questo documento descrive come formattare tipi specifici di dati archiviati nelle righe di Bigtable quando vengono visualizzati dall'interfaccia a riga di comando cbt.
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.
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.
Il file YAML di formattazione deve collegare i nomi delle colonne o delle famiglie di colonne ai tipi di dati memorizzati al loro interno. Lo snippet seguente mostra un esempio di file di formattazione YAML.
Il campo protocol_buffer_definitions fornisce un elenco di file .proto che possono contenere tipi di messaggi di buffer di protocollo da utilizzare per decodificare 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 delle importazioni del buffer del protocollo standard, ad esempio i messaggi nel pacchetto google/protobuf.
Il campo columns contiene un elenco di nomi di colonne con i tipi di dati corrispondenti per ogni colonna:
La colonna protobuf ha encoding impostato su "ProtocolBuffer" e type impostato su "Cat". La cbt CLI interprete e formatta tutti i valori memorizzati in questa colonna come tipo di messaggio Cat proto. Il tipo deve corrispondere a un tipo di messaggio definito in uno dei file .proto forniti per il campo protocol_buffer_definition.
Il campo encoding della colonna json è impostato su "json". cbtinterpreta e formatta tutti i valori memorizzati in questa colonna come struttura JSON.
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 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 un default_encoding e un default_type per una famiglia di colonne. Puoi anche sostituire queste codifiche a livello di colonna fornendo un campo columns che elenchi le colonne per nome con la codifica e i tipi di dati appropriati, come mostrato nel seguente snippet:
La cbtCLI
supporta la formattazione di 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 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 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,
float32 e float64. La lunghezza dei dati archiviati deve essere un multiplo del
dimensione del tipo, in byte. I dati vengono visualizzati come scalari se la lunghezza memorizzata corrisponde alla dimensione del tipo oppure 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 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.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[[["\u003cp\u003eThe \u003ccode\u003ecbt\u003c/code\u003e CLI can format complex data types stored in Bigtable rows for improved readability when using \u003ccode\u003ecbt read\u003c/code\u003e or \u003ccode\u003ecbt lookup\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFormatting is defined in a YAML file, specifying data types and encodings for columns or column families, which is then passed to the \u003ccode\u003ecbt\u003c/code\u003e CLI using the \u003ccode\u003eformat-file\u003c/code\u003e argument.\u003c/p\u003e\n"],["\u003cp\u003eYAML formatting can include protocol buffer definitions and paths, allowing for the decoding and display of protobuf messages stored in Bigtable.\u003c/p\u003e\n"],["\u003cp\u003eSupported data types for formatting include hexadecimal, big-endian, little-endian, protocol buffer, and JSON, each with specific formatting values for the YAML file.\u003c/p\u003e\n"],["\u003cp\u003eA default formatting can be applied to an entire table, or specific column family in the YAML file, including default type, and encoding, with the possibility to override these at the column level.\u003c/p\u003e\n"]]],[],null,["# Format output from the cbt CLI\n\nFormat output from the\ncbt CLI\n==============================\n\nThis document describes how to format specific types of data stored in\nBigtable rows when displayed by the\n`cbt` CLI\n.\n\nExamples of formatting\n----------------------\n\nStarting with version 0.12.0, the\n`cbt` CLI\ncan format\n[certain complex types](#data-types) of data stored in table rows.\nWhen you use the `cbt read` or `cbt lookup` command, the\n`cbt` CLI\ncan\n\"pretty print\" values stored in the rows.\n\nThe following example shows data output from the\n`cbt` CLI\nwithout\nformatting. \n\n ----------------------------------------\n r1\n fam1:col1 @ 2022/03/09-11:19:45.966000\n \"\\n\\x05Brave\\x10\\x02\"\n fam1:col2 @ 2022/03/14-11:17:20.014000\n \"{\\\"name\\\": \\\"Brave\\\", \\\"age\\\": 2}\"\n\nThe following example shows data output from the\n`cbt` CLI\nwith\nformatting. \n\n r1\n fam1:col1 @ 2022/03/09-11:19:45.966000\n name: \"Brave\"\n age: 2\n fam1:col2 @ 2022/03/14-11:17:20.014000\n age: 2.00\n name: \"Brave\"\n\nPrint rows with formatting\n--------------------------\n\nTo format a column or column family, you must provide a YAML file that\nspecifies the formatting for that column. When you call `cbt lookup` or\n`cbt read`, you pass in the path to the YAML file with the `format-file`\nargument. The following snippet shows an example of calling `cbt lookup` with\nthe `format-file` argument supplied. \n\n cbt lookup my-table r1 format-file=/path/to/formatting.yml\n\n### Define column data formats in YAML\n\nThe formatting YAML file must connect the column names or column family names\nwith the data types stored within them. The following snippet shows an example\nof a YAML formatting file. \n\n protocol_buffer_definitions:\n - cat.proto\n protocol_buffer_paths:\n - testdata/\n\n\n columns:\n col1:\n encoding: ProtocolBuffer\n type: Cat\n\n col2:\n encoding: json\n\nThe following snippet shows the contents of 'cat.proto'. \n\n syntax = \"proto3\";\n package cats;\n\n option go_package = \"github.com/protocolbuffers/protobuf/examples/go/tutorialpb\";\n\n message Cat {\n string name = 1;\n int32 age = 2;\n }\n\nLooking at the example:\n\n- The `protocol_buffer_definitions` field provides a list of .proto files that can contain protocol buffer message types to use for decoding protobuf data.\n- The `protocol_buffer_paths` field provides a list of local paths that can contain .proto files for decoding protocol buffer types. You do not need to specify the locations of standard protocol buffer imports, such as messages in the `google/protobuf` package.\n- The `columns` field contains a list of column names with the corresponding\n data types for each column:\n\n - The `protobuf` column has its `encoding` set to \"ProtocolBuffer\" and its `type` is set to 'Cat'. The `cbt` CLI interprets and formats all values stored in this column as a `Cat` proto message type. The type must correspond to a message type defined in one of the .proto files provided for the `protocol_buffer_definition` field.\n - The `json` column has its `encoding` field set to \"json\". The `cbt` interprets and formats all values stored in this column as a JSON structure.\n\nOther fields that you can provide:\n\n- `default_encoding`: This field defines a default formatting for all all columns in a table or all columns in a column family.\n- `default_type`: This field defines a default data type for protocol buffer, big-endian, and little-endian encoded columns.\n- `families`: This field defines encodings and types for all columns within\n a column family. You can provide a `default_encoding` and `default_type`\n for a column family. You can also override these encodings at the column\n level by providing a `columns` field that lists columns by name with the\n appropriate encoding and data types, as shown in the following snippet:\n\n families:\n family1:\n default_encoding: BigEndian\n default_type: INT64\n columns:\n address:\n encoding: PROTO\n type: tutorial.Person\n\nSupported data types\n--------------------\n\nThe\n`cbt` CLI\nsupports formatting for several complex data types. The following\ntable lists the supported data types and strings to provide in the YAML file\nfor each of the list types. String values are not case-sensitive.\n\n**Table 1.** Data types supported for formatting in `cbt` output.\n\n- The hexadecimal encoding is type agnostic. Data are displayed as a raw hexadecimal representation of the stored data.\n- The available types for the big-endian and little-endian encodings are `int8`, `int16`, `int32`, `int64`, `uint8`, `uint16`, `uint32`, `uint64`, `float32`, and `float64`. Stored data length must be a multiple of the type sized, in bytes. Data are displayed as scalars if the stored length matches the type size, or as arrays otherwise. Types names are not case-sensitive.\n- The types given for the *protocol-buffer* encoding must match message types defined in provided protocol-buffer definition files. The types are not case-sensitive. If no type is specified, it defaults to the column name for the column data being displayed.\n- The formatting values for YAML are not case-sensitive."]]