Memformat output dari cbt CLI
Dokumen ini menjelaskan cara memformat jenis data tertentu yang disimpan di baris Bigtable saat ditampilkan oleh CLI cbt
.
Contoh pemformatan
Mulai versi 0.12.0, CLI cbt
dapat memformat
jenis kompleks tertentu data yang disimpan dalam baris tabel.
Saat Anda menggunakan perintah cbt read
atau cbt lookup
, CLI cbt
dapat "pretty print" nilai yang disimpan dalam baris.
Contoh berikut menunjukkan output data dari CLI cbt
tanpa pemformatan.
----------------------------------------
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}"
Contoh berikut menunjukkan output data dari CLI cbt
dengan pemformatan.
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"
Mencetak baris dengan pemformatan
Untuk memformat kolom atau grup kolom, Anda harus memberikan file YAML yang menentukan format untuk kolom tersebut. Saat memanggil cbt lookup
atau cbt read
, Anda meneruskan jalur ke file YAML dengan argumen format-file
. Cuplikan berikut menunjukkan contoh pemanggilan cbt lookup
dengan
argumen format-file
yang diberikan.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
Menentukan format data kolom dalam YAML
Format file YAML harus menghubungkan nama kolom atau nama keluarga kolom dengan jenis data yang tersimpan di dalamnya. Cuplikan berikut menunjukkan contoh file pemformatan YAML.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
Cuplikan berikut menunjukkan konten 'cat.proto'.
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
Perhatikan contohnya:
- Kolom
protocol_buffer_definitions
menyediakan daftar file .proto yang dapat berisi jenis pesan buffering protokol yang akan digunakan untuk mendekode data protobuf. - Kolom
protocol_buffer_paths
menyediakan daftar jalur lokal yang dapat berisi file .proto untuk mendekode jenis buffer protokol. Anda tidak perlu menentukan lokasi impor buffering protokol standar, seperti pesan dalam paketgoogle/protobuf
. Kolom
columns
berisi daftar nama kolom dengan jenis data yang sesuai untuk setiap kolom:- Kolom
protobuf
memilikiencoding
yang ditetapkan ke "ProtocolBuffer" dantype
-nya disetel ke 'Cat'. CLIcbt
menafsirkan dan memformat semua nilai yang disimpan di kolom ini sebagai jenis pesan protoCat
. Jenis tersebut harus sesuai dengan jenis pesan yang ditentukan di salah satu file .proto yang disediakan untuk kolomprotocol_buffer_definition
. - Kolom
json
memiliki kolomencoding
yang ditetapkan ke "json".cbt
menafsirkan dan memformat semua nilai yang disimpan dalam kolom ini sebagai struktur JSON.
- Kolom
Kolom lain yang dapat Anda berikan:
default_encoding
: Kolom ini menentukan format default untuk semua kolom dalam tabel atau semua kolom dalam grup kolom.default_type
: Kolom ini menentukan jenis data default untuk kolom yang dienkode menggunakan buffering protokol, big-endian, dan little-endian.families
: Kolom ini menentukan encoding dan jenis untuk semua kolom dalam grup kolom. Anda dapat memberikandefault_encoding
dandefault_type
untuk grup kolom. Anda juga dapat mengganti encoding ini pada tingkat kolom dengan menyediakan kolomcolumns
yang mencantumkan kolom menurut nama dengan encoding dan jenis data yang sesuai, seperti yang ditampilkan dalam cuplikan berikut:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
Jenis data yang didukung
CLI cbt
mendukung pemformatan untuk beberapa jenis data yang kompleks. Tabel berikut mencantumkan jenis data dan string yang didukung untuk disediakan dalam file YAML untuk setiap jenis daftar. Nilai string tidak peka huruf besar/kecil.
Jenis data | Memformat nilai untuk YAML |
---|---|
Heksadesimal | Hex , H |
Big-endian | BigEndian , B |
Little-endian | LittleEndian , L |
Buffering protokol | ProtocolBuffer , P , PROTO |
JSON | JSON , J |
Tabel 1. Jenis data yang didukung untuk pemformatan dalam output cbt
.
- Encoding heksadesimal adalah jenis agnostik. Data ditampilkan sebagai representasi heksadesimal mentah dari data yang disimpan.
- Jenis yang tersedia untuk encoding big-end dan little-endian adalah
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,float32
, danfloat64
. Panjang data yang disimpan harus merupakan kelipatan jenis yang berukuran, dalam byte. Data ditampilkan sebagai skalar jika panjang yang disimpan cocok dengan ukuran jenis, atau sebagai array. Nama jenis tidak peka huruf besar/kecil. - Jenis yang diberikan untuk encoding protocol-buffer harus cocok dengan jenis pesan yang ditentukan dalam file definisi buffering protokol yang disediakan. Jenis-jenis ini tidak peka huruf besar/kecil. Jika tidak ada jenis yang ditentukan, nama kolom untuk data kolom yang ditampilkan akan ditetapkan secara default.
- Format nilai untuk YAML tidak peka huruf besar/kecil.