我正在对BigQuery中的GA数据运行一些查询,当我想从一个unnested表返回一个数据总和时,我遇到了一个反复出现的问题,在我的总数中远高于预期 - 我怀疑unnested行是被计算,导致计数不准确。这是一个例子:
SELECT DATE, SUM(totals.transactions)
FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP
WHERE parse_date('%y%m%d', _table_suffix) between
DATE_sub(current_date(), interval 1 day) and
DATE_sub(current_date(), interval 1 day)
GROUP BY DATE
返回:
1 20171122 12967
这是预期的。接下来,我想使用hits.
中的字段,这需要我不用点击,进行查询:
SELECT DATE, SUM(totals.transactions), MIN(hits.page.hostname) AS site
FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP
CROSS JOIN UNNEST (hits) as hits
WHERE parse_date('%y%m%d', _table_suffix) between
DATE_sub(current_date(), interval 1 day) and
DATE_sub(current_date(), interval 1 day)
GROUP BY DATE
然而,现在的结果显示:
20171122 2320004 www.hostname.com
交易次数要高得多,我假设它计算了所有未通过的行,我怎样才能解决这个问题,我想要计算和取消对表格的计算,但是还要使用未被证实的字段?
答案 0 :(得分:0)
你应该这样做:
SELECT DATE, SUM(totals.transactions),
(SELECT MIN(hit.page.hostname) FROM UNNEST (GBP.hits) AS hit) AS site
FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP
WHERE parse_date('%y%m%d', _table_suffix) between
DATE_sub(current_date(), interval 1 day) and
DATE_sub(current_date(), interval 1 day)
GROUP BY DATE, site