Formatar a saída da CLI cbt
Neste documento, descrevemos como formatar tipos específicos de dados armazenados em
linhas do Bigtable quando exibidos pela
CLI cbt
.
Exemplos de formatação
A partir da versão 0.12.0, a
CLI cbt
pode formatar
determinados tipos complexos de dados armazenados em linhas da tabela.
Quando você usa o comando cbt read
ou cbt lookup
, a
CLI cbt
pode
"estilizar a formatação" dos valores armazenados nas linhas.
O exemplo a seguir mostra a saída de dados da
CLI cbt
sem
formatação.
----------------------------------------
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}"
O exemplo a seguir mostra a saída de dados da
CLI cbt
com
formatação.
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"
Imprimir linhas com formatação
Para formatar uma coluna ou um grupo de colunas, forneça um arquivo YAML que especifique a formatação dela. Ao chamar cbt lookup
ou cbt read
, você passa o caminho para o arquivo YAML com o argumento format-file
. O snippet a seguir mostra um exemplo de como chamar cbt lookup
com o argumento format-file
fornecido.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
Definir formatos de dados de colunas em YAML
O arquivo YAML de formatação precisa conectar os nomes das colunas ou dos nomes das colunas aos tipos de dados armazenados nelas. O snippet a seguir mostra um exemplo de um arquivo de formatação YAML.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
O snippet a seguir mostra o conteúdo de "cat.proto".
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
Analisando o exemplo:
- O campo
protocol_buffer_definitions
fornece uma lista de arquivos .proto que podem conter tipos de mensagem de buffer de protocolo a serem usados para decodificar dados protobuf. - O campo
protocol_buffer_paths
fornece uma lista de caminhos locais que podem conter arquivos .proto para decodificar tipos de buffer de protocolo. Não é necessário especificar os locais das importações de buffer de protocolo padrão, como mensagens no pacotegoogle/protobuf
. O campo
columns
contém uma lista de nomes de colunas com os tipos de dados correspondentes para cada coluna:- A coluna
protobuf
tem oencoding
definido como "ProtocolBuffer" e otype
está definido como "Cat". A CLIcbt
interpreta e formata todos os valores armazenados nessa coluna como um tipo de mensagem protoCat
. O tipo precisa corresponder a um tipo de mensagem definido em um dos arquivos .proto fornecidos para o campoprotocol_buffer_definition
. - A coluna
json
tem o campoencoding
definido como "json". Ocbt
interpreta e formata todos os valores armazenados nessa coluna como uma estrutura JSON.
- A coluna
Outros campos que você pode fornecer:
default_encoding
: este campo define uma formatação padrão para todas as colunas de uma tabela ou todas as colunas de um grupo.default_type
: este campo define um tipo de dados padrão para o buffer de protocolo, as colunas codificadas big-endian e little-endian.families
: este campo define codificações e tipos para todas as colunas em um grupo. Você pode fornecer umdefault_encoding
e umdefault_type
para um grupo de colunas. Também é possível modificar essas codificações no nível da coluna fornecendo um campocolumns
que liste as colunas por nome com os tipos de codificação e dados apropriados, conforme mostrado no snippet a seguir:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
Tipos de dados compatíveis
A
CLI cbt
oferece suporte à formatação para vários tipos de dados complexos. A tabela a seguir lista os tipos de dados e strings compatíveis para fornecer no arquivo YAML para cada um dos tipos de lista. Os valores de string não diferenciam maiúsculas de minúsculas.
Tipo de dado | Como formatar o valor para YAML |
---|---|
Codificação | Hex , H |
Big-endian | BigEndian , B |
Little-endian | LittleEndian , L |
Buffer de protocolo | ProtocolBuffer , P , PROTO |
JSON | JSON , J |
Tabela 1. Tipos de dados compatíveis com formatação na saída cbt
.
- A codificação hexadecimal é do tipo agnóstico. Os dados são exibidos como uma representação hexadecimal bruta dos dados armazenados.
- Os tipos disponíveis para as codificações big-endian e little-endian são
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,float32
efloat64
. O comprimento de dados armazenados precisa ser um múltiplo do tipo dimensionado em bytes. Os dados serão exibidos como escalares se o comprimento armazenado corresponder ao tamanho do tipo. Caso contrário, os dados serão matrizes. Os nomes dos tipos não diferenciam maiúsculas de minúsculas. - Os tipos fornecidos para a codificação buffer de protocolo precisam corresponder aos tipos de mensagens definidos nos arquivos de definição do buffer de protocolo fornecidos. Os tipos não diferenciam maiúsculas de minúsculas. Se nenhum tipo for especificado, o padrão será o nome da coluna para os dados da coluna que estão sendo exibidos.
- Os valores de formatação para YAML não diferenciam maiúsculas de minúsculas.