次の方法で共有


Databricks Runtime での ANSI 準拠

適用対象:「はい」のチェック マーク Databricks Runtime

この記事では、Databricks Runtime での ANSI 準拠について説明します。 Databricks SQL の ANSI モードについては、「ANSI_MODE」を参照してください。

Spark SQL には、ANSI SQL 標準への準拠をサポートするために、spark.sql.ansi.enabledspark.sql.storeAssignmentPolicy の 2 つのオプションがあります。

spark.sql.ansi.enabledtrue に設定されている場合、Spark SQL は、Hive 準拠するのではなく、ANSI 準拠の言語を使用します。 たとえば、SQL の演算子/関数への入力が無効である場合、Spark は、null の結果を返すのではなく、実行時に例外をスローします。 一部の ANSI 方言機能は、ANSI SQL 標準から直接ではなく、ANSI SQL のスタイルに合わせて動作します。

さらに、Spark SQL にはテーブルに行を格納するときに、暗黙的なキャストの動作を制御する独自のオプションがあります。 キャスト動作は、標準のストア割り当てルールとして定義されています。

spark.sql.storeAssignmentPolicyANSI に設定されている場合、Spark SQL は ANSI ストアの割り当て規則に準拠します。 既定値は ANSI でも、構成 spark.sql.ansi.enabled は既定で無効になっているため、これは個別の構成です。

次の表は、この動作をまとめたものです。

プロパティ名 既定値 意味
spark.sql.ansi.enabled 偽り true の場合、Spark は ANSI SQL 仕様に準拠しようとします。
  • 整数または 10 進フィールドに対する操作でオーバーフローが発生した場合、ランタイム例外をスローします。
  • ANSI SQL の予約済みキーワードを SQL パーサーの識別子として使用禁止します。
spark.sql.storeAssignmentPolicy ANSI(米国国家規格協会) データ型が異なる列に値を格納すると、Spark は型変換を実行します。 強制型変換規則には、ANSIlegacystrict の 3 つのポリシーがあります。
  • ANSI: Spark は、ANSI SQL に従って型強制型変換を実行します。 実際には、この動作は PostgreSQL とほぼ同じです。 文字列を int に変換する、または double を boolean に変換するなど、特定の不適切な型変換を許可しません。
  • legacy:Spark では、有効なキャストである限り、型強制型変換が可能です。これは非常に緩いです。 たとえば、文字列を int または double を boolean に変換することができます。 また、これは Spark 2.x の唯一の動作であり、Hive と互換性があります。
  • strict: Spark では、型変換による精度損失やデータの切り捨ては許可されていません。たとえば、double から int または decimal から double への変換は許可されていません。

次のサブセクションでは、ANSI モードが有効になっている場合の、算術演算、型変換、SQL 解析での動作の変更について説明します。 Spark SQL での型変換では、キャスト、ストアの割り当て、強制型変換の 3 つの種類があり、この記事ではこれらを 1 つずつ説明します。

算術演算

Spark SQL では、数値型に対して実行される算術演算 (decimal を除く) は、既定でオーバーフローに対してチェックされません。 つまり、演算によってオーバーフローが発生した場合、結果は Java または Scala プログラムの対応する操作と同じになります (たとえば、2 つの整数の合計が表現可能な最大値よりも大きい場合、結果は負の数になります)。 一方、Spark SQL は、10 進数オーバーフローに対して null を返します。 spark.sql.ansi.enabledtrue に設定され、数値とサイクル間隔の算術演算でオーバーフローが発生した場合、実行時に算術例外がスローされます。

-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
 error: integer overflow

-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
  -2147483648

キャスト

spark.sql.ansi.enabledtrue に設定されている場合、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.storeAssignmentPolicyLEGACY に設定されている場合、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.enabledtrue に設定されている場合、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 予約されていない 予約されていない 予約済み
予約済み 予約されていない 予約済み
予約されていない 予約されていない 予約されていない
ゾーン 予約されていない 予約されていない 予約されていない