סוגי נתונים נתמכים של מאגר אחסון לפרוטוקולים ו-Arrow

ב-BigQuery Storage Write API‏ (gRPC), כל סוג נתונים של עמודה ב-BigQuery ממופה לסוגי קלט ולפורמטים ספציפיים של קידוד במאגר האחסון לפרוטוקולים וב-Apache Arrow. בטבלאות העזר שבמסמך הזה מפורטים המיפויים של הסוגים הנתמכים, טווחי הערכים והפרמטרים של ההמרות. מושגים בסיסיים שקשורים ל-API מפורטים במאמר סקירה כללית על BigQuery Storage Write API ‏ (gRPC).

סוגי נתונים נתמכים של מאגר אחסון לפרוטוקולים

בטבלה הבאה מוצגים סוגי הנתונים שנתמכים במאגרי אחסון לפרוטוקולים, ופורמט הקלט התואם ב-BigQuery:

סוג הנתונים ב-BigQuery סוגי מאגרי האחסון לפרוטוקולים שנתמכים
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE ‫int32 (מועדף), int64, string

הערך הוא מספר הימים מאז ראשית זמן יוניקס (Unix epoch) ‏(‎1970-01-01). הטווח החוקי הוא בין -719162 (0001-01-01) ל-2932896 (9999-12-31).

DATETIME, TIME string

הערך חייב להיות ליטרל מסוג DATETIME או TIME.

int64

משתמשים ב- CivilTimeEncoder class כדי לבצע את ההמרה.

FLOAT double,‏ float,‏ google.protobuf.DoubleValue,‏ google.protobuf.FloatValue
GEOGRAPHY string

הערך הוא גיאומטריה בפורמט WKT או GeoJson.

INTEGER int32, int64, uint32, enum, google.protobuf.Int32Value, google.protobuf.Int64Value, google.protobuf.UInt32Value
JSON string
NUMERIC, BIGNUMERIC int32, int64, uint32, uint64, double, float, string
bytes, google.protobuf.BytesValue

משתמשים במחלקה BigDecimalByteStringEncoder כדי לבצע את ההמרה.

STRING string, enum, google.protobuf.StringValue
TIME string

הערך חייב להיות ליטרל TIME.

TIMESTAMP ‫int64 (מועדף), int32, uint32, google.protobuf.Timestamp

הערך מצוין במיקרו-שניות מאז ראשית זמן יוניקס (Unix epoch) ‏(‎1970-01-01).

INTERVAL string, google.protobuf.Duration

ערך המחרוזת חייב להיות INTERVAL ליטרלי.

RANGE<T> message

סוג הודעה בתצוגת עץ ב-proto עם שני שדות, start ו-end, שבהם שני השדות חייבים להיות מאותו סוג מאגר אחסון לפרוטוקולים נתמך שתואם לסוג נתונים של BigQuery‏ T. הערך של T צריך להיות אחד מהבאים: DATE,‏ DATETIME או TIMESTAMP. אם שדה (start או end) לא מוגדר בהודעת הפרוטו, הוא מייצג גבול לא מוגבל. בדוגמה הבאה, f_range_date מייצג עמודה מסוג RANGE בטבלה. מכיוון שהשדה end לא מוגדר בהודעת ה-proto, הגבול הסופי של הטווח הזה לא מוגבל.

{
  f_range_date: {
    start: 1
  }
}
REPEATED FIELD array

סוג מערך ב-proto תואם לשדה חוזר ב-BigQuery.

RECORD message

סוג הודעה בתצוגת עץ ב-proto תואם לשדה רשומה ב-BigQuery.

סוגי נתונים נתמכים של Apache Arrow

בטבלה הבאה מפורטים סוגי הנתונים הנתמכים ב-Apache Arrow ופורמט הקלט התואם ב-BigQuery.

סוג הנתונים ב-BigQuery סוגי Apache Arrow נתמכים פרמטרים נתמכים של סוגים
BOOL Boolean
BYTES Binary
DATE Date יחידה = יום
String, int32
DATETIME Timestamp unit = MICROSECONDS

אזור הזמן ריק

FLOAT FloatingPoint Precision in {SINGLE, DOUBLE}
GEOGRAPHY Utf8

הערך הוא גיאומטריה בפורמט WKT או GeoJson.

INTEGER int bitWidth in {8, 16, 32, 64}

is_signed = false

JSON Utf8
NUMERIC Decimal128 אפשר לציין ערך NUMERIC עם כל דיוק או קנה מידה שקטנים מ הטווח שנתמך ב-BigQuery.
BIGNUMERIC Decimal256 אפשר לספק ערך BIGNUMERIC עם כל דיוק או קנה מידה שקטנים מ הטווח שנתמך ב-BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

אזור זמן = UTC

INTERVAL Interval יחידה ב-{YEAR_MONTH, DAY_TIME, MONTH_DAY_NANO}
Utf8
RANGE<T> Struct

ל-Arrow Struct צריכים להיות שני שדות משנה בשמות start ו-end.

בעמודה RANGE<DATE>, השדות חייבים להיות מסוג Arrow Date עם unit=Day.

בעמודה RANGE<DATETIME>, השדות צריכים להיות מסוג Arrow‏ Timestamp עם unit=MICROSECONDS, בלי אזור הזמן.

בשביל RANGE<TIMESTAMP>, השדות חייבים להיות מסוג Arrow Timestamp עם unit=MICROSECONDS, timezone=UTC.

ערך NULL בכל אחד מהשדות start ו-end יטופל כ-UNBOUNDED.

REPEATED FIELD List ערך של NULL חייב להיות מיוצג על ידי רשימה ריקה.
RECORD Struct