Passer au contenu principal
DuckDB peut interroger des fichiers Parquet directement sur HTTP, sans téléchargement ni configuration. C’est le moyen le plus rapide d’explorer les données de manière interactive.

Installation

Installez DuckDB, puis interrogez directement les données :
duckdb
SELECT sender, COUNT(*) as n
FROM read_parquet('https://data.jmail.world/v1/emails-slim.parquet')
GROUP BY sender ORDER BY n DESC LIMIT 20;

Exemples de requêtes

Nombre d’e-mails par expéditeur

SELECT sender, COUNT(*) as n
FROM read_parquet('https://data.jmail.world/v1/emails-slim.parquet')
GROUP BY sender ORDER BY n DESC LIMIT 20;

E-mails envoyés par Epstein

SELECT subject, sent_at, to_recipients
FROM read_parquet('https://data.jmail.world/v1/emails-slim.parquet')
WHERE epstein_is_sender = true
ORDER BY sent_at DESC LIMIT 20;

Rechercher dans les documents

SELECT original_filename, document_description, page_count
FROM read_parquet('https://data.jmail.world/v1/documents.parquet')
WHERE document_description ILIKE '%flight%'
LIMIT 20;

Effectuer une jointure entre photos et personnes

SELECT p.name, COUNT(*) as appearances
FROM read_parquet('https://data.jmail.world/v1/photo_faces.parquet') pf
JOIN read_parquet('https://data.jmail.world/v1/people.parquet') p
  ON pf.person_id = p.id
GROUP BY p.name ORDER BY appearances DESC;

Nombre d’étoiles par type d’entité

SELECT entity_type, SUM(count) as total_stars
FROM read_parquet('https://data.jmail.world/v1/star_counts.parquet')
GROUP BY entity_type ORDER BY total_stars DESC;

Utilisation avec Polars

Polars peut aussi lire des fichiers Parquet via HTTP :
import polars as pl

df = pl.read_parquet("https://data.jmail.world/v1/emails-slim.parquet")
print(df.group_by("sender").len().sort("len", descending=True).head(20))

Utilisation avec pandas

import pandas as pd

df = pd.read_parquet("https://data.jmail.world/v1/emails-slim.parquet")
print(df.groupby("sender").size().sort_values(ascending=False).head(20))