الانتقال إلى المحتوى الرئيسي

الدالة الجدولية url

تنشئ الدالة url جدولًا من URL وفق format وstructure المحدَّدين. يمكن استخدام الدالة url في استعلامات SELECT وINSERT على البيانات الموجودة في جداول URL.

الصيغة

url(URL [,format] [,structure] [,headers])

المعلمات

المعلمةالوصف
URLعنوان خادم HTTP أو HTTPS محاط بعلامتَي اقتباس مفردتين، ويمكنه قبول طلبات GET أو POST (لاستعلامات SELECT أو INSERT على الترتيب). النوع: String.
formatتنسيق البيانات. النوع: String.
structureبنية الجدول بصيغة 'UserID UInt64, Name String'. ويحدد أسماء الأعمدة وأنواعها. النوع: String.
headersالرؤوس بصيغة 'headers('key1'='value1', 'key2'='value2')'. يمكنك تعيين رؤوس لاستدعاء HTTP.

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

جدول بالتنسيق والبنية المحدَّدين، ويحتوي على بيانات من URL المحدَّد.

أمثلة

الحصول على أول 3 أسطر من جدول يحتوي على أعمدة من النوع String والنوع UInt32 من خادم HTTP يردّ بتنسيق CSV.
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32', headers('Accept'='text/csv; charset=utf-8')) LIMIT 3;
إدراج البيانات من URL في جدول:
CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;
INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);
SELECT * FROM test_table;

أنماط glob في URL

تُستخدم الأنماط داخل { } لإنشاء مجموعة من الشظايا أو لتحديد عناوين التبديل الاحتياطي. للاطلاع على أنواع الأنماط المدعومة والأمثلة، راجع وصف الدالة remote. يُستخدم المحرف | داخل الأنماط لتحديد عناوين التبديل الاحتياطي. ويجري المرور عليها بالترتيب نفسه الوارد في النمط. ويكون عدد العناوين المُنشأة محدودًا بإعداد glob_expansion_max_elements.

الأعمدة الافتراضية

  • _path — المسار إلى URL. النوع: LowCardinality(String).
  • _file — اسم مورد URL. النوع: LowCardinality(String).
  • _size — حجم المورد بالبايت. النوع: Nullable(UInt64). إذا كان الحجم غير معروف، فستكون القيمة NULL.
  • _time — وقت آخر تعديل للملف. النوع: Nullable(DateTime). إذا كان الوقت غير معروف، فستكون القيمة NULL.
  • _headers - رؤوس استجابة HTTP. النوع: Map(LowCardinality(String), LowCardinality(String)).

إعداد use_hive_partitioning

عند تعيين use_hive_partitioning إلى 1، سيكتشف ClickHouse التقسيم بنمط Hive في المسار (/name=value/) وسيتيح استخدام أعمدة التقسيم كأعمدة افتراضية في الاستعلام. وستكون لهذه الأعمدة الافتراضية الأسماء نفسها الموجودة في مسار التقسيم. مثال استخدام عمود افتراضي مُنشأ باستخدام التقسيم بنمط Hive
SELECT * FROM url('http://data/path/date=*/country=*/code=*/*.parquet') WHERE date > '2020-01-01' AND country = 'Netherlands' AND code = 42;

حلّ عناوين URL النسبية

يتيح الإعداد url_base تمرير عنوان URL نسبي إلى الدالة url. وعند تعيين url_base وكانت وسيطة الدالة مرجعًا نسبيًا، يُحلّ هذا المرجع بالاستناد إلى عنوان URL الأساسي وفقًا لـ RFC 3986. قواعد الحلّ هي:
  • نسبي إلى المسار (مثل data.csv): يُدمج مع مسار عنوان URL الأساسي — بحيث يُستبدل كل ما يلي آخر / في المسار الأساسي. وتُعد الشرطة المائلة الختامية مهمة: https://example.com/dir/ + data.csv ينتج https://example.com/dir/data.csv، بينما https://example.com/dir + data.csv ينتج https://example.com/data.csv. كما تُطبَّع مقاطع النقاط (./ و ../).
  • نسبي إلى المضيف (مثل /test/data.csv): يُحلّ باستخدام المخطط والمضيف لعنوان URL الأساسي.
  • نسبي إلى المخطط (مثل //other.com/test/data.csv): يُحلّ باستخدام مخطط عنوان URL الأساسي.
  • استعلام فقط (مثل ?x=1): يُلحَق بالمسار الأساسي الكامل، مع استبدال أي استعلام أو مقطع موجود.
  • مقطع فقط (مثل #frag): يُلحَق بعنوان URL الأساسي، مع الاحتفاظ بالاستعلام واستبدال أي مقطع موجود.
  • فارغ: يعيد عنوان URL الأساسي من دون مقطع.
  • عنوان URL مطلق: يُمرَّر كما هو من دون تغيير؛ ويُتجاهل url_base.
مثال
SET url_base = 'https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/';
SELECT * FROM url('tests/queries/0_stateless/data_csv/data.csv', CSV) LIMIT 3;

إعدادات التخزين

  • engine_url_skip_empty_files - يسمح بتجاوز الملفات الفارغة أثناء القراءة. يكون معطّلًا افتراضيًا.
  • enable_url_encoding - يسمح بتمكين/تعطيل فك ترميز/ترميز المسار في URI. يكون مُمكّنًا افتراضيًا.
  • url_base - عنوان URL الأساسي المستخدم في resolving عناوين URL نسبية المُمرَّرة إلى الدالة url.

الأذونات

تتطلب الدالة url الإذن CREATE TEMPORARY TABLE. لذلك، لن تعمل مع المستخدمين الذين لديهم الإعداد readonly = 1. ويُشترط أن تكون القيمة على الأقل readonly = 2.
آخر تعديل في ٢٥ يونيو ٢٠٢٦