توافق ANSI في وقت تشغيل Databricks

ينطبق على:check marked yes Databricks Runtime

توضح هذه المقالة توافق ANSI في Databricks Runtime. للحصول على وضع ANSI في Databricks SQL، راجع ANSI_MODE.

لدى Spark SQL خياران لدعم التوافق مع معيار ANSI SQL: spark.sql.ansi.enabled و spark.sql.storeAssignmentPolicy.

عندما spark.sql.ansi.enabled يتم تعيين إلى true، يستخدم Spark SQL لهجة متوافقة مع ANSI بدلا من أن تكون متوافقة مع Hive. على سبيل المثال، سيطرح Spark استثناء في وقت التشغيل بدلا من إرجاع نتائج فارغة إذا كانت المدخلات إلى عامل تشغيل/دالة SQL غير صالحة. قد لا تكون بعض ميزات لهجة 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:

* يطرح استثناء وقت التشغيل إذا حدث تجاوز في أي عملية على عدد صحيح أو حقل عشري.
* يمنع استخدام الكلمات الأساسية المحجوزة ل ANSI SQL كمعرفات في محلل SQL.
spark.sql.storeAssignmentPolicy Ansi عند تخزين قيمة في عمود بنوع بيانات مختلف، يقوم Spark بتحويل النوع. هناك ثلاثة نهج لقواعد الإكراه من النوع: ANSIو legacyو.strict

* ANSI: ينفذ Spark نوع الإكراه وفقا ل ANSI SQL. في الممارسة العملية، السلوك هو في الغالب نفس PostgreSQL. لا تسمح ببعض تحويلات النوع غير المعقولة مثل تحويل السلسلة إلى int أو مزدوجة إلى منطقية.
* legacy: يسمح Spark بالإكراه النوع طالما أنه صب صالح، وهو فضفاض جدا. على سبيل المثال، يسمح بتحويل السلسلة إلى int أو مزدوجة إلى منطقية. كما أنه السلوك الوحيد في Spark 2.x وهو متوافق مع Apache Hive.
* strict: لا يسمح Spark بأي فقدان دقة محتمل أو اقتطاع البيانات في الإكراه على النوع، على سبيل المثال، لا يسمح بالتحويل المزدوج إلى int أو عشري إلى مزدوج.

تقدم الأقسام الفرعية التالية تغييرات السلوك في العمليات الحسابية وتحويلات النوع وتحليل SQL عند تمكين وضع ANSI. بالنسبة إلى تحويلات النوع في Spark SQL، هناك ثلاثة أنواع منها وستقدمها هذه المقالة واحدا تلو الآخر: الإرسال والتعيين المخزن والإكراه على النوع.

العمليات الحسابية

في Spark SQL، لا يتم التحقق من العمليات الحسابية التي يتم إجراؤها على الأنواع الرقمية (باستثناء الفاصلة العشرية) للتجاوز بشكل افتراضي. وهذا يعني أنه في حالة حدوث تجاوز في العملية، تكون النتيجة هي نفسها مع العملية المقابلة في برنامج Java أو Scala (على سبيل المثال، إذا كان مجموع عددين صحيحين أعلى من الحد الأقصى للقيمة القابلة للتمثيل، تكون النتيجة رقما سالبا). من ناحية أخرى، يقوم Spark SQL بإرجاع قيمة خالية للتجاوز العشري. عندما 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 بناء الجملة استثناء وقت التشغيل لأنماط التحويل غير القانونية المحددة في المعيار، مثل عمليات التحويل من سلسلة إلى عدد صحيح.

CAST يتبع بند وضع Spark ANSI قواعد بناء الجملة للقسم 6.13 "مواصفات التحويل" في ISO/IEC 9075-2:2011 Information technology — لغات قاعدة البيانات - SQL — الجزء 2: Foundation (SQL/Foundation)، باستثناء أنه يسمح بشكل خاص بتحويلات النوع المباشر التالية التي لا يسمح بها وفقا لمعيار ANSI:

  • NumericType <=> BooleanType
  • StringType <=> BinaryType

يتم إعطاء المجموعات الصالحة من نوع البيانات المصدر والهدف في CAST تعبير بواسطة الجدول التالي. يشير "Y" إلى أن التركيبة صالحة من الناحية التركيبية دون قيود ويشير "N" إلى أن المجموعة غير صالحة.

