Pular para o conteúdo principal
marimo é um notebook reativo de código aberto para Python com SQL integrado. Quando você executa uma célula ou interage com um elemento da UI, o marimo executa automaticamente as células afetadas (ou as marca como desatualizadas), mantendo o código e os resultados consistentes e evitando bugs antes mesmo que aconteçam. Todo notebook do marimo é armazenado como Python puro, executável como script e implantável como aplicativo.

1. Instale o marimo com suporte a SQL

pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.py
Isso deve abrir um navegador no localhost.

2. Conectar-se ao ClickHouse.

Navegue até o painel de fontes de dados no lado esquerdo do editor do marimo e clique em ‘Add database’. Você deverá preencher os detalhes do banco de dados. Em seguida, você terá uma célula que poderá ser executada para estabelecer uma conexão.

3. Executar SQL

Depois de configurar uma conexão, você pode criar uma nova célula SQL e escolher o mecanismo do ClickHouse. Para este guia, usaremos o dataset 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;
Agora, você pode ver os resultados em um DataFrame. Quero visualizar as corridas mais caras a partir de um determinado local de embarque. O marimo fornece vários componentes de UI para ajudar nisso. Vou usar uma lista suspensa para selecionar o local e o Altair para criar os gráficos. O modelo de execução reativa do marimo também se estende às consultas SQL, então alterações no SQL acionam automaticamente os cálculos subsequentes das células dependentes (ou, opcionalmente, marcam células como desatualizadas no caso de cálculos mais caros). Por isso, o gráfico e a tabela mudam quando a consulta é atualizada. Você também pode alternar para o App View para ter uma interface limpa para explorar seus dados.
Última modificação em 10 de junho de 2026