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

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

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

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

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

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

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 literal.

TIMESTAMP int64 (מומלץ), int32, uint32, google.protobuf.Timestamp

הערך מצוין במיקרו-שניות מאז ראשית זמן יוניקס (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 לא מוגדר בהודעת הפרוטו, הגבול הסופי של הטווח הזה לא מוגדר.

{
  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 אפשר לספק ערך מספרי עם כל רמת דיוק או קנה מידה שקטנים מ הטווח הנתמך ב-BigQuery.
BIGNUMERIC Decimal256 אפשר לספק ערך BIGNUMERIC עם דיוק או קנה מידה כלשהו שקטן מ הטווח הנתמך ב-BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

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

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

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

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

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

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

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