Utilisation des agrégats filtrés
ClickHouse offre un moyen simple et intuitif d’écrire des agrégats filtrés.
Par exemple, comparez la manière standard en SQL d’écrire des agrégats filtrés (qui fonctionne très bien dans ClickHouse) à la syntaxe abrégée utilisant le combinateur de fonction d’agrégation -If, qui peut être ajouté à n’importe quelle fonction d’agrégation :
--standard SQL
SELECT
avg(number)
FILTER (WHERE number > 50)
FROM numbers(100)
--ClickHouse using an aggregate combinator
SELECT
avgIf(number, number > 50)
FROM numbers(100)De même, il existe un combinateur d’agrégation -Distinct :
--standard SQL
SELECT avg(DISTINCT number)
--ClickHouse using an aggregate combinator
SELECT avgDistinct(number)Pourquoi les agrégats filtrés sont-ils importants ? Parce qu’ils permettent de mettre en œuvre la fonctionnalité de "comparaison de segments" dans les services d’analyse web. Par exemple :
WITH
Region = 'us' AS segment1,
Browser = 'Chrome' AS segment2
SELECT
uniqIf(UserID, segment1),
uniqIf(UserID, segment2)
WHERE segment1 OR segment2Consultez la page combinateur de fonction d’agrégation de la documentation pour plus de détails.