レガシー SQL のデータ型
このドキュメントでは、BigQuery のレガシー SQL のクエリ構文でサポートされるデータ型について詳しく説明します。BigQuery で推奨されるクエリ構文は GoogleSQL です。GoogleSQL のデータ型については、GoogleSQL のデータ型をご覧ください。
レガシー SQL のデータ型
データには、次のデータ型を含めることができます。
データ型 | 指定できる値 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | 可変長文字(UTF-8)データ。 | ||||||||||||
BYTES |
可変長文字バイナリデータ。
|
||||||||||||
INTEGER |
64 ビット符号付き整数。 BigQuery API を使用して [-253+1, 253-1] の範囲外の整数(ほとんどの場合 9,007,199,254,740,991 を超える数)を整数型(INT64)の列に読み込む場合は、データの破損を避けるため、文字列として渡す必要があります。この問題は、JSON/ECMAScript の整数のサイズ制限が原因で発生します。詳細については、RFC 7159 の Numbers のセクションをご覧ください。 |
||||||||||||
FLOAT | 倍精度浮動小数点形式。 | ||||||||||||
NUMERIC | レガシー SQL では NUMERIC のサポートに制限があります詳細については、レガシー SQL の正確な数値をご覧ください。 | ||||||||||||
BIGNUMERIC | レガシー SQL では BIGNUMERIC のサポートに制限があります詳細については、レガシー SQL の正確な数値をご覧ください。 | ||||||||||||
BOOLEAN |
|
||||||||||||
RECORD | 1 つ以上の他のフィールドのコレクション。 | ||||||||||||
TIMESTAMP |
TIMESTAMP データ型は、UNIX のタイムスタンプまたはカレンダー日時として記述できます。BigQuery は、TIMESTAMP データをマイクロ秒の精度で UNIX タイムスタンプとして内部的に格納します。 UNIX タイムスタンプ 正または負の小数。正の数値はエポック(1970-01-01 00:00:00 UTC)からの秒数を指定し、負の数値はエポックまでの秒数を指定します。小数点以下最大 6 桁(マイクロ秒の精度)が保持されます。 日時文字列
日時文字列ではタイムゾーン オフセットを指定できますが、BigQuery では値を内部形式に変換した後にオフセットは保持されません。元のタイムゾーン データを保持する必要がある場合は、タイムゾーン オフセットを別の列に格納します。1 桁のタイムゾーン オフセットを指定する場合は、先頭にゼロを付ける必要があります。 JSON 形式を使用する場合は、日時文字列を引用符で囲む必要があります。 例 次の例は、UNIX タイムスタンプと日時文字列両方の形式で特定の日付を記述する同一の方法を示しています。
|
||||||||||||
DATE | レガシー SQL では、DATE のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。 | ||||||||||||
TIME | レガシー SQL では、TIME のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。 | ||||||||||||
DATETIME | レガシー SQL では、DATETIME のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。 |
レガシー SQL の正確な数値
SELECT list (with aliases)
、GROUP BY keys
、ウィンドウ関数のパススルー フィールドなどの非変更句の NUMERIC 値または BIGNUMERIC 値を読み取ることができます。ただし、比較を含む NUMERIC 値または BIGNUMERIC 値に対する計算では、未定義の結果が生成されます。
レガシー SQL では、次のキャストおよび変換関数がサポートされています。
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
レガシー SQL の常用時
常用時のデータ型 DATE、TIME、および DATETIME を読み込んで、ウィンドウ関数で SELECT list (with aliases)
、GROUP BY keys
、パススルー フィールドなどの非変更演算子を使ってそれらのデータ型を処理できます。ただし、常用時の値に対する計算(比較を含む)では、未定義の結果が生成されます。
レガシー SQL では、次のキャストおよび変換関数がサポートされています。
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
実際には、レガシー SQL では、常用時の値は整数として解釈され、常用時の値である考える整数に対する演算子により、予期しない結果が生成されます。
常用時のデータ型で値を計算するには、DATE、DATETIME、TIME データ型に対する SQL 演算子がすべてサポートされている GoogleSQL の使用を検討してください。
次のステップ
- API を使用してフィールドのデータ型を設定するには、
schema.fields.type
をご覧ください。 - GoogleSQL のデータ型については、データ型をご覧ください。