Back to flin
flin

Agrégations et analytique

Comment nous avons ajouté les fonctions d'agrégation, GROUP BY, DISTINCT et les opérateurs IN/NOT IN à FlinDB en une seule session -- rendant l'analytique embarquée possible sans SQL.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min flin
EN/ FR/ ES
flinflindbaggregationsanalyticsqueries

Une base de données qui ne peut que trouver des enregistrements est une demi-base de données. L'autre moitié, c'est répondre à des questions sur les enregistrements : combien de commandes ce mois-ci ? Quelle est la valeur moyenne des commandes ? Quelle catégorie a le plus de revenus ?

La session 162 a ajouté le support complet d'agrégation à FlinDB. Six ensembles de fonctionnalités. Douze tests. Trois cent cinquante lignes de Rust.

Les fonctions d'agrégation

flintotal_revenue = Order.sum("total")       // 975.0
avg_rating = Review.avg("rating")        // 4.2
cheapest = Product.min("price")          // 25
most_expensive = Product.max("price")    // 1500

GROUP BY : agrégats par catégorie

flinrevenue_by_category = Order.group_sum("category", "total")
// Returns: {"electronics": 15000, "books": 3000, "clothing": 8000}

avg_salary = Employee.group_avg("department", "salary")
// Returns: {"engineering": 95000, "design": 85000, "sales": 75000}

DISTINCT : valeurs uniques

flincategories = Product.distinct("category")
// Returns: ["electronics", "books", "clothing"]

IN et NOT IN : appartenance à un ensemble

flinactive = Order.where_in("status", ["pending", "processing"])
valid = Order.where_not_in("status", ["cancelled", "refunded"])

ORDER BY multiple

flinsorted = Product
    .order_by_asc("category")
    .order_by_desc("price")

Un exemple d'analytique concret

flinentity Product {
    name: text
    category: text
    price: number
    sales: int
}

total_revenue = Product.sum("sales")
avg_price = Product.avg("price")

revenue_by_category = Product.group_sum("category", "sales")
categories = Product.distinct("category")

top_products = Product
    .where_not_in("category", ["discontinued"])
    .order_by_desc("sales")
    .limit(10)

Cet exemple se lit comme un cahier des charges d'analyste. Pas de SQL. Pas de JOIN. Pas de clause GROUP BY avec aliasing de colonnes. Juste des méthodes qui disent ce qu'elles font.


Ceci est la partie 5 de la série « How We Built FlinDB ».

Navigation de la série : - [056] FlinDB: Zero-Configuration Embedded Database - [057] Entities, Not Tables - [058] CRUD Without SQL - [059] Constraints and Validation in FlinDB - [060] Aggregations and Analytics (vous êtes ici)

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le jour où Déblo a refusé une bonne réponse — deux fois

Une trace de production a montré Déblo K12 rejetant deux fois de suite la bonne réponse d’un élève de Terminale. Huit heures d’analyse, quatre commits, une rotation A/B de modèles et un benchmark sur 6 modèles plus tard, le tuteur de maths était corrigé. Ce qui a cassé, ce que nous avons changé, et ce que l’échec surprenant de GPT-5.4-mini au test socratique nous a appris sur le choix des modèles pour l’IA éducative.

32 min May 3, 2026
debloclaude-opus-4.7claude-codemethodology +14
Thales & Claude deblo

Web Claude a trouvé le bug. Puis il a failli l’aggraver.

Comment un prompt vocal de 270 lignes pour le tuteur Ultravox de Deblo produisait la même phrase d’accueil scriptu00e9e à chaque appel. Web Claude a diagnostiqué le problème parfaitement, puis a prescrit une correction qui aurait doublé la taille du prompt avec des hooks backend inexistants. Le filtre qui a gardé le diagnostic et rejeté la prescription.

17 min Apr 28, 2026
debloclaude-opus-4.7methodologyprompt-engineering +7
Thales & Claude deblo

Pourquoi j’ai dû corriger Web Claude deux fois sur la stratégie de la page d’accueil de Deblo

Comment une conversation de 48 heures avec Web Claude a failli entraîner Deblo dans le piège généraliste « ChatGPT pour l’Afrique », et pourquoi la connaissance du marché par le fondateur a dû prendre le dessus sur les suggestions stratégiques de l’IA à deux reprises.

26 min Apr 26, 2026
debloclaude-opus-4.7methodologystrategy +6