Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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.
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.
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.
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:
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.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-27 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."]]