עיצוב הפלט מ-CLI של cbt
ממשק שורת הפקודה (CLI) של cbt מאפשר לעצב נתונים מקודדים של שורות ב-Bigtable כשמציגים את הנתונים במסוף. עיצוב הנתונים עוזר לכם לבדוק ולפתור בעיות בסוגי נתונים מורכבים ישירות משורת הפקודה.
דוגמאות לעיצוב
החל מגרסה 0.12.0, ממשק שורת הפקודה (CLI) של cbt יכול לעצב סוגים מורכבים מסוימים של נתונים שמאוחסנים בשורות בטבלה.
כשמשתמשים בפקודה cbt read או בפקודה cbt lookup, אפשר להשתמש ב-CLI של cbt כדי להציג את הערכים שמאוחסנים בשורות בפורמט קריא.
בדוגמה הבאה מוצג פלט נתונים מ-cbt CLI ללא עיצוב.
----------------------------------------
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}"
בדוגמה הבאה מוצג פלט נתונים מ-CLI של cbt עם עיצוב.
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"
הדפסת שורות עם עיצוב
כדי לעצב עמודה או קבוצת עמודות, צריך לספק קובץ YAML שבו מצוין העיצוב של העמודה. כשמתקשרים אל cbt lookup או אל cbt read, מעבירים את הנתיב לקובץ ה-YAML עם הארגומנט format-file. בקטע הקוד הבא מוצגת דוגמה להפעלה של cbt lookup עם הארגומנט format-file.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
הגדרת פורמטים של נתוני עמודות ב-YAML
קובץ ה-YAML של העיצוב צריך לקשר בין שמות העמודות או שמות משפחות העמודות לבין סוגי הנתונים שמאוחסנים בהן. בקטע הקוד הבא מוצג קובץ YAML לדוגמה לעיצוב.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
בקטע הקוד הבא מוצג התוכן של cat.proto.
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
בדוגמה הזו:
- השדה
protocol_buffer_definitionsמספק רשימה של קובצי .proto שיכולים להכיל סוגי הודעות של מאגר אחסון לפרוטוקולים לשימוש בפענוח נתוני protobuf. - השדה
protocol_buffer_pathsמספק רשימה של נתיבים מקומיים שיכולים להכיל קובצי .proto לפענוח סוגים של מאגר אחסון לפרוטוקולים. אין צורך לציין את המיקומים של ייבוא סטנדרטי של מאגרי אחסון לפרוטוקולים, כמו הודעות בחבילהgoogle/protobuf. השדה
columnsמכיל רשימה של שמות עמודות עם סוגי הנתונים המתאימים לכל עמודה:- העמודה
protobufמוגדרת כ-ProtocolBuffer בשדהencoding, והשדהtypeמוגדר כ-Cat. ממשק שורת הפקודה (CLI) cbtמפרש ומעצב את כל הערכים שמאוחסנים בעמודה הזו כסוג הודעת פרוטוCat. הסוג צריך להיות תואם לסוג הודעה שמוגדר באחד מקובצי ה-proto שסופקו לשדהprotocol_buffer_definition. - השדה
encodingבעמודהjsonמוגדר כ-'json'. הפונקציהcbtמפרשת ומעצבת את כל הערכים שמאוחסנים בעמודה הזו כמבנה JSON.
- העמודה
שדות אחרים שאפשר לספק:
-
default_encoding: השדה הזה מגדיר פורמט ברירת מחדל לכל העמודות בטבלה או לכל העמודות במשפחת עמודות. -
default_type: השדה הזה מגדיר סוג נתונים שמוגדר כברירת מחדל לעמודות מקודדות של מאגר אחסון לפרוטוקולים, big-endian ו-little-endian.
families: השדה הזה מגדיר קידודים וסוגים לכל העמודות במשפחת עמודות. אפשר לספקdefault_encodingוdefault_typeעבור קבוצת עמודות. אפשר גם לשנות את ההגדרות האלה ברמת העמודה. לשם כך, צריך לספק שדהcolumnsשבו מפורטות העמודות לפי שם עם הקידוד וסוגי הנתונים המתאימים, כמו בדוגמה הבאה:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
סוגי נתונים נתמכים
cbt CLI
תומך בעיצוב של כמה סוגים מורכבים של נתונים. בטבלה הבאה מפורטים סוגי הנתונים והמחרוזות הנתמכים שצריך לציין בקובץ ה-YAML לכל אחד מסוגי הרשימות. ערכי מחרוזת לא תלויי אותיות רישיות.
| סוג נתונים | ערך הפורמט עבור YAML |
|---|---|
| הקסדצימלי | Hex, H |
| Big-endian | BigEndian, B |
| Little-endian | LittleEndian, L |
| מאגר אחסון לפרוטוקולים | ProtocolBuffer, P, PROTO |
| JSON | JSON, J |
טבלה 1. סוגי הנתונים שנתמכים לעיצוב בפלט של cbt.
- הקידוד ההקסדצימלי לא תלוי בסוג. הנתונים מוצגים כייצוג הקסדצימלי של הנתונים המאוחסנים.
- הסוגים הזמינים לקידודים big-endian ו-little-endian הם
int8,int16,int32,int64,uint8,uint16,uint32,uint64,float32ו-float64. אורך הנתונים המאוחסנים חייב להיות כפולה של גודל הסוג, בבייטים. הנתונים מוצגים כערכים סקלריים אם האורך המאוחסן תואם לגודל הסוג, או כמערכים אחרת. בשמות של סוגים אין הבחנה בין אותיות רישיות לרגילות. - הסוגים שצוינו עבור קידוד protocol-buffer צריכים להיות זהים לסוגי ההודעות שמוגדרים בקובצי ההגדרה של protocol-buffer שסופקו. הסוגים לא תלויי אותיות רישיות. אם לא מציינים סוג, ברירת המחדל היא שם העמודה של נתוני העמודה שמוצגים.
- הערכים של הפורמט ב-YAML אינם תלויי אותיות רישיות.