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.

Instalar o marimo com suporte a SQL
pip install "marimo[sql]" clickhouse_connect
marimo edit clickhouse_demo.pyIsso deve abrir um navegador da web em execução no localhost.
Conectando ao ClickHouse.
Navegue até o painel de fontes de dados no lado esquerdo do editor do marimo e clique em 'Add database'.

Você será solicitado a preencher os detalhes do banco de dados.

Em seguida, você terá uma célula que pode ser executada para estabelecer uma conexão.

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.
