> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> marimo هو دفتر ملاحظات من الجيل الجديد بلغة بايثون للتعامل مع البيانات

# استخدام marimo مع ClickHouse

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            تتم صيانته من قِبل المجتمع
        </div>;
};

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

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

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/clickhouse-connect.gif?s=32ba24894074e1f77771b732d96d5633" size="md" border alt="الاتصال بـ ClickHouse" width="1536" height="864" data-path="images/integrations/sql-clients/marimo/clickhouse-connect.gif" />

<div id="install-marimo-sql">
  ## 1. تثبيت marimo بدعم SQL
</div>

```shell theme={null}
pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.py
```

من المفترض أن يفتح هذا متصفح ويب يعمل على localhost.

<div id="connect-to-clickhouse">
  ## 2. الاتصال بـ ClickHouse.
</div>

انتقل إلى لوحة مصادر البيانات في الجانب الأيسر من محرر marimo وانقر على 'Add database'.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/panel-arrow.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=c06528e650e6c339ae12ad69a35354eb" size="sm" border alt="إضافة قاعدة بيانات جديدة" width="491" height="561" data-path="images/integrations/sql-clients/marimo/panel-arrow.png" />

سيُطلب منك إدخال تفاصيل قاعدة البيانات.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/add-db-details.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=67251c7e1ff31ba3ce36f3b2eeaeb646" size="md" border alt="أدخل تفاصيل قاعدة البيانات" width="818" height="487" data-path="images/integrations/sql-clients/marimo/add-db-details.png" />

بعد ذلك، ستظهر لك خلية يمكن تشغيلها لإنشاء اتصال.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/run-cell.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=7484e14babfa904ff027124b5223af6f" size="md" border alt="شغّل الخلية للاتصال بـ ClickHouse" width="995" height="283" data-path="images/integrations/sql-clients/marimo/run-cell.png" />

<div id="run-sql">
  ## 3. تشغيل SQL
</div>

بمجرد إعداد اتصال، يمكنك إنشاء خلية SQL جديدة واختيار محرك ClickHouse.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/choose-sql-engine.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=45773a771a9e0fad415bcc242f056adf" size="md" border alt="اختر محرك SQL" width="2762" height="709" data-path="images/integrations/sql-clients/marimo/choose-sql-engine.png" />

في هذا الدليل، سنستخدم مجموعة بيانات New York Taxi.

```sql theme={null}
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);
```

```sql theme={null}
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'
);
```

```sql theme={null}
SELECT * FROM trips LIMIT 1000;
```

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/results.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=91de983ea90912978a5caf04693a1c8e" size="lg" border alt="النتائج في إطار بيانات" width="947" height="415" data-path="images/integrations/sql-clients/marimo/results.png" />

الآن يمكنك عرض النتائج في إطار بيانات. أودّ تصور أعلى نقاط النزول تكلفةً انطلاقًا من موقع التقاط معيّن. يوفّر marimo عدة مكوّنات لواجهة المستخدم لمساعدتك. سأستخدم قائمة منسدلة لاختيار الموقع وaltair لإنشاء المخططات.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/dropdown-cell-chart.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=b862f9041c230ec86a1e37fc24605be3" size="lg" border alt="مزيج من قائمة منسدلة وجدول ومخطط" width="2720" height="2115" data-path="images/integrations/sql-clients/marimo/dropdown-cell-chart.png" />

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

يمكنك أيضًا تبديل App View للحصول على واجهة نظيفة لاستكشاف بياناتك.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/amY-JDMREAaO7mx6/images/integrations/sql-clients/marimo/run-app-view.png?fit=max&auto=format&n=amY-JDMREAaO7mx6&q=85&s=cb40e3165cce1238fb2965aabcdb7f8c" size="md" border alt="تشغيل عرض التطبيق" width="2209" height="1534" data-path="images/integrations/sql-clients/marimo/run-app-view.png" />
