Google bigquery “大查询”;其中,内部选择";-can';不加入或联合
我得到: 查询:Google bigquery “大查询”;其中,内部选择";-can';不加入或联合,google-bigquery,Google Bigquery,我得到: 查询: (L1:268): JOIN (including semi-join) and UNION ALL (comma, date range) may not be combined in a single SELECT statement. Either move the UNION ALL to an inner query or the JOIN to an outer query. 我做错了什么 谢谢。这是BigQuerySQL语法的限制,我将它改为 SELECT
(L1:268): JOIN (including semi-join) and UNION ALL (comma, date range) may not be combined in a single SELECT statement. Either move the UNION ALL to an inner query or the JOIN to an outer query.
我做错了什么
谢谢。这是BigQuerySQL语法的限制,我将它改为
SELECT a AS a,
Count( DISTINCT b, 999999) AS b,
FROM [dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214]
WHERE created BETWEEN Timestamp('2013-01-05 00:00:00') AND Timestamp ('2013-02-15 23:59:59.999999')
AND id IN (
SELECT id
FROM [dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214]
WHERE created BETWEEN Timestamp('2013-01-05 00:00:00') AND Timestamp ('2013-02-15 23:59:59.999999')
AND name = 'G’
)
GROUP each a
ORDER BY a
我解决这个问题的方法是在连接中使用子查询,而不是在语法中使用where。类似于
SELECT a AS a,
Count( DISTINCT b, 999999) AS b,
FROM
(SELECT * FROM
[dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214])
WHERE created BETWEEN Timestamp('2013-01-05 00:00:00') AND Timestamp ('2013-02-15 23:59:59.999999')
AND id IN (
SELECT id
FROM [dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214]
WHERE created BETWEEN Timestamp('2013-01-05 00:00:00') AND Timestamp ('2013-02-15 23:59:59.999999')
AND name = 'G’
)
GROUP each a
ORDER BY a
SELECT
a,
COUNT(b)
FROM (
SELECT
id,
a,
b
FROM
[dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214]
WHERE
created BETWEEN TIMESTAMP('2013-01-05 00:00:00')
AND Timestamp ('2013-02-15 23:59:59.999999') ) a
JOIN (
SELECT
DISTINCT id
FROM
[dataset.partition_20121216],
[dataset.partition_20130115],
[dataset.partition_20130214]
WHERE
created BETWEEN TIMESTAMP('2013-01-05 00:00:00')
AND Timestamp ('2013-02-15 23:59:59.999999')
AND name = 'G' ) b
ON
b.id = a.id
GROUP BY
a
ORDER BY
a