Skip to main content
يتيح إجراء استعلامات على البيانات المخزنة في قاعدة بيانات SQLite.

البنية

الوسيطات

القيمة المعادة

  • كائن من نوع جدول يحتوي على الأعمدة نفسها الموجودة في جدول SQLite الأصلي.

تمرير استعلام بدلًا من اسم جدول

بدلًا من اسم جدول، يمكن أن تكون الوسيطة الثانية استعلام SELECT يُمرَّر إلى SQLite كما هو. ويُستنتج هيكل الجدول الناتج من نتيجة الاستعلام. ويمكن كتابة الاستعلام إما على هيئة استعلام فرعي، أو بتغليفه داخل الدالة query:
مثل هذا الجدول للقراءة فقط: لا يُسمح بتنفيذ INSERT عليه. كما يدعم محرك جدول SQLite البنية نفسها.
تُحلَّل صيغة الاستعلام الفرعي (SELECT ...) من قِبل ClickHouse ثم يُعاد تسلسلها قبل إرسالها إلى SQLite. لذلك يجب أن تكون صالحة في ClickHouse SQL. ولتمرير بنية خاصة بـ SQLite لا يستطيع ClickHouse تحليلها، استخدم بنية query('...')، إذ يُرسل نصها إلى SQLite حرفيًا.أي WHERE أو LIMIT أو aggregation أو غير ذلك في استعلام ClickHouse المحيط لا يُدفَع إلى داخل الاستعلام المُمرَّر — بل يُطبَّق في ClickHouse بعد جلب نتيجة الاستعلام كاملة. ولتقييد البيانات المقروءة من SQLite، ضع شرط التصفية داخل الاستعلام المُمرَّر. عند استخدام external_table_strict_query = 1، يُرفَض شرط تصفية خارجي على أعمدة دالة الجدول مع exception بدلًا من تطبيقه محليًا، لأنه لا يمكن دفعه إلى الاستعلام المُمرَّر. يغطي الفحص predicate ذي المستوى الأعلى في WHERE وكل conjunct في AND ذي المستوى الأعلى. لا تُعد PREWHERE على أعمدة هذا الجدول حالةً لهذا الإعداد: إذ لا يدعم محرك الجدول هذا PREWHERE، ويُرفَض مثل هذا الاستعلام باستخدام ILLEGAL_PREWHERE بغض النظر عن الإعداد. لا يُجرى الفحص إلا حيث يمكن دفع شرط التصفية أصلًا: عندما يكون هذا الجدول هو الجدول الوحيد في الاستعلام، أو على أي من جانبي INNER JOIN، أو على الجانب الحافظ في outer join (الجانب الأيسر من LEFT JOIN، والجانب الأيمن من RIGHT JOIN). على الجانب غير الحافظ من LEFT/RIGHT JOIN وعلى أي من جانبي FULL JOIN لا يُدفَع شيء ولا يُفحَص شيء، لذا يُطبَّق شرط التصفية على أعمدة هذا الجدول محليًا بعد join حتى في الوضع الصارم. حيث يُجرى الفحص، لا يُدفَع predicate الذي يشير إلى جداول أخرى موصولة في الاستعلام المحيط ويُستبعد من الفحص، سواء أشار إلى الجانب الموصول فقط أو مزجه مع هذا الجدول ضمن expression واحد غير AND (مثل OR)؛ ويحافظ مثل هذا predicate على نقطة تقييمه المعتادة في ClickHouse (WHERE بعد join، وPREWHERE قبله) ولا يُرفَض.

مثال

Query
Response

ذات صلة

آخر تعديل في ٢٦ سبتمبر ٢٠٢٦