- SCHEMAを指定して公開されたデータ構造を明示的に定義します。SCHEMAをアドホック スキーマ仕様を表わす文字列とともに使用します。他の値を指定するとエラーになります。アドホック スキーマを指定する場合、構造は出力格納形式ルールに準拠している必要があります。この句を指定しないと、DATASETデータ型インスタンスの作成に使用されたデータに基づいて、データベースによってスキーマが自動的に生成されます。
- 1行の出力データで構成される出力インスタンスにDO_AGGREGATEを指定します。DO_AGGREGATE句にはYまたはNのいずれかを設定します。ここで、Yは結果が集約され(デフォルト)、Nは集約されないことを示します。値は大文字小文字を区別しません。DO_AGGREGATEが除外されている場合、テーブル演算子は特定のグループ(ON句のSELECT文内のオプションのGROUP BY句で定義されている)に対応するすべてのデータを1つのDATASETデータ型インスタンスに集約します。
- UNIQUE_NAMESを指定して出力スキーマの作成時にUNIQUEレコード名または固定タイプ名を生成します。これは、最終結果にDATASETまたはJSONデータをネストするときに役立ちます。UNIQUE_NAMES句にはYまたはN(大文字小文字を区別しない)のいずれかを設定します。ここで、Yは自動生成された各名前が固有であり、Nが固有ではないことを示します。デフォルトはNです。格納形式がCSVの場合、"UNIQUE_NAMES"は無視されます。
- CSV格納形式のDATASET値に対してのみINCLUDE_ HEADERを指定します。INCLUDE_ HEADERはYまたはNのいずれかを受け入れます(大文字小文字を区別しません)。Yは、返される各DATASET値にファイル内の最初のレコードとしてヘッダー レコードが含まれていることを示します。Nはヘッダー レコードを省略することを意味します。デフォルト値は、ヘッダー レコードを含むYです。
SCHEMAがCSVスキーマを供給し、指定されたfield_namesと、非NULL値がある場合、DATASET値には、SCHEMAによって指定されたフィールド名を使用するヘッダーが含まれます。その後、フィールド名はスキーマから削除されます。INCLUDE_HEADERがNとして指定されている場合、ヘッダー レコードは書き込まれません。代わりに、フィールド名がスキーマから参照されます。
CSVスキーマがSCHEMAによって指定されておらず、INCLUDE_HEADERがYの場合、テーブルの列名はヘッダー レコードとしてCSVファイルに書き込まれます。INCLUDE_HEADERがNの場合、field_namesはスキーマ内ではNULLです。
SCHEMAがCSVスキーマを提供し、field_namesがNULLであれば、INCLUDE_HEADERがYの場合、NULLが無効なヘッダー レコードであるためエラーが発生します。INCLUDE_HEADERがNの場合、何のアクションも実行されません。
次のテーブルでは、SCHEMA句とINCLUDE_HEADER句のすべての組み合わせをまとめています。
スキーマ | INCLUDE_HEADER | アクション |
---|---|---|
スキーマなし | Y | ヘッダー レコードとしてテーブル列名を使用します。 |
N | "field_names":nullでスキーマを作成します。 | |
フィールド名を持つスキーマ | Y |
|
N |
|
|
"field_names":nullまたは "field_names":[]を持つスキーマ |
Y | エラー |
N |
|
さらに、RETURNS句を使用して、出力データ型または長さを指定します。デフォルトでは、最大長のAVROに公開するので、目的とする出力に対してはRETURNSを省略します。CSV格納形式出力の場合は、RETURNSを指定します。戻りタイプはDATASET STORAGE FORMAT CSVデータ型でなければなりません。
結果セットがテーブルに挿入された場合、DATASETテーブル列にCREATE TABLE文のWITH SCHEMA句から関連付けられているスキーマがない限り、スキーマはすべてのDATASET結果値に保存されます。その場合、スキーマはすべての値とともに保存されるわけではありません。