データ型マッピング
データ型マッピング
connector は、データソースの型を、スキーマで使用可能な対応するデータ型にマッピングします。以下のテーブルはこれらのマッピングを説明します。
Google BigQuery | CData スキーマ | |
STRING | string | |
BYTES | binary | |
INTEGER | long | |
FLOAT | double | |
NUMERIC | decimal | |
BIGNUMERIC | decimal | |
BOOLEAN | bool | |
DATE | date | |
TIME | time | |
DATETIME | datetime | |
TIMESTAMP | datetime | |
STRUCT | 下記参照 | |
ARRAY | 下記参照 | |
GEOGRAPHY | string | |
JSON | string | |
INTERVAL | string |
NUMERIC 型は38桁の精度をサポートし、BIGDECIMAL 型は76桁の精度をサポートすることに注意してください。 ほとんどのプラットフォームには、これらの値の精度を完全にサポートするdecimal 型がありません(.NET のdecimal は28桁をサポートし、Java のBigDecimal はデフォルトで38桁をサポートしています)。 この場合、クエリ時にこれらのカラムを文字列にキャストするか、IgnoreTypes=decimal を設定することでこれらを無視するように接続を構成することができます。
STRUCT およびARRAY 型
Google BigQuery では、単一の行に複合値を格納するために、STRUCT およびARRAY の2種類の型をサポートしています。 Google BigQuery の一部では、これらはRECORD やREPEATED 型としても知られています。
STRUCT は固定サイズの値を持つグループで、名前でアクセスされ、異なる型を持つことができます。
connector は構造体をフラット化し、個々のフィールドにドット付きの名前でアクセスできるようにします。
これらのドット付きの名前は引用符で囲む必要があることに注意してください。
-- trade_value STRUCT<currency STRING, value FLOAT> SELECT CONCAT([trade_value.value], ' ', NULLIF([trade_value.currency], 'USD')) FROM trades
ARRAY は同じ型を持つ値のグループであり、任意のサイズを持つことができます。 connector は配列を単一の複合値として扱い、JSON 集計としてレポートします。
STRUCT 型がARRAY フィールドを含むように、またはARRAY フィールドがSTRUCT 値のリストになるように、これらの型を組み合わせることができます。
フィールドの処理方法は、外側の型が優先されます。
/* Table contains fields: stocks STRUCT<symbol STRING, prices ARRAY<FLOAT>> offers: ARRAY<STRUCT<currency STRING, value FLOAT>> */ SELECT [stocks.symbol], /* ARRAY field can be read from STRUCT, but is converted to JSON */ [stocks.prices], [offers] /* STRUCT fields in an ARRAY cannot be accessed */ FROM market
INTERVAL 型
connector はINTERVAL 型を文字列で表します。クエリがINTERVAL 型を必要とする場合は常に、BigQuery SQL INTERVAL 形式を使用してINTERVAL を指定する必要があります。
YEAR-MONTH DAY HOUR:MINUTE:SECOND.FRACTIONINTERVAL 値を返すすべてのクエリは、ARRAY 集計に表示されない限りこの形式を使用し、その形式はconnector がどのようにデータを読み取るかに依存します。
例えば、「5年11ヶ月から10日と3時間2.5秒を引いた値」を正しい形式で表すと次のようになります。
5-11 -10 -3:0:0.2.5
型パラメータ
connector は、以下のデータ型のパラメータを公開します。 いずれの場合も型パラメータはオプションであり、Google BigQuery にはパラメータ化されていないデータ型のデフォルト値があります。
- STRING(length)
- BYTES(length)
- NUMERIC(precision) またはNUMERIC(precision, scale)
- BIGNUMERIC(precision) またはBIGNUMERIC(precision, scale)
これらのパラメータは、主にテーブルに書き込まれるデータを制限するためのものです。 これらは、STRING とBYTES ではカラムサイズとして、 NUMERIC とBIGNUMERIC では数値の精度とスケールとしてテーブルのメタデータに含まれます。
型パラメータはクエリには影響せず、クエリメタデータにはレポートされません。
例えば、以下の例では、入力がa STRING(100) およびb STRING(100) であっても、CONCAT の出力はただのSTRING です。
SELECT CONCAT(a, b) FROM table_with_length_params