يدعم ClickHouse التكامل مع عدة كتالوجات (مثل OneLake وUnity وGlue وPolaris وغيرها). سيوضح لك هذا الدليل الخطوات اللازمة للاستعلام عن بياناتك المخزنة في Microsoft OneLake باستخدام ClickHouse وOneLake.
يدعم Microsoft OneLake عدة تنسيقات جداول ضمن بيئة lakehouse الخاصة به. ومع ClickHouse، يمكنك الاستعلام عن جداول Iceberg.
جمع المتطلبات الخاصة بـ OneLake
قبل الاستعلام عن جدولك في Microsoft Fabric، ستحتاج إلى جمع المعلومات التالية:
- معرّف المستأجر لـ OneLake (Entra ID الخاص بك)
- معرّف التطبيق (client)
- السرّ الخاص بالعميل
- معرّف warehouse ومعرّف عنصر البيانات
معرّف warehouse لديك هو Workspace ID الخاص بك.
بالنسبة إلى Data Item ID، نوصي باستخدام Lakehouse ID الخاص بك. وفقًا لاختباراتنا، لا يعمل هذا مع Warehouse ID.
راجع وثائق Microsoft OneLake للمساعدة في العثور على هذه القيم.
إنشاء اتصال بين OneLake وClickHouse
بعد توفر المعلومات المطلوبة أعلاه، يمكنك الآن إنشاء اتصال بين Microsoft OneLake وClickHouse، ولكن قبل ذلك يجب تفعيل الكتالوجات:
SET allow_database_iceberg=1الاتصال بـ OneLake
CREATE DATABASE onelake_catalog
ENGINE = DataLakeCatalog('https://onelake.table.fabric.microsoft.com/iceberg')
SETTINGS
catalog_type = 'onelake',
warehouse = 'warehouse_id/data_item_id',
onelake_tenant_id = '<tenant_id>',
oauth_server_uri = 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token',
auth_scope = 'https://storage.azure.com/.default',
onelake_client_id = '<client_id>',
onelake_client_secret = '<client_secret>'الاستعلام عن OneLake باستخدام ClickHouse
الآن وبعد إعداد الاتصال، يمكنك البدء في الاستعلام عن OneLake:
SHOW TABLES FROM onelake_catalogQuery id: 8f6124c4-45c2-4351-b49a-89dc13e548a7
┌─name──────────────────────────┐
1. │ year_2017.green_tripdata_2017 │
2. │ year_2018.green_tripdata_2018 │
3. │ year_2019.green_tripdata_2019 │
4. │ year_2020.green_tripdata_2020 │
5. │ year_2022.green_tripdata_2022 │
└───────────────────────────────┘إذا كنت تستخدم عميل Iceberg، فلن تظهر سوى جداول Delta التي تكون فيها Uniform مفعّلة:
للاستعلام عن جدول:
SELECT *
FROM onelake_catalog.`year_2017.green_tripdata_2017`
LIMIT 1Query id: db6b4bda-cc58-4ca1-8891-e0d14f02c890
Row 1:
──────
VendorID: 2
lpep_pickup_datetime: 2017-05-18 16:55:43.000000
lpep_dropoff_datetime: 2017-05-18 18:04:11.000000
store_and_fwd_flag: N
RatecodeID: 2
PULocationID: 130
DOLocationID: 48
passenger_count: 2
trip_distance: 12.43
fare_amount: 52
extra: 4.5
mta_tax: 0.5
tip_amount: 0
tolls_amount: 33
ehail_fee: ᴺᵁᴸᴸ
improvement_surcharge: 0.3
total_amount: 90.3
payment_type: 2
trip_type: 1
congestion_surcharge: ᴺᵁᴸᴸ
source_file: green_tripdata_2017-05.parquetلفحص تعريف DDL للجدول:
SHOW CREATE TABLE onelake_catalog.`year_2017.green_tripdata_2017`Query id: 8bd5bd8e-83be-453e-9a88-32de12ba7f24
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
1. │ CREATE TABLE onelake_catalog.`year_2017.green_tripdata_2017` ↴│
│↳( ↴│
│↳ `VendorID` Nullable(Int64), ↴│
│↳ `lpep_pickup_datetime` Nullable(DateTime64(6, 'UTC')), ↴│
│↳ `lpep_dropoff_datetime` Nullable(DateTime64(6, 'UTC')), ↴│
│↳ `store_and_fwd_flag` Nullable(String), ↴│
│↳ `RatecodeID` Nullable(Int64), ↴│
│↳ `PULocationID` Nullable(Int64), ↴│
│↳ `DOLocationID` Nullable(Int64), ↴│
│↳ `passenger_count` Nullable(Int64), ↴│
│↳ `trip_distance` Nullable(Float64), ↴│
│↳ `fare_amount` Nullable(Float64), ↴│
│↳ `extra` Nullable(Float64), ↴│
│↳ `mta_tax` Nullable(Float64), ↴│
│↳ `tip_amount` Nullable(Float64), ↴│
│↳ `tolls_amount` Nullable(Float64), ↴│
│↳ `ehail_fee` Nullable(Float64), ↴│
│↳ `improvement_surcharge` Nullable(Float64), ↴│
│↳ `total_amount` Nullable(Float64), ↴│
│↳ `payment_type` Nullable(Int64), ↴│
│↳ `trip_type` Nullable(Int64), ↴│
│↳ `congestion_surcharge` Nullable(Float64), ↴│
│↳ `source_file` Nullable(String) ↴│
│↳) ↴│
│↳ENGINE = Iceberg('abfss://<warehouse_id>@onelake.dfs.fabric.microsoft.com/<data_item_id>/Tables/year_2017/green_tripdata_2017') │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘استيراد البيانات من بحيرة البيانات إلى ClickHouse
إذا كنت بحاجة إلى استيراد البيانات من OneLake إلى ClickHouse:
CREATE TABLE trips
ENGINE = MergeTree
ORDER BY coalesce(VendorID, 0)
AS SELECT *
FROM onelake_catalog.`year_2017.green_tripdata_2017`Query id: d15983a6-ef6a-40fe-80d5-19274b9fe328
Ok.
0 rows in set. Elapsed: 32.570 sec. Processed 11.74 million rows, 275.37 MB (360.36 thousand rows/s., 8.45 MB/s.)
Peak memory usage: 1.31 GiB.