مصدر الهدف رقمي السلسلة‬ التاريخ الطابع الزمني الفاصل الزمني Boolean ثنائي صفيف الخريطة البنية
رقمي نعم السنة 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
Boolean نعم السنة N N N السنة N N N N
ثنائي Y 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 Y
-- 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 العديد من القواعد التي تحكم كيفية حل التعارضات بين أنواع البيانات. في صميم حل التعارض هذا توجد قائمة أسبقية النوع التي تحدد ما إذا كان يمكن ترقية قيم نوع بيانات معين إلى نوع بيانات آخر ضمنيا.

نوع البيانات قائمة الأسبقية (من الأضيق إلى الأعرض)
بايت بايت -> قصير -> Int -> طويل -> عشري -> عائم* -> مزدوج
قصير Short -> Int -> Long -> Decimal -> Float* -> Double
Int Int -> Long -> Decimal -> Float* -> Double
طويل Long -> عشري -> عائم* -> مزدوج
عدد عشري عشري -> عائم* -> مزدوج
Float Float -> مزدوج
مزدوج مزدوج
التاريخ التاريخ -> الطابع الزمني
الطابع الزمني الطابع الزمني
السلسلة‬ السلسلة‬
ثنائي ثنائي
قيمة منطقية قيمة منطقية
الفاصل الزمني الفاصل الزمني
الخريطة خريطه**
صفيف الصفيف**
البنية البنيه**
  • بالنسبة للنوع الأقل شيوعا، يتم تخطي الدقة العائمة لتجنب فقدان الدقة.

** بالنسبة لنوع معقد، تنطبق قاعدة الأسبقية بشكل متكرر على عناصر المكون الخاصة بها.

تنطبق القواعد الخاصة على نوع السلسلة و NULL غير مكتوب. يمكن ترقية NULL إلى أي نوع آخر، بينما يمكن ترقية سلسلة إلى أي نوع بيانات بسيط.

هذا تصوير رسومي لقائمة الأسبقية كشجرة موجهة: Graphical representation of precedence rules

دقة النوع الأقل شيوعا

النوع الأقل شيوعا من مجموعة من الأنواع هو النوع الأضيق الذي يمكن الوصول إليه من قائمة الأسبقية بواسطة كافة عناصر مجموعة الأنواع.

يتم استخدام دقة النوع الأقل شيوعا من أجل:

  • حدد ما إذا كان يمكن استدعاء دالة تتوقع معلمة من نوع باستخدام وسيطة من نوع أضيق.
  • اشتقاق نوع الوسيطة للدالات التي تتوقع نوع وسيطة مشتركة لمعلمات متعددة، مثل الاندماج أو الأقل أو الأكبر.
  • اشتقاق أنواع المعاملات لعوامل التشغيل مثل العمليات الحسابية أو المقارنات.
  • اشتقاق نوع النتيجة لتعبيرات مثل تعبير الحالة.
  • اشتقاق نوع العنصر أو المفتاح أو القيمة لمنشئات الصفيف والخريطة.

يتم تطبيق قواعد خاصة إذا تم حل النوع الأقل شيوعا إلى 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.
  • element_at:
    • تطرح هذه الدالة ArrayIndexOutOfBoundsException إذا كنت تستخدم مؤشرات غير صالحة.
    • تطرح هذه الدالة NoSuchElementException إذا لم يكن المفتاح موجودا في الخريطة.
  • elt: تطرح هذه الدالة ArrayIndexOutOfBoundsException إذا كنت تستخدم فهارس غير صالحة.
  • make_date: تفشل هذه الدالة باستثناء إذا كان تاريخ النتيجة غير صالح.
  • make_timestamp: تفشل هذه الدالة باستثناء إذا كان الطابع الزمني للنتيجة غير صالح.
  • make_interval: تفشل هذه الدالة باستثناء إذا كان الفاصل الزمني للنتيجة غير صالح.
  • next_day: تطرح هذه الدالة IllegalArgumentException إذا لم يكن الإدخال يوما صالحا من الأسبوع.
  • parse_url: تطرح هذه الدالة IllegalArgumentException إذا لم تكن سلسلة الإدخال عنوان url صالحا.
  • 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: مطابق لعامل تشغيل /القسمة ، باستثناء أنه يرجع NULL النتيجة بدلا من طرح استثناء على قسمة 0.

الكلمات الأساسية ل SQL

