適用対象: Databricks Runtime
この記事では、Databricks Runtime での ANSI 準拠について説明します。 Databricks SQL の ANSI モードについては、「ANSI_MODE」を参照してください。
Spark SQL には、ANSI SQL 標準への準拠をサポートするために、spark.sql.ansi.enabled
と spark.sql.storeAssignmentPolicy
の 2 つのオプションがあります。
spark.sql.ansi.enabled
が true
に設定されている場合、Spark SQL は、Hive 準拠するのではなく、ANSI 準拠の言語を使用します。 たとえば、SQL の演算子/関数への入力が無効である場合、Spark は、null の結果を返すのではなく、実行時に例外をスローします。 一部の ANSI 方言機能は、ANSI SQL 標準から直接ではなく、ANSI SQL のスタイルに合わせて動作します。
さらに、Spark SQL にはテーブルに行を格納するときに、暗黙的なキャストの動作を制御する独自のオプションがあります。 キャスト動作は、標準のストア割り当てルールとして定義されています。
spark.sql.storeAssignmentPolicy
が ANSI
に設定されている場合、Spark SQL は ANSI ストアの割り当て規則に準拠します。 既定値は ANSI
でも、構成 spark.sql.ansi.enabled
は既定で無効になっているため、これは個別の構成です。
次の表は、この動作をまとめたものです。
プロパティ名 | 既定値 | 意味 |
---|---|---|
spark.sql.ansi.enabled |
偽り | true の場合、Spark は ANSI SQL 仕様に準拠しようとします。
|
spark.sql.storeAssignmentPolicy |
ANSI(米国国家規格協会) | データ型が異なる列に値を格納すると、Spark は型変換を実行します。 強制型変換規則には、ANSI 、legacy 、strict の 3 つのポリシーがあります。
|
次のサブセクションでは、ANSI モードが有効になっている場合の、算術演算、型変換、SQL 解析での動作の変更について説明します。 Spark SQL での型変換では、キャスト、ストアの割り当て、強制型変換の 3 つの種類があり、この記事ではこれらを 1 つずつ説明します。
算術演算
Spark SQL では、数値型に対して実行される算術演算 (decimal を除く) は、既定でオーバーフローに対してチェックされません。
つまり、演算によってオーバーフローが発生した場合、結果は Java または Scala プログラムの対応する操作と同じになります (たとえば、2 つの整数の合計が表現可能な最大値よりも大きい場合、結果は負の数になります)。 一方、Spark SQL は、10 進数オーバーフローに対して null を返します。
spark.sql.ansi.enabled
が true
に設定され、数値とサイクル間隔の算術演算でオーバーフローが発生した場合、実行時に算術例外がスローされます。
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
キャスト
spark.sql.ansi.enabled
が true
に設定されている場合、CAST
構文による明示的なキャストは、文字列から整数へのキャストなど、標準で定義されている無効なキャスト パターンに対してランタイム例外をスローします。
Spark ANSI モードの CAST
句は、ISO/IEC 9075-2:2011 Information technology — Database languages - SQL — Part 2: Foundation (SQL/Foundation) のセクション 6.13 のキャスト仕様に関する説明で示されている構文規則に従います。ただし、ANSI 標準では許可されていない、次の単純な型変換は許可されている点を除きます。
- 数値型 <=> ブール型
- StringType <=> BinaryType
CAST
式のソースとターゲットのデータ型の有効な組み合わせは、次の表に示されています。
"Y" は、組み合わせが制限なく構文的に有効であることを示します。"N" は、その組み合わせが無効であることを示します。
SourceTarget | 数値 | string | 日付 | タイムスタンプ | インターバル | ボーリアン | バイナリ | 配列 | マップ | 構造体 |
---|---|---|---|---|---|---|---|---|---|---|
数値 | ジー | ジー | N | N | N | ジー | N | N | N | N |
string | ジー | ジー | ジー | ジー | ジー | ジー | ジー | N | N | N |
日付 | N | ジー | ジー | ジー | N | N | N | N | N | N |
タイムスタンプ | N | ジー | ジー | ジー | N | N | N | N | N | N |
インターバル | N | ジー | N | N | ジー | N | N | N | N | N |
ボーリアン | ジー | ジー | N | N | N | ジー | N | N | N | N |
バイナリ | ジー | N | N | N | N | N | ジー | N | N | N |
配列 | N | N | N | N | N | N | N | ジー | N | N |
マップ | N | N | N | N | N | N | N | N | ジー | N |
構造体 | N | N | N | N | N | N | N | N | N | ジー |
-- Examples of explicit casting
-- `spark.sql.ansi.enabled=true`
> SELECT CAST('a' AS INT);
ERROR: [CAST_INVALID_INPUT] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed.
> SELECT CAST(2147483648L AS INT);
ERROR: [CAST_OVERFLOW] The value 2147483648L of the type "BIGINT" cannot be cast to "INT" due to an overflow.
> SELECT CAST(DATE'2020-01-01' AS INT)
ERROR: [DATATYPE_MISMATCH.CAST_WITH_FUNC_SUGGESTION] Cannot resolve "CAST(DATE '2020-01-01' AS INT)" due to data type mismatch: cannot cast "DATE" to "INT".
-- `spark.sql.ansi.enabled=false` (This is a default behavior)
> SELECT cast('a' AS INT);
null
> SELECT CAST(2147483648L AS INT);
-2147483648
> SELECT CAST(DATE'2020-01-01' AS INT);
null
ストアの割り当て
spark.sql.storeAssignmentPolicy
設定の既定値は ANSI
です。 この設定では、ソース値のデータ型がターゲット列の型と一致しない場合、Spark SQL は自動的に ANSI CAST 句を INSERT ステートメントに追加します。
このポリシーに基づくテーブルの挿入中に、Spark は無効なキャストをチェックして拒否し、データ品質を確保するために例外をスローします。 つまり、型の不一致が原因で挿入が失敗した場合、データがテーブルに部分的に書き込まれることはありません。
例 :
-- spark.sql.storeAssignmentPolicy=ANSI
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
ERROR: [CAST_OVERFLOW_IN_TABLE_INSERT] Fail to insert a value of "BIGINT" type into the "INT" type column `i` due to an overflow.
> INSERT INTO test VALUES ('a');
ERROR: [CAST_INVALID_INPUT ERROR] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed
次の例は、Spark SQL が互換性のないデータの挿入を防ぎ、データの整合性を維持することを示しています。
spark.sql.storeAssignmentPolicy
が LEGACY
に設定されている場合、Spark SQL は Spark 2.x までの一般的な動作に戻ります。 このモードでは、ANSI CAST を使用する代わりに、従来の CAST 操作が適用されます。 このポリシーでは、テーブルの挿入中に無効なキャストを実行すると、例外がスローされるのではなく、NULL 値または正しくない値が挿入されます。
例 :
-- spark.sql.storeAssignmentPolicy=LEGACY
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
> INSERT INTO test VALUES ('a');
> SELECT * FROM test;
-- Results
-- -2147483648 (incorrect value due to overflow)
-- null (cannot cast 'a' to INT)
強制型変換
型の上位変換と優先順位
spark.sql.ansi.enabled
が true
に設定されている場合、Spark SQL では、データ型間の競合を解決する方法を制御するいくつかの規則を使用します。
この競合解決の中心となるのは、特定のデータ型の値を暗黙的に別のデータ型に昇格できるかどうかを定義する型の優先順位リストです。
データ型 | 優先順位リスト (最も狭い範囲から最も広い範囲の順) |
---|---|
バイト | Byte -> Short -> Int -> Long -> Decimal -> Float* -> Double |
ショート | ショート -> 整数 -> ロング -> 小数 -> 浮動小数点* -> 倍精度 |
int | イント -> ロング -> デシマル -> フロート* -> ダブル |
long | ロング -> 小数 -> 浮動小数点 -> ダブル |
小数 | デシマル -> 浮動小数点* -> 倍精度浮動小数点数 |
浮く | Float -> Double |
ダブル | ダブル |
日付 | 日付 -> タイムスタンプ |
タイムスタンプ | タイムスタンプ |
string | string |
バイナリ | バイナリ |
ボーリアン | ボーリアン |
インターバル | インターバル |
マップ | 地図** |
配列 | 配列** |
構造体 | 構造体** |
- 最も一般的でない型解決の場合、精度の損失を回避するために浮動小数点はスキップされます。
** 複合型の場合、優先順位規則はそのコンポーネント要素に再帰的に適用されます。
文字列型と型指定されていない NULL には特別な規則が適用されます。 NULL は他の任意の型に昇格できますが、String は任意の単純データ型に昇格できます。
ここでは、優先順位リストを有向木として図で示しています:
最も一般的でない型解決
一連の型の最も一般的でない型は、一連の型のすべての要素によって優先順位リストから到達可能な最も狭い型です。
最も一般的でない型解決は、次の場合に使用します。
- ある型のパラメーターを必要としている関数を、より狭い型の引数を使用して呼び出すことができるかどうかを決定します。
- 複数のパラメーター (結合、最小、最大など) の共有引数型を必要とする関数の引数型を派生させます。
- 算術演算や比較などの演算子のオペランド型を派生させます。
- case 式などの式の結果型を派生させる。
- 配列コンストラクターとマップ コンストラクターの要素、キー、または値の型を派生させます。
最も一般的でない型が FLOAT に解決される場合は、特別な規則が適用されます。 float 型の値で、型のいずれかが INT、BIGINT、または DECIMAL の場合、桁数が失われないようにするために、最も一般的でない型は DOUBLE にプッシュされます。
-- The coalesce function accepts any set of argument types as long as they share a least common type.
-- The result type is the least common type of the arguments.
> SET spark.sql.ansi.enabled=true;
> SELECT typeof(coalesce(1Y, 1L, NULL));
BIGINT
> SELECT typeof(coalesce(1, DATE'2020-01-01'));
Error: Incompatible types [INT, DATE]
> SELECT typeof(coalesce(ARRAY(1Y), ARRAY(1L)));
ARRAY<BIGINT>
> SELECT typeof(coalesce(1, 1F));
DOUBLE
> SELECT typeof(coalesce(1L, 1F));
DOUBLE
> SELECT (typeof(coalesce(1BD, 1F)));
DOUBLE
-- The substring function expects arguments of type INT for the start and length parameters.
> SELECT substring('hello', 1Y, 2);
he
> SELECT substring('hello', '1', 2);
he
> SELECT substring('hello', 1L, 2);
Error: Argument 2 requires an INT type.
> SELECT substring('hello', str, 2) FROM VALUES(CAST('1' AS STRING)) AS T(str);
Error: Argument 2 requires an INT type.
SQL 関数
一部の SQL 関数は、ANSI モード (spark.sql.ansi.enabled=true
) では動作が異なる場合があります。
-
size
: この関数は、ANSI モードでの null 入力に対して null を返します。 -
element_at
:- 無効なインデックスを使用している場合、この関数は
ArrayIndexOutOfBoundsException
をスローします。 - キーがマップに存在しない場合、この関数は
NoSuchElementException
をスローします。
- 無効なインデックスを使用している場合、この関数は
-
elt
: 無効なインデックスを使用している場合、この関数はArrayIndexOutOfBoundsException
をスローします。 -
make_date
: 結果の日付が無効な場合、この関数は例外で失敗します。 -
make_timestamp
: 結果のタイムスタンプが無効な場合、この関数は例外で失敗します。 -
make_interval
: 結果の間隔が無効な場合、この関数は例外で失敗します。 -
next_day
: 入力が有効な週の日付でない場合、この関数はIllegalArgumentException
をスローします。 -
parse_url
: 入力文字列が有効な URL でない場合、この関数はIllegalArgumentException
をスローします。 -
to_date
: 入力文字列を解析できない場合、またはパターン文字列が無効な場合、この関数は例外で失敗します。 -
to_timestamp
: 入力文字列を解析できない場合、またはパターン文字列が無効な場合、この関数は例外で失敗します。 -
to_unix_timestamp
: 入力文字列を解析できない場合、またはパターン文字列が無効な場合、この関数は例外で失敗します。 -
unix_timestamp
: 入力文字列を解析できない場合、またはパターン文字列が無効な場合、この関数は例外で失敗します。
SQL 演算子
一部の SQL 演算子は、ANSI モード (spark.sql.ansi.enabled=true
) では動作が異なる場合があります。
-
array_col[index]
: 無効なインデックスを使用している場合、この演算子はArrayIndexOutOfBoundsException
をスローします。 -
map_col[key]
: キーがマップに存在しない場合、この演算子はNoSuchElementException
をスローします。 -
CAST(string_col AS TIMESTAMP)
: 入力文字列を解析できない場合、この演算子は例外で失敗します。 -
CAST(string_col AS DATE)
: 入力文字列を解析できない場合、この演算子は例外で失敗します。
ANSI モードの便利な関数
ANSI モードがオンの場合、無効な操作に対して例外がスローされます。 次の SQL 関数を使用して、このような例外を抑制できます。
-
try_cast
: ランタイム エラーで例外をスローする代わりにCAST
の結果を返す点を除き、NULL
と同じです。 -
try_add
: 整数値オーバーフローで例外をスローする代わりに+
の結果を返す点を除き、加算演算子NULL
と同じです。 -
try_divide
: 0 の除算で例外をスローする代わりに/
の結果を返す点を除き、除算演算子NULL
と同じです。
SQL キーワード
spark.sql.ansi.enabled
が true の場合、Spark SQL は ANSI モード パーサーを使用します。
このモードでは、Spark SQL には 2 種類のキーワードがあります。
- 予約済みキーワード: 予約済みであり、テーブル、ビュー、列、関数、エイリアスなどの識別子として使用できないキーワード。
- 予約されていないキーワード: 特定のコンテキストでのみ特別な意味を持ち、他のコンテキストで識別子として使用できるキーワード。 たとえば、
EXPLAIN SELECT ...
はコマンドですが、EXPLAIN は他の場所で識別子として使用できます。
ANSI モードが無効になっている場合、Spark SQL には次の 2 種類のキーワードがあります。
- 予約されていないキーワード: ANSI モードが有効になっている場合と同じ定義。
- 予約されていない厳密なキーワード: 予約されていないキーワードの厳密なバージョン。テーブルの別名として使用することはできません。
既定では、spark.sql.ansi.enabled
は false です。
Spark SQL のすべてのキーワードの一覧を次に示します。
キーワード | Spark SQL ANSI モード | Spark SQL の既定モード | SQL-2016 |
---|---|---|---|
足す | 予約されていない | 予約されていない | 予約されていない |
後 | 予約されていない | 予約されていない | 予約されていない |
全て | 予約済み | 予約されていない | 予約済み |
変える | 予約されていない | 予約されていない | 予約済み |
いつも | 予約されていない | 予約されていない | 予約されていない |
分析 | 予約されていない | 予約されていない | 予約されていない |
そして | 予約済み | 予約されていない | 予約済み |
反 | 予約されていない | 厳密で予約されていない | 予約されていない |
任意 | 予約済み | 予約されていない | 予約済み |
アーカイブ | 予約されていない | 予約されていない | 予約されていない |
配列 | 予約されていない | 予約されていない | 予約済み |
という形で | 予約済み | 予約されていない | 予約済み |
ASC | 予約されていない | 予約されていない | 予約されていない |
で | 予約されていない | 予約されていない | 予約済み |
認可 | 予約済み | 予約されていない | 予約済み |
間 | 予約されていない | 予約されていない | 予約済み |
両方とも | 予約済み | 予約されていない | 予約済み |
バケツ | 予約されていない | 予約されていない | 予約されていない |
バケット | 予約されていない | 予約されていない | 予約されていない |
によって | 予約されていない | 予約されていない | 予約済み |
キャッシュ | 予約されていない | 予約されていない | 予約されていない |
カスケード | 予約されていない | 予約されていない | 予約されていない |
ケース | 予約済み | 予約されていない | 予約済み |
キャスト | 予約済み | 予約されていない | 予約済み |
変える | 予約されていない | 予約されていない | 予約されていない |
確認 | 予約済み | 予約されていない | 予約済み |
クリア | 予約されていない | 予約されていない | 予約されていない |
クラスター | 予約されていない | 予約されていない | 予約されていない |
クラスタ化された | 予約されていない | 予約されていない | 予約されていない |
CODEGEN | 予約されていない | 予約されていない | 予約されていない |
照合 | 予約済み | 予約されていない | 予約済み |
徴収 | 予約されていない | 予約されていない | 予約されていない |
COLUMN | 予約済み | 予約されていない | 予約済み |
COLUMNS | 予約されていない | 予約されていない | 予約されていない |
コメント | 予約されていない | 予約されていない | 予約されていない |
コミットする | 予約されていない | 予約されていない | 予約済み |
コンパクト | 予約されていない | 予約されていない | 予約されていない |
圧縮 | 予約されていない | 予約されていない | 予約されていない |
計算する | 予約されていない | 予約されていない | 予約されていない |
連結 | 予約されていない | 予約されていない | 予約されていない |
CONSTRAINT | 予約済み | 予約されていない | 予約済み |
費用 | 予約されていない | 予約されていない | 予約されていない |
創造する | 予約済み | 予約されていない | 予約済み |
クロス | 予約済み | 厳密で予約されていない | 予約済み |
キューブ | 予約されていない | 予約されていない | 予約済み |
現在の | 予約されていない | 予約されていない | 予約済み |
現在の日付 | 予約済み | 予約されていない | 予約済み |
CURRENT_TIME | 予約済み | 予約されていない | 予約済み |
CURRENT_TIMESTAMP | 予約済み | 予約されていない | 予約済み |
現在のユーザー | 予約済み | 予約されていない | 予約済み |
データ | 予約されていない | 予約されていない | 予約されていない |
データ | 予約されていない | 予約されていない | 予約されていない |
データベース | 予約されていない | 予約されていない | 予約されていない |
日 | 予約されていない | 予約されていない | 予約されていない |
DBPROPERTIES | 予約されていない | 予約されていない | 予約されていない |
定義 | 予約されていない | 予約されていない | 予約されていない |
削除 | 予約されていない | 予約されていない | 予約済み |
制限された | 予約されていない | 予約されていない | 予約されていない |
DESC | 予約されていない | 予約されていない | 予約されていない |
説明する | 予約されていない | 予約されていない | 予約済み |
DFS | 予約されていない | 予約されていない | 予約されていない |
ディレクトリ | 予約されていない | 予約されていない | 予約されていない |
ディレクトリ | 予約されていない | 予約されていない | 予約されていない |
独特 | 予約済み | 予約されていない | 予約済み |
配る | 予約されていない | 予約されていない | 予約されていない |
DIV | 予約されていない | 予約されていない | キーワードではない |
削除 | 予約されていない | 予約されていない | 予約済み |
然も無くば | 予約済み | 予約されていない | 予約済み |
終了 | 予約済み | 予約されていない | 予約済み |
逃げる | 予約済み | 予約されていない | 予約済み |
逃げた | 予約されていない | 予約されていない | 予約されていない |
除く | 予約済み | 厳密で予約されていない | 予約済み |
交換 | 予約されていない | 予約されていない | 予約されていない |
存在 | 予約されていない | 予約されていない | 予約済み |
EXPLAIN | 予約されていない | 予約されていない | 予約されていない |
輸出 | 予約されていない | 予約されていない | 予約されていない |
延長された | 予約されていない | 予約されていない | 予約されていない |
外部 | 予約されていない | 予約されていない | 予約済み |
抽出する | 予約されていない | 予約されていない | 予約済み |
偽 | 予約済み | 予約されていない | 予約済み |
フェッチ | 予約済み | 予約されていない | 予約済み |
田畑 | 予約されていない | 予約されていない | 予約されていない |
フィルター | 予約済み | 予約されていない | 予約済み |
ファイル形式 | 予約されていない | 予約されていない | 予約されていない |
まずは | 予約されていない | 予約されていない | 予約されていない |
FN | 予約されていない | 予約されていない | 予約されていない |
次 | 予約されていない | 予約されていない | 予約されていない |
対して | 予約済み | 予約されていない | 予約済み |
外国 | 予約済み | 予約されていない | 予約済み |
フォーマット | 予約されていない | 予約されていない | 予約されていない |
フォーマット済み | 予約されていない | 予約されていない | 予約されていない |
差出人 | 予約済み | 予約されていない | 予約済み |
満杯 | 予約済み | 厳密で予約されていない | 予約済み |
機能 | 予約されていない | 予約されていない | 予約済み |
機能 | 予約されていない | 予約されていない | 予約されていない |
生成された | 予約されていない | 予約されていない | 予約されていない |
グローバル | 予約されていない | 予約されていない | 予約済み |
GRANT | 予約済み | 予約されていない | 予約済み |
補助 金 | 予約されていない | 予約されていない | 予約されていない |
群 | 予約済み | 予約されていない | 予約済み |
グルーピング | 予約されていない | 予約されていない | 予約済み |
HAVING | 予約済み | 予約されていない | 予約済み |
時 | 予約されていない | 予約されていない | 予約されていない |
条件 | 予約されていない | 予約されていない | キーワードではない |
不問に付す | 予約されていない | 予約されていない | 予約されていない |
輸入 | 予約されていない | 予約されていない | 予約されていない |
で | 予約済み | 予約されていない | 予約済み |
インデックス | 予約されていない | 予約されていない | 予約されていない |
索引 | 予約されていない | 予約されていない | 予約されていない |
内部結合 | 予約済み | 厳密で予約されていない | 予約済み |
INPATH | 予約されていない | 予約されていない | 予約されていない |
入力形式 | 予約されていない | 予約されていない | 予約されていない |
INSERT | 予約されていない | 予約されていない | 予約済み |
交点 | 予約済み | 厳密で予約されていない | 予約済み |
インターバル | 予約されていない | 予約されていない | 予約済み |
に | 予約済み | 予約されていない | 予約済み |
です | 予約済み | 予約されていない | 予約済み |
項目 | 予約されていない | 予約されていない | 予約されていない |
JOIN | 予約済み | 厳密で予約されていない | 予約済み |
JSON(ジェイソン) | 予約されていない | 予約されていない | 予約されていない |
キー | 予約されていない | 予約されていない | 予約されていない |
キー | 予約されていない | 予約されていない | 予約されていない |
前の | 予約されていない | 予約されていない | 予約されていない |
側面 | 予約済み | 厳密で予約されていない | 予約済み |
怠惰 | 予約されていない | 予約されていない | 予約されていない |
トップ | 予約済み | 予約されていない | 予約済み |
左 | 予約済み | 厳密で予約されていない | 予約済み |
いいね | 予約されていない | 予約されていない | 予約済み |
ILIKE | 予約されていない | 予約されていない | 予約されていない |
LIMIT | 予約されていない | 予約されていない | 予約されていない |
ライン | 予約されていない | 予約されていない | 予約されていない |
LIST | 予約されていない | 予約されていない | 予約されていない |
負荷 | 予約されていない | 予約されていない | 予約されていない |
地元の | 予約されていない | 予約されていない | 予約済み |
場所 | 予約されていない | 予約されていない | 予約されていない |
錠 | 予約されていない | 予約されていない | 予約されていない |
ロック | 予約されていない | 予約されていない | 予約されていない |
合理的 | 予約されていない | 予約されていない | 予約されていない |
マクロ | 予約されていない | 予約されていない | 予約されていない |
地図 | 予約されていない | 予約されていない | 予約されていない |
一致 | 予約されていない | 予約されていない | 予約されていない |
マージ | 予約されていない | 予約されていない | 予約されていない |
分 | 予約されていない | 予約されていない | 予約されていない |
マイナス | 予約されていない | 厳密で予約されていない | 予約されていない |
月 | 予約されていない | 予約されていない | 予約されていない |
MSCK | 予約されていない | 予約されていない | 予約されていない |
Namespace | 予約されていない | 予約されていない | 予約されていない |
名前空間 | 予約されていない | 予約されていない | 予約されていない |
自然 | 予約済み | 厳密で予約されていない | 予約済み |
いいえ | 予約されていない | 予約されていない | 予約済み |
いいえ | 予約済み | 予約されていない | 予約済み |
ヌル | 予約済み | 予約されていない | 予約済み |
NULLS | 予約されていない | 予約されていない | 予約されていない |
の | 予約されていない | 予約されていない | 予約済み |
オン | 予約済み | 厳密で予約されていない | 予約済み |
のみ | 予約済み | 予約されていない | 予約済み |
オプション | 予約されていない | 予約されていない | 予約されていない |
オプション | 予約されていない | 予約されていない | 予約されていない |
または | 予約済み | 予約されていない | 予約済み |
命令 | 予約済み | 予約されていない | 予約済み |
アウト | 予約されていない | 予約されていない | 予約済み |
アウター | 予約済み | 予約されていない | 予約済み |
出力形式 | 予約されていない | 予約されていない | 予約されていない |
終了 | 予約されていない | 予約されていない | 予約されていない |
重複 | 予約済み | 予約されていない | 予約済み |
オーバーレイ | 予約されていない | 予約されていない | 予約されていない |
上書き | 予約されていない | 予約されていない | 予約されていない |
PARTITION | 予約されていない | 予約されていない | 予約済み |
区分された | 予約されていない | 予約されていない | 予約されていない |
パーティション | 予約されていない | 予約されていない | 予約されていない |
パーセント | 予約されていない | 予約されていない | 予約されていない |
PIVOT | 予約されていない | 予約されていない | 予約されていない |
配置する | 予約されていない | 予約されていない | 予約されていない |
立場 | 予約されていない | 予約されていない | 予約済み |
先行 | 予約されていない | 予約されていない | 予約されていない |
原発 | 予約済み | 予約されていない | 予約済み |
プリンシパル | 予約されていない | 予約されていない | 予約されていない |
[PROPERTIES (プロパティ)] | 予約されていない | 予約されていない | 予約されていない |
粛清 | 予約されていない | 予約されていない | 予約されていない |
QUALIFY | 予約済み | 予約されていない | 予約済み |
クエリ | 予約されていない | 予約されていない | 予約されていない |
範囲 | 予約されていない | 予約されていない | 予約済み |
受取人 | 予約されていない | 予約されていない | 予約されていない |
RECIPIENTS | 予約されていない | 予約されていない | 予約されていない |
レコードリーダー | 予約されていない | 予約されていない | 予約されていない |
レコードライター | 予約されていない | 予約されていない | 予約されていない |
回復する | 予約されていない | 予約されていない | 予約されていない |
削減 | 予約されていない | 予約されていない | 予約されていない |
参考文献 | 予約済み | 予約されていない | 予約済み |
REFRESH | 予約されていない | 予約されていない | 予約されていない |
REGEXP | 予約されていない | 予約されていない | キーワードではない |
REMOVE | 予約されていない | 予約されていない | 予約されていない |
改名する | 予約されていない | 予約されていない | 予約されていない |
修繕 | 予約されていない | 予約されていない | 予約されていない |
取り替える | 予約されていない | 予約されていない | 予約されていない |
RESET | 予約されていない | 予約されていない | 予約されていない |
尊敬 | 予約されていない | 予約されていない | 予約されていない |
制限する | 予約されていない | 予約されていない | 予約されていない |
REVOKE | 予約されていない | 予約されていない | 予約済み |
正しい | 予約済み | 厳密で予約されていない | 予約済み |
RLIKE | 予約されていない | 予約されていない | 予約されていない |
役割 | 予約されていない | 予約されていない | 予約されていない |
役割 | 予約されていない | 予約されていない | 予約されていない |
ロールバック | 予約されていない | 予約されていない | 予約済み |
ROLLUP | 予約されていない | 予約されていない | 予約済み |
漕ぐ | 予約されていない | 予約されていない | 予約済み |
行 | 予約されていない | 予約されていない | 予約済み |
SCHEMA | 予約されていない | 予約されていない | 予約されていない |
スキーマ | 予約されていない | 予約されていない | キーワードではない |
秒 | 予約されていない | 予約されていない | 予約されていない |
SELECT | 予約済み | 予約されていない | 予約済み |
セミ | 予約されていない | 厳密で予約されていない | 予約されていない |
離れ離れ | 予約されていない | 予約されていない | 予約されていない |
SERDE | 予約されていない | 予約されていない | 予約されていない |
SERDEプロパティーズ | 予約されていない | 予約されていない | 予約されていない |
SESSION_USER | 予約済み | 予約されていない | 予約済み |
SET | 予約されていない | 予約されていない | 予約済み |
設定 | 予約されていない | 予約されていない | 予約されていない |
共有 | 予約されていない | 予約されていない | 予約されていない |
SHARES | 予約されていない | 予約されていない | 予約されていない |
ショー | 予約されていない | 予約されていない | 予約されていない |
傾斜 | 予約されていない | 予約されていない | 予約されていない |
いくつかの | 予約済み | 予約されていない | 予約済み |
ソート | 予約されていない | 予約されていない | 予約されていない |
並べ替え済み | 予約されていない | 予約されていない | 予約されていない |
開始 | 予約されていない | 予約されていない | 予約済み |
統計学 | 予約されていない | 予約されていない | 予約されていない |
保存 | 予約されていない | 予約されていない | 予約されていない |
層別化 | 予約されていない | 予約されていない | 予約されていない |
構造 | 予約されていない | 予約されていない | 予約されていない |
SUBSTR | 予約されていない | 予約されていない | 予約されていない |
サブストリング | 予約されていない | 予約されていない | 予約されていない |
SYNC | 予約されていない | 予約されていない | 予約されていない |
TABLE | 予約済み | 予約されていない | 予約済み |
TABLES | 予約されていない | 予約されていない | 予約されていない |
TABLESAMPLE | 予約されていない | 予約されていない | 予約済み |
TBLプロパティーズ | 予約されていない | 予約されていない | 予約されていない |
仮 | 予約されていない | 予約されていない | キーワードではない |
一時的 | 予約されていない | 予約されていない | 予約されていない |
終了 | 予約されていない | 予約されていない | 予約されていない |
次の処理 | 予約済み | 予約されていない | 予約済み |
時間 | 予約済み | 予約されていない | 予約済み |
宛先 | 予約済み | 予約されていない | 予約済み |
接触 | 予約されていない | 予約されていない | 予約されていない |
末尾 | 予約済み | 予約されていない | 予約済み |
トランザクション | 予約されていない | 予約されていない | 予約されていない |
トランザクション | 予約されていない | 予約されていない | 予約されていない |
変形する | 予約されていない | 予約されていない | 予約されていない |
刈る | 予約されていない | 予約されていない | 予約されていない |
真実 | 予約されていない | 予約されていない | 予約済み |
切り捨てる | 予約されていない | 予約されていない | 予約済み |
TRY_CAST | 予約されていない | 予約されていない | 予約されていない |
タイプ | 予約されていない | 予約されていない | 予約されていない |
アーカイブ解除 | 予約されていない | 予約されていない | 予約されていない |
無制限 | 予約されていない | 予約されていない | 予約されていない |
キャッシュ解除 | 予約されていない | 予約されていない | 予約されていない |
組合 | 予約済み | 厳密で予約されていない | 予約済み |
ユニーク | 予約済み | 予約されていない | 予約済み |
不明 | 予約済み | 予約されていない | 予約済み |
アンロック | 予約されていない | 予約されていない | 予約されていない |
解除 | 予約されていない | 予約されていない | 予約されていない |
UPDATE | 予約されていない | 予約されていない | 予約済み |
使う | 予約されていない | 予約されていない | 予約されていない |
利用者 | 予約済み | 予約されていない | 予約済み |
使用 | 予約済み | 厳密で予約されていない | 予約済み |
VALUES | 予約されていない | 予約されていない | 予約済み |
眺め | 予約されていない | 予約されていない | 予約されていない |
VIEWS | 予約されていない | 予約されていない | 予約されていない |
いつ | 予約済み | 予約されていない | 予約済み |
WHERE | 予約済み | 予約されていない | 予約済み |
WINDOW | 予約されていない | 予約されていない | 予約済み |
で | 予約済み | 予約されていない | 予約済み |
年 | 予約されていない | 予約されていない | 予約されていない |
ゾーン | 予約されていない | 予約されていない | 予約されていない |