tables Google Analytics BigQuery sont structurés comme ceci (héritage notations SQL - seuls les champs pertinents sont affichés):UNNEST références d'expression colonne qui est ni regroupées ni agrégées
visitId: INTEGER
hits: RECORD/REPEATED
hits.hour: INTEGER
Sur une telle table, la requête suivante fonctionne bien :
SELECT
visitId,
MIN(h.hour) AS firstHitHour
FROM
`my-table.ga_sessions_20161122`, UNNEST(hits) AS h
GROUP BY
visitId
Mais en utilisant cette syntaxe alternative:
SELECT
visitId,
(SELECT MIN(hour) FROM UNNEST(hits)) as firstHitHour
FROM
`my-table.ga_sessions_20161122`
GROUP BY
visitId
Déclenche l'erreur suivante:
Error: UNNEST expression references column hits which is neither grouped nor aggregated
Je comprends que UNNEST(hits)
doit être en quelque sorte regroupées ou agrégées, mais étant donné que cette colonne est un array (repeated)
, qu'est-ce que ça veut dire exactement?
Si je tente de "groupe de la colonne hits
", comme l'a demandé, comme ceci:
(SELECT MIN(hour) FROM UNNEST(hits) as h GROUP BY h) as firstHitHour
Puis-je obtenir une erreur Grouping by expressions of type STRUCT is not allowed
.
Comment cette syntaxe alternative peut-elle être corrigée pour produire le même résultat que la première?