تنشئ الدالة 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;
تُستخدم الأنماط داخل { } لإنشاء مجموعة من الشظايا أو لتحديد عناوين التبديل الاحتياطي. للاطلاع على أنواع الأنماط المدعومة والأمثلة، راجع وصف الدالة 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_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.
آخر تعديل في ٢٥ يونيو ٢٠٢٦