Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fabric OneLake

ميزة Beta

يدعم 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_catalog
Query 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 1
Query 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.
Navigation