Kategorie: Aggregation
COLLECT
COLLECT sammelt die Werte einer Spalte je Gruppe in einem Array; mit DISTINCT nur die verschiedenen Werte.
Syntax
COLLECT(column_name) | COLLECT(DISTINCT column_name)Besonderheiten in AMC
- Ohne DISTINCT bleiben Duplikate erhalten. Nullwerte werden in beiden Fällen berücksichtigt.
- COLLECT_SORTED liefert dasselbe sortiert in einem Schritt, statt COLLECT gefolgt von ARRAY_SORT.
- Das Array eignet sich für Pfadanalysen, etwa die Reihenfolge der Werbeprodukte je Nutzer, in einer CTE.
Beispiel
Wie viele Werbeprodukte pro Nutzer vorkamen. Die user_id bleibt in der CTE und wird im Ergebnis nur gezählt.
WITH paths AS (
SELECT
user_id,
COLLECT(DISTINCT ad_product_type) AS products
FROM
sponsored_ads_traffic
GROUP BY
1
)
SELECT
CARDINALITY(products) AS product_types,
COUNT(DISTINCT user_id) AS users
FROM
paths
GROUP BY
1 Gegen das AMC-Schema geprüft, nicht auf einer AMC-Instanz ausgeführt.