عندما spark.sql.ansi.enabled يكون صحيحا، سيستخدم Spark SQL محلل وضع ANSI. في هذا الوضع، يحتوي Spark SQL على نوعين من الكلمات الأساسية:

  • الكلمات الأساسية المحجوزة: الكلمات الأساسية المحجوزة والتي لا يمكن استخدامها كمعرفات للجدول، والعرض، والعمود، والدالة، والأسماء المستعارة، وما إلى ذلك.
  • الكلمات الأساسية غير المحجوزة: الكلمات الأساسية التي لها معنى خاص فقط في سياقات معينة ويمكن استخدامها كمعرفات في سياقات أخرى. على سبيل المثال، EXPLAIN SELECT ... هو أمر، ولكن يمكن استخدام EXPLAIN كمعرفات في أماكن أخرى.

عند تعطيل وضع ANSI، يحتوي Spark SQL على نوعين من الكلمات الأساسية:

  • الكلمات الأساسية غير المحجوزة: نفس التعريف مثل التعريف عند تمكين وضع ANSI.
  • كلمات أساسية صارمة غير محجوزة: إصدار صارم من الكلمات الأساسية غير المحجوزة، والتي لا يمكن استخدامها كاسم مستعار للجدول.

بشكل افتراضي spark.sql.ansi.enabled غير صحيح.

فيما يلي قائمة بجميع الكلمات الأساسية في Spark SQL.

