حدد …

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

إنشاء مجموعة نتائج من مرجع جدول واحد أو أكثر. SELECT يمكن أن تكون العبارة جزءا من استعلام يتضمن أيضا تعبيرات الجدول الشائعة (CTE) وعمليات التعيين وعبارات أخرى مختلفة.

بناء الجملة

SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
  FROM table_reference [, ...]
  [ LATERAL VIEW clause ]
  [ WHERE clause ]
  [ GROUP BY clause ]
  [ HAVING clause]
  [ QUALIFY clause ]

named_expression
   expression [ column_alias ]

star_clause
   [ { table_name | view_name } . ] * [ except_clause ]

except_clause
   EXCEPT ( { column_name | field_name } [, ...] )

المعلمات

  • تلميحات

    تساعد التلميحات محسن Azure Databricks على اتخاذ قرارات تخطيط أفضل. يدعم Azure Databricks التلميحات التي تؤثر على اختيار استراتيجيات الانضمام وإعادة تقسيم البيانات.

  • جميع

    حدد كافة الصفوف المطابقة من مراجع الجدول. ممكَّن بشكل افتراضي.

  • متميزه

    حدد كافة الصفوف المطابقة من مراجع الجدول بعد إزالة التكرارات في النتائج.

  • named_expression

    تعبير باسم اختياري معين.

    • تعبير

      مزيج من قيمة واحدة أو أكثر وعوامل التشغيل ودالات SQL التي يتم تقييمها إلى قيمة.

    • column_alias

      معرف عمود اختياري يسمي نتيجة التعبير. إذا لم column_alias يتم توفير Databricks SQL، فيستمد واحد.

  • star_clause

    اختصار لتسمية كافة الأعمدة القابلة للرجوع إليها في العبارة FROM أو أعمدة أو حقول مرجع جدول معين في العبارة FROM .

  • table_reference

    مصدر إدخال ل SELECT. يمكن تحويل مرجع الإدخال هذا إلى مرجع دفق باستخدام STREAM الكلمة الأساسية قبل المرجع.

  • طريقة العرض الجانبية

    يستخدم بالاقتران مع دوال المولد مثل EXPLODE، والذي ينشئ جدولا ظاهريا يحتوي على صف واحد أو أكثر. LATERAL VIEW تطبيق الصفوف على كل صف إخراج أصلي.

    في Databricks SQL، وبدءا من Databricks Runtime 12.2 يتم إهمال هذه العبارة. يجب استدعاء دالة منشئ قيم الجدول كدالة table_reference.

  • WHERE

    تصفية نتيجة العبارة FROM استنادا إلى التقييمات المقدمة.

  • تجميع حسب

    التعبيرات المستخدمة لتجميع الصفوف. يتم استخدام هذا بالاقتران مع الدالات التجميعية (MIN، MAX، ، COUNT، SUM، AVG) لتجميع الصفوف استنادا إلى تعبيرات التجميع والقيم التجميعية في كل مجموعة. FILTER عند إرفاق عبارة بدالة تجميعية، يتم تمرير الصفوف المطابقة فقط إلى تلك الدالة.

  • وجود

    دالات التقييم التي يتم من خلالها تصفية الصفوف التي يتم إنتاجها GROUP BY . HAVING يتم استخدام العبارة لتصفية الصفوف بعد تنفيذ التجميع. إذا قمت بتحديد HAVING بدون GROUP BY، فإنه يشير إلى GROUP BY بدون تعبيرات تجميع (تجميع عمومي).

  • التاهل

    دالات التقييم المستخدمة لتصفية نتائج دالات النافذة. لاستخدام QUALIFY، يلزم وجود دالة نافذة واحدة على الأقل في قائمة SELECT أو عبارة QUALIFY.

تحديد على جدول Delta

بالإضافة إلى الخيارات القياسية SELECT ، تدعم جداول Delta خيارات السفر عبر الوقت الموضحة في هذا القسم. للحصول على التفاصيل، راجع العمل مع محفوظات جدول Delta Lake.

AS OF بناء الجمله

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression يمكن أن يكون أي واحد من:
    • '2018-10-18T22:15:12.013Z'، أي سلسلة يمكن تحويلها إلى طابع زمني
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18'، أي سلسلة تاريخ
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • أي تعبير آخر يتم تحويله أو يمكن تحويله إلى طابع زمني
  • version هي قيمة طويلة يمكن الحصول عليها من إخراج DESCRIBE HISTORY table_spec.

لا timestamp_expression يمكن ولا version الاستعلامات الفرعية.

مثال

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

@ بناء الجمله

استخدم بناء الجملة @ لتحديد الطابع الزمني أو الإصدار. يجب أن يكون الطابع الزمني بالتنسيق yyyyMMddHHmmssSSS . يمكنك تحديد إصدار بعد @ عن طريق إلحاق بالإصدار v . على سبيل المثال، للاستعلام عن إصدار 123 الجدول events، حدد events@v123.

مثال

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

الأمثلة

-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3   4

-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  3   4

-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3

-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { "a" : 2 }

-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { }

-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  Error: EXCEPT_OVERLAPPING_COLUMNS