A.S*_*.S. 2 sql google-bigquery unnest
我有一个数据集,其中视图嵌套在会话内部,并且我希望每个会话的视图计数。有什么更有效/合适的方法来构造这样的查询?
是否有任何文档讨论在BigQuery SQL中编写查询的首选方式?
SELECT session_key, ( SELECT COUNT( view_id ) FROM UNNEST( views ) views ) AS view_count
FROM sessions
WHERE _PARTITIONTIME >= TIMESTAMP( '2016-04-01' ) ;
SELECT session_key, COUNT( view_id ) AS view_count
FROM sessions
LEFT JOIN UNNEST( views ) views
WHERE _PARTITIONTIME >= TIMESTAMP( '2016-04-01' )
GROUP BY session_key;
Run Code Online (Sandbox Code Playgroud)
谢谢
工作查询:
一种)
SELECT visitId, ( SELECT COUNT( hitNumber ) FROM UNNEST( hits ) ) AS view_count
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`
Run Code Online (Sandbox Code Playgroud)
b)
SELECT visitId, COUNT( hitNumber ) AS view_count
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`
LEFT JOIN UNNEST( hits )
GROUP BY visitId
Run Code Online (Sandbox Code Playgroud)
第一个查询看起来更短,更简洁,但我们还要看一下“解释”选项卡:
执行时间看起来也更好!可能是因为第二个查询具有GROUP BY visitId,这迫使BigQuery查看是否存在其他具有相同ID的会话。
但是,如果您正在寻找更简洁的选择:
SELECT visitId, ARRAY_LENGTH(hits) AS view_count
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3765 次 |
| 最近记录: |