الانتقال إلى المحتوى الرئيسي
marimo هو دفتر ملاحظات تفاعلي مفتوح المصدر لـ بايثون مع دعم SQL مدمج. عند تشغيل خلية أو التفاعل مع عنصر في واجهة المستخدم، يشغّل marimo تلقائيًا الخلايا المتأثرة (أو يوسمها بأنها غير محدّثة)، مما يحافظ على اتساق الشيفرة والمخرجات ويمنع الأخطاء قبل وقوعها. يُحفَظ كل دفتر ملاحظات في marimo بصيغة بايثون خالصة، ويكون قابلاً للتنفيذ كبرنامج نصي، وقابلاً للنشر كتطبيق.

1. تثبيت marimo بدعم SQL

pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.py
من المفترض أن يفتح هذا متصفح ويب يعمل على localhost.

2. الاتصال بـ ClickHouse.

انتقل إلى لوحة مصادر البيانات في الجانب الأيسر من محرر marimo وانقر على ‘Add database’. سيُطلب منك إدخال تفاصيل قاعدة البيانات. بعد ذلك، ستظهر لك خلية يمكن تشغيلها لإنشاء اتصال.

3. تشغيل SQL

بمجرد إعداد اتصال، يمكنك إنشاء خلية SQL جديدة واختيار محرك ClickHouse. في هذا الدليل، سنستخدم مجموعة بيانات New York Taxi.
CREATE TABLE trips (
    trip_id             UInt32,
    pickup_datetime     DateTime,
    dropoff_datetime    DateTime,
    pickup_longitude    Nullable(Float64),
    pickup_latitude     Nullable(Float64),
    dropoff_longitude   Nullable(Float64),
    dropoff_latitude    Nullable(Float64),
    passenger_count     UInt8,
    trip_distance       Float32,
    fare_amount         Float32,
    extra               Float32,
    tip_amount          Float32,
    tolls_amount        Float32,
    total_amount        Float32,
    payment_type        Enum('CSH' = 1, 'CRE' = 2, 'NOC' = 3, 'DIS' = 4, 'UNK' = 5),
    pickup_ntaname      LowCardinality(String),
    dropoff_ntaname     LowCardinality(String)
)
ENGINE = MergeTree
PRIMARY KEY (pickup_datetime, dropoff_datetime);
INSERT INTO trips
SELECT
    trip_id,
    pickup_datetime,
    dropoff_datetime,
    pickup_longitude,
    pickup_latitude,
    dropoff_longitude,
    dropoff_latitude,
    passenger_count,
    trip_distance,
    fare_amount,
    extra,
    tip_amount,
    tolls_amount,
    total_amount,
    payment_type,
    pickup_ntaname,
    dropoff_ntaname
FROM gcs(
    'https://storage.googleapis.com/clickhouse-public-datasets/nyc-taxi/trips_0.gz',
    'TabSeparatedWithNames'
);
SELECT * FROM trips LIMIT 1000;
الآن يمكنك عرض النتائج في إطار بيانات. أودّ تصور أعلى نقاط النزول تكلفةً انطلاقًا من موقع التقاط معيّن. يوفّر marimo عدة مكوّنات لواجهة المستخدم لمساعدتك. سأستخدم قائمة منسدلة لاختيار الموقع وaltair لإنشاء المخططات. يمتد نموذج التنفيذ التفاعلي في marimo إلى استعلامات SQL أيضًا، لذا فإن التغييرات التي تُجريها على SQL ستُشغّل تلقائيًا العمليات الحسابية اللاحقة للخلايا التابعة (أو يمكن اختياريًا تمييز الخلايا على أنها غير محدّثة في حال كانت العمليات الحسابية مكلفة). لذلك يتغير المخطط والجدول عند تحديث الاستعلام. يمكنك أيضًا تبديل App View للحصول على واجهة نظيفة لاستكشاف بياناتك.
آخر تعديل في ٢٩ يونيو ٢٠٢٦