يوفّر واجهة شبيهة بالجداول لجداول Delta Lake في Amazon S3 أو Azure Blob Storage أو نظام ملفات محلي مربوط، مع دعم كلٍّ من القراءة والكتابة (بدءًا من v25.10)
البنية
deltaLake هو اسم مستعار لـ deltaLakeS3، وهو مدعوم للتوافق.
deltaLake(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression] [,extra_credentials])
deltaLakeS3(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression] [,extra_credentials])
deltaLakeAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
deltaLakeLocal(path, [,format])الوسائط
وسائط دالة الجدول هذه هي نفسها المستخدمة في دوال الجداول s3 وazureBlobStorage وHDFS وfile.
تشير الوسيطة format إلى تنسيق ملفات البيانات في جدول Delta Lake.
يمكن استخدام المعلَمة الاختيارية extra_credentials لتمرير role_arn من أجل الوصول المستند إلى الدور في ClickHouse Cloud. راجع Secure S3 للاطلاع على خطوات التهيئة.
القيمة المُعادة
تُرجع جدولًا ذا البنية المحددة لقراءة البيانات من جدول Delta Lake المحدد أو الكتابة إليها.
أمثلة
قراءة البيانات
افترض وجود جدول في تخزين S3 على https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/.
لقراءة البيانات من الجدول في ClickHouse، شغّل:
SELECT
URL,
UserAgent
FROM deltaLake('https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/')
WHERE URL IS NOT NULL
LIMIT 2┌─URL───────────────────────────────────────────────────────────────────┬─UserAgent─┐
│ http://auto.ria.ua/search/index.kz/jobinmoscow/detail/55089/hasimages │ 1 │
│ http://auto.ria.ua/search/index.kz/jobinmoscow.ru/gosushi │ 1 │
└───────────────────────────────────────────────────────────────────────┴───────────┘إدراج البيانات
لنفترض وجود جدول في تخزين S3 عند s3://ch-docs-s3-bucket/people_10k/.
تُعد عمليات الكتابة في Delta Lake ميزة Beta، وهي معطّلة افتراضيًا. فعِّلها باستخدام ما يلي (يتوفر allow_delta_lake_writes بدءًا من الإصدار 26.7؛ وفي الإصدارات الأقدم استخدم allow_experimental_delta_lake_writes):
SET allow_delta_lake_writes=1ثم اكتب:
INSERT INTO TABLE FUNCTION deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>') VALUES (10001, 'John', 'Smith', 'Male', 30)Query id: 09069b47-89fa-4660-9e42-3d8b1dde9b17
Ok.
1 row in set. Elapsed: 3.426 sec.يمكنك التأكد من نجاح عملية الإدراج بقراءة الجدول مرة أخرى:
SELECT *
FROM deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>')
WHERE (firstname = 'John') AND (lastname = 'Smith')Query id: 65032944-bed6-4d45-86b3-a71205a2b659
┌────id─┬─firstname─┬─lastname─┬─gender─┬─age─┐
1. │ 10001 │ John │ Smith │ Male │ 30 │
└───────┴───────────┴──────────┴────────┴─────┘الأعمدة الافتراضية
_path— مسار الملف. النوع:LowCardinality(String)._file— اسم الملف. النوع:LowCardinality(String)._size— حجم الملف بالبايت. النوع:Nullable(UInt64). إذا كان حجم الملف غير معروف، فستكون القيمةNULL._time— وقت آخر تعديل للملف. النوع:Nullable(DateTime). إذا كان الوقت غير معروف، فستكون القيمةNULL._etag— قيمة etag للملف. النوع:LowCardinality(String). إذا كانت قيمة etag غير معروفة، فستكون القيمةNULL.