Google アナリティクスの BigQuery テーブルは次のように構成されています (従来の SQL 表記 - 関連するフィールドのみが表示されます)。
visitId: INTEGER
hits: RECORD/REPEATED
hits.hour: INTEGER
そのようなテーブルの 1 つで、次のクエリがうまく機能します。
SELECT
visitId,
MIN(h.hour) AS firstHitHour
FROM
`my-table.ga_sessions_20161122`, UNNEST(hits) AS h
GROUP BY
visitId
ただし、次の代替構文を使用します。
SELECT
visitId,
(SELECT MIN(hour) FROM UNNEST(hits)) as firstHitHour
FROM
`my-table.ga_sessions_20161122`
GROUP BY
visitId
次のエラーをトリガーします。
エラー: UNNEST 式は、グループ化も集計もされていない列ヒットを参照しています
UNNEST(hits)何らかの形でグループ化または集計する必要があることは理解していますが、この列は であるためarray (repeated)、正確にはどういう意味ですか?
hits要求に応じて、次のように「列をグループ化」しようとすると、次のようになります。
(SELECT MIN(hour) FROM UNNEST(hits) as h GROUP BY h) as firstHitHour
その後、Grouping by expressions of type STRUCT is not allowedエラーが発生します。
この代替構文を修正して、最初の構文と同じ結果を得るにはどうすればよいでしょうか?