Memformat output dari CLI cbt

Dokumen ini menjelaskan cara memformat jenis data tertentu yang disimpan dalam baris Bigtable saat ditampilkan oleh CLI cbt.

Contoh pemformatan

Mulai versi 0.12.0, cbt CLI dapat memformat jenis kompleks tertentu data yang disimpan di baris tabel. Saat Anda menggunakan perintah cbt read atau cbt lookup, cbt CLI dapat "mencetak dengan rapi" 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"

Untuk memformat kolom atau grup kolom, Anda harus menyediakan 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 disediakan.

cbt lookup my-table r1 format-file=/path/to/formatting.yml

Menentukan format data kolom dalam YAML

File YAML pemformatan harus menghubungkan nama kolom atau nama keluarga kolom dengan jenis data yang disimpan 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 menampilkan 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;
}

Melihat contoh:

  • Kolom protocol_buffer_definitions memberikan daftar file .proto yang dapat berisi jenis pesan buffering protokol untuk digunakan dalam mendekode data protobuf.
  • Kolom protocol_buffer_paths memberikan daftar jalur lokal yang dapat berisi file .proto untuk mendekode jenis buffering protokol. Anda tidak perlu menentukan lokasi impor buffering protokol standar, seperti pesan dalam paket google/protobuf.
  • Kolom columns berisi daftar nama kolom dengan jenis data yang sesuai untuk setiap kolom:

    • Kolom protobuf memiliki encoding yang ditetapkan ke "ProtocolBuffer" dan type-nya ditetapkan ke 'Cat'. CLI cbt menafsirkan dan memformat semua nilai yang disimpan di kolom ini sebagai jenis pesan proto Cat. Jenis harus sesuai dengan jenis pesan yang ditentukan dalam salah satu file .proto yang disediakan untuk kolom protocol_buffer_definition.
    • Kolom json memiliki kolom encoding yang ditetapkan ke "json". cbt menafsirkan dan memformat semua nilai yang disimpan di kolom ini sebagai struktur JSON.

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 buffering protokol, big-endian, dan little-endian.
  • families: Kolom ini menentukan encoding dan jenis untuk semua kolom dalam grup kolom. Anda dapat memberikan default_encoding dan default_type untuk keluarga kolom. Anda juga dapat mengganti encoding ini di tingkat kolom dengan menyediakan kolom columns yang mencantumkan kolom menurut nama dengan encoding dan jenis data yang sesuai, seperti yang ditunjukkan 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 diberikan 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 tidak bergantung pada jenis. Data ditampilkan sebagai representasi heksadesimal mentah dari data yang disimpan.
  • Jenis yang tersedia untuk encoding big-endian dan little-endian adalah int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, dan float64. Panjang data yang disimpan harus merupakan kelipatan ukuran jenis, 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 buffering protokol harus cocok dengan jenis pesan yang ditentukan dalam file definisi buffering protokol yang disediakan. Jenis ini tidak peka huruf besar/kecil. Jika tidak ada jenis yang ditentukan, jenis tersebut akan ditetapkan secara default ke nama kolom untuk data kolom yang ditampilkan.
  • Nilai pemformatan untuk YAML tidak peka huruf besar/kecil.