marimo est un notebook réactif open source pour Python, avec SQL intégré. Lorsque vous exécutez une cellule ou interagissez avec un élément de l’UI, marimo exécute automatiquement les cellules concernées (ou les marque comme obsolètes), ce qui maintient la cohérence entre le code et les résultats et évite les bugs avant même qu’ils ne surviennent. Chaque notebook marimo est enregistré en pur Python, exécutable comme script et déployable comme application.

Installer marimo avec la prise en charge de SQL
pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.pyCela devrait ouvrir un navigateur web sur localhost.
Connexion à ClickHouse.
Accédez au panneau des sources de données sur le côté gauche de l’éditeur marimo et cliquez sur 'Add database'.

Vous serez invité à renseigner les détails de la base de données.

Vous disposerez ensuite d’une cellule que vous pourrez exécuter pour établir une connexion.

Exécuter des requêtes SQL
Une fois la connexion configurée, vous pouvez créer une nouvelle cellule SQL et sélectionner le moteur ClickHouse.

Pour ce guide, nous utiliserons le jeu de données 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;
Vous pouvez maintenant afficher les résultats dans un DataFrame. Je souhaite visualiser les trajets les plus coûteux à partir d’un lieu de prise en charge donné. marimo fournit plusieurs composants d’UI pour vous aider. J’utiliserai une liste déroulante pour sélectionner le lieu et altair pour créer le graphique.

Le modèle d’exécution réactif de marimo s’étend aux requêtes SQL. Ainsi, les modifications apportées à votre SQL déclenchent automatiquement les calculs en aval pour les cellules dépendantes (ou, en option, marquent les cellules comme obsolètes pour les calculs coûteux). Le graphique et la table sont donc mis à jour lorsque la requête change.
Vous pouvez également activer App View pour disposer d’une interface épurée afin d’explorer vos données.
