Google bigquery BigQuery多连接

Google bigquery BigQuery多连接,google-bigquery,Google Bigquery,我有一个加载到Bigquery的Apache组合日志文件。它的架构由资源、位置id、ip、开始时间、结束时间、设备和状态组成。我试图运行一个查询,计算资源数量和设备数量,并按资源和设备对它们进行分组 表: resource | place_id | device | ip | status | ----------------------------------------------------------------- /resource1 | 675032000

我有一个加载到Bigquery的Apache组合日志文件。它的架构由资源、位置id、ip、开始时间、结束时间、设备和状态组成。我试图运行一个查询,计算资源数量和设备数量,并按资源和设备对它们进行分组

表:

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进行筛选,计算资源数量,然后计算使用该资源的设备数量。输出应显示资源、已计数的资源数量、使用该资源的设备以及这些设备的数量。您制定逻辑的方式-两个计数始终相同,只是具有相同资源和设备的行数-请确认。或者进一步澄清你的逻辑