Saltar al contenido principal
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.

1. Instala marimo con soporte para SQL

pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.py
Esto debería abrir un navegador web en localhost.

2. 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.

3. 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.
Última modificación el 12 de junio de 2026