レガシー SQL のデータ型

このドキュメントでは、BigQuery のレガシー SQL のクエリ構文でサポートされるデータ型について詳しく説明します。BigQuery では、標準 SQL のクエリ構文を使用してください。標準 SQL のデータ型については、標準 SQL のデータ型をご覧ください。

レガシー SQL のデータ型

データには、次のデータ型を含めることができます。

データ型 指定できる値
STRING 可変長文字(UTF-8)データ。
BYTES 可変長バイナリデータ。
  • インポートされた BYTES データは、BigQuery が読み取って変換できる Avro BYTES データを除き、base64 エンコードされている必要があります。
  • BigQuery テーブルから読み取られた BYTES データは、Avro の bytes データ型が適用される Avro 形式にエクスポートするのでない限り、base64 エンコードされます。
INTEGER 64 ビット符号付き整数。
FLOAT 倍精度浮動小数点形式。
NUMERIC レガシー SQL では NUMERIC のサポートに制限があります。詳しくは、レガシー SQL での NUMERIC をご覧ください。
BOOLEAN
  • CSV 形式: 1 または 0true または falset または fyes または noy または n(すべて大文字と小文字の区別なし)。
  • JSON 形式: true または false(大文字と小文字の区別なし)。
RECORD 1 つ以上の他のフィールドのコレクション。
TIMESTAMP

TIMESTAMP データ型は、UNIX のタイムスタンプまたはカレンダー日時として記述できます。BigQuery は、TIMESTAMP データをマイクロ秒の精度で UNIX タイムスタンプとして内部的に格納します。

UNIX タイムスタンプ

正または負の小数。正の数値はエポック(1970-01-01 00:00:00 UTC)からの秒数を指定し、負の数値はエポックまでの秒数を指定します。小数点以下最大 6 桁(マイクロ秒の精度)が保持されます。

日時文字列

YYYY-MM-DD HH:MM:SS の形式の日時文字列。UTCZ の指定子がサポートされます。

日時文字列ではタイムゾーン オフセットを指定できますが、BigQuery では値を内部形式に変換した後にオフセットは保持されません。元のタイムゾーン データを保持する必要がある場合は、タイムゾーン オフセットを別の列に格納します。1 桁のタイムゾーン オフセットを指定する場合は、先頭にゼロを付ける必要があります。

JSON 形式を使用する場合は、日時文字列を引用符で囲む必要があります。

次の例は、UNIX タイムスタンプと日時文字列両方の形式で特定の日付を記述する同一の方法を示しています。

イベント UNIX タイムスタンプ形式 日時文字列形式
オクラホマ シティ付近で小さな(M4.2)地震が発生

1408452095.220
1408452095.220000

2014-08-19 07:41:35.220 -05:00
2014-08-19 12:41:35.220 UTC
2014-08-19 12:41:35.220
2014-08-19 12:41:35.220000
2014-08-19T12:41:35.220Z
ニール アームストロングが月面に降り立つ

-14182916

1969-07-20 20:18:04
1969-07-20 20:18:04 UTC
1969-07-20T20:18:04
Y10k バグの修正期限

253402300800
2.53402300800e11

10000-01-01 00:00
DATE レガシー SQL では、DATE のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。
TIME レガシー SQL では、TIME のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。
DATETIME レガシー SQL では、DATETIME のサポートに制限があります。詳しくは、レガシー SQL の常用時をご覧ください。

レガシー SQL での NUMERIC

NUMERIC 型の値を読み込んで、分析関数で SELECT list (with aliases)GROUP BY keys、パススルー フィールドなどの非変更演算子を使ってそれらの値を処理できます。ただし、比較を含む NUMERIC 型の値に対する計算では、未定義の結果が生成されます。

レガシー SQL では、次のキャストおよび変換関数がサポートされています。

  • CAST(<numeric> AS STRING)
  • CAST(<string> AS NUMERIC)

レガシー 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 では、常用時の値は整数として解釈され、常用時の値である考える整数に対する演算子により、予期しない結果が生成されます。

常用時のデータ型で値をコンピューティングするには、DATEDATETIMETIME データ型に対する SQL 演算子がすべてサポートされている標準 SQL の使用を検討してください。

次のステップ

  • API を使用してフィールドのデータ型を設定するには、schema.fields.type をご覧ください。
  • 標準 SQL のデータ型については、データ型をご覧ください。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...