كلمة أساسية وضع Spark SQL ANSI الوضع الافتراضي ل Spark SQL SQL-2016
ADD غير محجوز غير محجوز غير محجوز
بعد غير محجوز غير محجوز غير محجوز
ALL محفوظه غير محجوز محفوظه
تعديل غير محجوز غير محجوز محفوظه
دائما غير محجوز غير محجوز غير محجوز
التحليل غير محجوز غير محجوز غير محجوز
و محفوظه غير محجوز محفوظه
مكافحه غير محجوز صارم غير محجوز غير محجوز
ANY محفوظه غير محجوز محفوظه
ARCHIVE غير محجوز غير محجوز غير محجوز
ARRAY غير محجوز غير محجوز محفوظه
AS محفوظه غير محجوز محفوظه
الرابطه غير محجوز غير محجوز غير محجوز
AT غير محجوز غير محجوز محفوظه
التخويل محفوظه غير محجوز محفوظه
‏‏بين غير محجوز غير محجوز محفوظه
كل محفوظه غير محجوز محفوظه
دلو غير محجوز غير محجوز غير محجوز
الدلاء غير محجوز غير محجوز غير محجوز
BY غير محجوز غير محجوز محفوظه
ذاكره التخزين المؤقت غير محجوز غير محجوز غير محجوز
تتالي غير محجوز غير محجوز غير محجوز
CASE محفوظه غير محجوز محفوظه
CAST محفوظه غير محجوز محفوظه
تغيير غير محجوز غير محجوز غير محجوز
الاختيار محفوظه غير محجوز محفوظه
مسح غير محجوز غير محجوز غير محجوز
الكتله غير محجوز غير محجوز غير محجوز
متفاوت المسافات غير محجوز غير محجوز غير محجوز
CODEGEN غير محجوز غير محجوز غير محجوز
جمع محفوظه غير محجوز محفوظه
جمع غير محجوز غير محجوز غير محجوز
العمود محفوظه غير محجوز محفوظه
الأعمدة غير محجوز غير محجوز غير محجوز
التعليق غير محجوز غير محجوز غير محجوز
ارتكاب غير محجوز غير محجوز محفوظه
الاتفاق غير محجوز غير محجوز غير محجوز
الضغطات غير محجوز غير محجوز غير محجوز
حساب غير محجوز غير محجوز غير محجوز
سلسله غير محجوز غير محجوز غير محجوز
القيد محفوظه غير محجوز محفوظه
تكلفه غير محجوز غير محجوز غير محجوز
CREATE محفوظه غير محجوز محفوظه
عبر محفوظه صارم غير محجوز محفوظه
المكعب غير محجوز غير محجوز محفوظه
الحاليه غير محجوز غير محجوز محفوظه
CURRENT_DATE محفوظه غير محجوز محفوظه
CURRENT_TIME محفوظه غير محجوز محفوظه
CURRENT_TIMESTAMP محفوظه غير محجوز محفوظه
CURRENT_USER محفوظه غير محجوز محفوظه
البيانات غير محجوز غير محجوز غير محجوز
قاعدة البيانات غير محجوز غير محجوز غير محجوز
قواعد البيانات غير محجوز غير محجوز غير محجوز
DAY غير محجوز غير محجوز غير محجوز
خصائص DB غير محجوز غير محجوز غير محجوز
تعريف غير محجوز غير محجوز غير محجوز
حذف غير محجوز غير محجوز محفوظه
محدد غير محجوز غير محجوز غير محجوز
تنازلي غير محجوز غير محجوز غير محجوز
وصف غير محجوز غير محجوز محفوظه
Dfs غير محجوز غير محجوز غير محجوز
الدلائل غير محجوز غير محجوز غير محجوز
الدليل غير محجوز غير محجوز غير محجوز
مميز محفوظه غير محجوز محفوظه
توزيع غير محجوز غير محجوز غير محجوز
شعبه غير محجوز غير محجوز ليست كلمة أساسية
DROP غير محجوز غير محجوز محفوظه
اخر محفوظه غير محجوز محفوظه
نهايه محفوظه غير محجوز محفوظه
الهروب محفوظه غير محجوز محفوظه
هرب غير محجوز غير محجوز غير محجوز
EXCEPT محفوظه صارم غير محجوز محفوظه
EXCHANGE غير محجوز غير محجوز غير محجوز
EXISTS غير محجوز غير محجوز محفوظه
EXPLAIN غير محجوز غير محجوز غير محجوز
تصدير غير محجوز غير محجوز غير محجوز
الموسعه غير محجوز غير محجوز غير محجوز
خارجي غير محجوز غير محجوز محفوظه
استخراج غير محجوز غير محجوز محفوظه
خطأ محفوظه غير محجوز محفوظه
إحضار محفوظه غير محجوز محفوظه
الحقول غير محجوز غير محجوز غير محجوز
تصفيه محفوظه غير محجوز محفوظه
تنسيق الملف غير محجوز غير محجوز غير محجوز
FIRST غير محجوز غير محجوز غير محجوز
الجبهه الوطنيه غير محجوز غير محجوز غير محجوز
التاليه غير محجوز غير محجوز غير محجوز
من أجل محفوظه غير محجوز محفوظه
FOREIGN محفوظه غير محجوز محفوظه
التنسيق غير محجوز غير محجوز غير محجوز
تنسيق غير محجوز غير محجوز غير محجوز
FROM محفوظه غير محجوز محفوظه
الكامل محفوظه صارم غير محجوز محفوظه
وظيفه غير محجوز غير محجوز محفوظه
وظائف غير محجوز غير محجوز غير محجوز
انشاء غير محجوز غير محجوز غير محجوز
عمومي غير محجوز غير محجوز محفوظه
GRANT محفوظه غير محجوز محفوظه
منح غير محجوز غير محجوز غير محجوز
مجموعة محفوظه غير محجوز محفوظه
تجميع غير محجوز غير محجوز محفوظه
HAVING محفوظه غير محجوز محفوظه
ساعه غير محجوز غير محجوز غير محجوز
IF غير محجوز غير محجوز ليست كلمة أساسية
تجاهل غير محجوز غير محجوز غير محجوز
استيراد غير محجوز غير محجوز غير محجوز
IN محفوظه غير محجوز محفوظه
فهرس غير محجوز غير محجوز غير محجوز
الفهارس غير محجوز غير محجوز غير محجوز
INNER محفوظه صارم غير محجوز محفوظه
INPATH غير محجوز غير محجوز غير محجوز
تنسيق الإدخال غير محجوز غير محجوز غير محجوز
إدراج غير محجوز غير محجوز محفوظه
INTERSECT محفوظه صارم غير محجوز محفوظه
الفاصل غير محجوز غير محجوز محفوظه
INTO محفوظه غير محجوز محفوظه
IS محفوظه غير محجوز محفوظه
العناصر غير محجوز غير محجوز غير محجوز
انضمام محفوظه صارم غير محجوز محفوظه
مفتاح غير محجوز غير محجوز غير محجوز
المفاتيح غير محجوز غير محجوز غير محجوز
LAST غير محجوز غير محجوز غير محجوز
الجانبي محفوظه صارم غير محجوز محفوظه
كسول غير محجوز غير محجوز غير محجوز
دالة LEADING محفوظه غير محجوز محفوظه
LEFT محفوظه صارم غير محجوز محفوظه
LIKE غير محجوز غير محجوز محفوظه
Ilike غير محجوز غير محجوز غير محجوز
الحد غير محجوز غير محجوز غير محجوز
خطوط غير محجوز غير محجوز غير محجوز
قائمة غير محجوز غير محجوز غير محجوز
تحميل غير محجوز غير محجوز غير محجوز
LOCAL غير محجوز غير محجوز محفوظه
الموقع غير محجوز غير محجوز غير محجوز
قفل غير محجوز غير محجوز غير محجوز
اقفال غير محجوز غير محجوز غير محجوز
المنطقيه غير محجوز غير محجوز غير محجوز
الماكرو غير محجوز غير محجوز غير محجوز
تعيين غير محجوز غير محجوز غير محجوز
مطابقه غير محجوز غير محجوز غير محجوز
دمج غير محجوز غير محجوز غير محجوز
دقيقه غير محجوز غير محجوز غير محجوز
ناقص غير محجوز صارم غير محجوز غير محجوز
MONTH غير محجوز غير محجوز غير محجوز
MSCK غير محجوز غير محجوز غير محجوز
مساحه الاسم غير محجوز غير محجوز غير محجوز
مساحات اسماء غير محجوز غير محجوز غير محجوز
الطبيعيه محفوظه صارم غير محجوز محفوظه
لا غير محجوز غير محجوز محفوظه
NOT محفوظه غير محجوز محفوظه
قيمة فارغة محفوظه غير محجوز محفوظه
القيم الخاليه غير محجوز غير محجوز غير محجوز
من غير محجوز غير محجوز محفوظه
تشغيل محفوظه صارم غير محجوز محفوظه
فقط محفوظه غير محجوز محفوظه
الخيار غير محجوز غير محجوز غير محجوز
الخيارات غير محجوز غير محجوز غير محجوز
OR محفوظه غير محجوز محفوظه
طلب محفوظه غير محجوز محفوظه
خارج غير محجوز غير محجوز محفوظه
الخارجي محفوظه غير محجوز محفوظه
تنسيق الإخراج غير محجوز غير محجوز غير محجوز
OVER غير محجوز غير محجوز غير محجوز
التداخل محفوظه غير محجوز محفوظه
تراكب غير محجوز غير محجوز غير محجوز
الكتابه غير محجوز غير محجوز غير محجوز
قسم غير محجوز غير محجوز محفوظه
تقسيم غير محجوز غير محجوز غير محجوز
اقسام غير محجوز غير محجوز غير محجوز
المائه غير محجوز غير محجوز غير محجوز
المحوريه غير محجوز غير محجوز غير محجوز
وضع غير محجوز غير محجوز غير محجوز
موقف غير محجوز غير محجوز محفوظه
السابقه غير محجوز غير محجوز غير محجوز
PRIMARY محفوظه غير محجوز محفوظه
مديري المدارس غير محجوز غير محجوز غير محجوز
الخصائص غير محجوز غير محجوز غير محجوز
تطهير غير محجوز غير محجوز غير محجوز
التاهل محفوظه غير محجوز محفوظه
QUERY غير محجوز غير محجوز غير محجوز
مجموعه غير محجوز غير محجوز محفوظه
المستلم غير محجوز غير محجوز غير محجوز
المستلمين غير محجوز غير محجوز غير محجوز
قارئ السجلات غير محجوز غير محجوز غير محجوز
كاتب السجلات غير محجوز غير محجوز غير محجوز
استرداد غير محجوز غير محجوز غير محجوز
الحد غير محجوز غير محجوز غير محجوز
المراجع محفوظه غير محجوز محفوظه
تحديث غير محجوز غير محجوز غير محجوز
Regexp غير محجوز غير محجوز ليست كلمة أساسية
ازاله غير محجوز غير محجوز غير محجوز
RENAME غير محجوز غير محجوز غير محجوز
اصلاح غير محجوز غير محجوز غير محجوز
REPLACE غير محجوز غير محجوز غير محجوز
اعاده تعيين غير محجوز غير محجوز غير محجوز
احترام غير محجوز غير محجوز غير محجوز
تقييد غير محجوز غير محجوز غير محجوز
إبطال غير محجوز غير محجوز محفوظه
RIGHT محفوظه صارم غير محجوز محفوظه
مفتاح RLIKE غير محجوز غير محجوز غير محجوز
الدور غير محجوز غير محجوز غير محجوز
ادوار غير محجوز غير محجوز غير محجوز
العوده غير محجوز غير محجوز محفوظه
القيمة المحتسبة غير محجوز غير محجوز محفوظه
الصف غير محجوز غير محجوز محفوظه
الصفوف غير محجوز غير محجوز محفوظه
مخطط غير محجوز غير محجوز غير محجوز
المخططات غير محجوز غير محجوز ليست كلمة أساسية
الثانيه غير محجوز غير محجوز غير محجوز
حدد … محفوظه غير محجوز محفوظه
شبه غير محجوز صارم غير محجوز غير محجوز
فصل غير محجوز غير محجوز غير محجوز
SERDE غير محجوز غير محجوز غير محجوز
خصائص SERDE غير محجوز غير محجوز غير محجوز
SESSION_USER محفوظه غير محجوز محفوظه
SET غير محجوز غير محجوز محفوظه
مجموعات غير محجوز غير محجوز غير محجوز
SHARE غير محجوز غير محجوز غير محجوز
الاسهم غير محجوز غير محجوز غير محجوز
عرض غير محجوز غير محجوز غير محجوز
منحرفه غير محجوز غير محجوز غير محجوز
بعض محفوظه غير محجوز محفوظه
نوع غير محجوز غير محجوز غير محجوز
فرز غير محجوز غير محجوز غير محجوز
START غير محجوز غير محجوز محفوظه
الاحصاءات غير محجوز غير محجوز غير محجوز
تخزين غير محجوز غير محجوز غير محجوز
STRATIFY غير محجوز غير محجوز غير محجوز
البنيه غير محجوز غير محجوز غير محجوز
SUBSTR غير محجوز غير محجوز غير محجوز
SUBSTRING غير محجوز غير محجوز غير محجوز
SYNC غير محجوز غير محجوز غير محجوز
TABLE محفوظه غير محجوز محفوظه
الجداول غير محجوز غير محجوز غير محجوز
الطابع الزمني للجداول غير محجوز غير محجوز محفوظه
ТБ LPROPERTIES غير محجوز غير محجوز غير محجوز
TEMP غير محجوز غير محجوز ليست كلمة أساسية
المؤقته غير محجوز غير محجوز غير محجوز
انهاء غير محجوز غير محجوز غير محجوز
ثم محفوظه غير محجوز محفوظه
TIME محفوظه غير محجوز محفوظه
معدل فقد الكرة محفوظه غير محجوز محفوظه
اتصال غير محجوز غير محجوز غير محجوز
الدالة TRAILING محفوظه غير محجوز محفوظه
العملية غير محجوز غير محجوز غير محجوز
المعاملات غير محجوز غير محجوز غير محجوز
تحويل غير محجوز غير محجوز غير محجوز
TRIM غير محجوز غير محجوز غير محجوز
صواب غير محجوز غير محجوز محفوظه
اقتطاع غير محجوز غير محجوز محفوظه
TRY_CAST غير محجوز غير محجوز غير محجوز
اكتب غير محجوز غير محجوز غير محجوز
غير أرشفي غير محجوز غير محجوز غير محجوز
غير محدود غير محجوز غير محجوز غير محجوز
UNCACHE غير محجوز غير محجوز غير محجوز
UNION محفوظه صارم غير محجوز محفوظه
فريده محفوظه غير محجوز محفوظه
UNKNOWN محفوظه غير محجوز محفوظه
إلغاء القفل غير محجوز غير محجوز غير محجوز
إلغاء الإعداد غير محجوز غير محجوز غير محجوز
تحديث غير محجوز غير محجوز محفوظه
استخدم غير محجوز غير محجوز غير محجوز
USER محفوظه غير محجوز محفوظه
استخدام محفوظه صارم غير محجوز محفوظه
القيم غير محجوز غير محجوز محفوظه
عرض غير محجوز غير محجوز غير محجوز
طرق العرض غير محجوز غير محجوز غير محجوز
عندما محفوظه غير محجوز محفوظه
WHERE محفوظه غير محجوز محفوظه
اطار غير محجوز غير محجوز محفوظه
مع محفوظه غير محجوز محفوظه
YEAR غير محجوز غير محجوز غير محجوز
المنطقه غير محجوز غير محجوز غير محجوز