marimo es un notebook reactivo de código abierto para Python con SQL integrado. Cuando ejecutas una celda o interactúas con un elemento de la UI, marimo ejecuta automáticamente las celdas afectadas (o las marca como desactualizadas), manteniendo el código y los resultados coherentes y evitando errores antes de que ocurran. Cada notebook de marimo se almacena como Python puro, se puede ejecutar como script y desplegar como aplicación.

Instala marimo con soporte SQL
pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.pyEsto debería abrir un navegador web en localhost.
Conectarse a ClickHouse.
Ve al panel de orígenes de datos en el lado izquierdo del editor de marimo y haz clic en 'Add database'.

Se te pedirá que completes los datos de la base de datos.

A continuación tendrás una celda que puedes ejecutar para establecer una conexión.

Ejecuta SQL
Una vez que hayas configurado una conexión, puedes crear una nueva celda SQL y elegir el motor de ClickHouse.

Para esta guía, usaremos el conjunto de datos 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;
Ahora puedes ver los resultados en un DataFrame. Quiero visualizar los trayectos más caros desde un punto de recogida determinado. marimo ofrece varios componentes de la UI para ayudarte. Usaré un menú desplegable para seleccionar la ubicación y altair para crear gráficos.

El modelo de ejecución reactivo de marimo también se aplica a las consultas SQL, por lo que los cambios en tu SQL desencadenarán automáticamente los cálculos posteriores de las celdas dependientes (o, de forma opcional, marcarán las celdas como desactualizadas si los cálculos son costosos). Por eso, el gráfico y la tabla cambian cuando se actualiza la consulta.
También puedes cambiar a App View para tener una interfaz más limpia con la que explorar tus datos.
