Google bigquery BigQuery多连接
我有一个加载到Bigquery的Apache组合日志文件。它的架构由资源、位置id、ip、开始时间、结束时间、设备和状态组成。我试图运行一个查询,计算资源数量和设备数量,并按资源和设备对它们进行分组 表:Google bigquery BigQuery多连接,google-bigquery,Google Bigquery,我有一个加载到Bigquery的Apache组合日志文件。它的架构由资源、位置id、ip、开始时间、结束时间、设备和状态组成。我试图运行一个查询,计算资源数量和设备数量,并按资源和设备对它们进行分组 表: resource | place_id | device | ip | status | ----------------------------------------------------------------- /resource1 | 675032000
resource | place_id | device | ip | status |
-----------------------------------------------------------------
/resource1 | 6750320008 | android | x.x.x.x | 200 |
/resource1 | 6750320100 | ipad | x.x.x.y | 200 |
/resource2 | 6750320008 | android | x.x.x.z | 200 |
查询:
SELECT resource, device
FROM (
Select
EXACT_COUNT_DISTINCT(resource) AS URL,
1 AS scalar,
FROM ([daily_logs.app_logs_data])
WHERE place_id = '6750320008' GROUP BY URL) AS datal
JOIN (
SELECT
COUNT(device) as DeviceCount,
1 AS scalar
FROM ([daily_logs.app_logs_data]) GROUP BY DeviceCount) AS y
ON datal.scalar=y.scalar
我收到此错误:错误:无法按聚合进行分组。
我基本上是从同一个表中创建两个表,对不同的项目进行计数,然后我想将它们连接在一起,但将它们按如下顺序分组:
URL | totalresourcecount | device | totaldevicecount
-----------------------------------------------------------------
/resource1 | 1 | android | 1
/resource1 | 1 | ipad | 1
/resource2 | 1 | android | 1
我已经阅读了GoogleBigQuery语法帮助并查看了一些示例,但没有任何结果。提前谢谢 下面是BigQuery标准SQL,反映了您在后续评论中提出的逻辑
#standardSQL
SELECT resource, device, COUNT(1) cnt
FROM `project.dataset.yourtable`
WHERE place_id = '6750320008'
GROUP BY resource, device
您可以使用下面的虚拟数据测试/播放上述内容
#standardSQL
WITH `project.dataset.yourtable` AS (
SELECT '/resource1' resource, '6750320008' place_id, 'android' device, 'x.x.x.x' ip, 200 status UNION ALL
SELECT '/resource1', '6750320100', 'ipad', 'x.x.x.y', 200 UNION ALL
SELECT '/resource2', '6750320008', 'android', 'x.x.x.z', 200
)
SELECT resource, device, COUNT(1) cnt
FROM `project.dataset.yourtable`
WHERE place_id = '6750320008'
GROUP BY resource, device
请注意-以上是基于我如何理解您在后续评论中表达的查询逻辑请提供表示您的数据的简化/虚拟数据,然后显示预期输出。我可以很容易地修复您的上述查询,以解决您看到的特定错误—但总体而言—该查询毫无意义(至少对我而言)。所以,如果你提供一些例子(输入和输出),也许还有更多的措辞,这将有助于我们提供帮助you@MikhailBerlyant首先,谢谢!我用正在使用的样本数据表更新了这个问题。问题的一部分是我对Bigquery相当陌生,因此如果我不确定如何最好地提问,我向您道歉。我希望编辑有帮助。没问题。我们在此提供帮助:o)所以,仍然不清楚的是什么是逻辑连接-它是通过place_id实现的吗?那么,对于每个位置,您的id是否显示资源和设备的数量?试着说出你期望的话logic@MikhailBerlyant根据谷歌文档,
JOIN
应该加入到查询中,place\u id是过滤器。所以我想根据place_id进行筛选,计算资源数量,然后计算使用该资源的设备数量。输出应显示资源、已计数的资源数量、使用该资源的设备以及这些设备的数量。您制定逻辑的方式-两个计数始终相同,只是具有相同资源和设备的行数-请确认。或者进一步澄清你的逻辑