我在确定应如何结束此查询时遇到问题,因为我在BigQuery中不断收到错误。
这是一个相对较大的查询,有多个并集使用几乎相同的语法。当我在子查询之后结束查询时,出现错误。
错误:语法错误:预期为“)”,但语句结尾为[133:54]
所有并集都遵循相同的语法-只是来自单独的表
UNION ALL
SELECT
report_date,
device_category,
data_source,
source,
medium,
LOWER(campaign_name) AS campaign_name,
conversion_type,
Brand,
goal_completion_1,
impressions,
clicks,
cost,
conversions,
profile
FROM (
SELECT
report_date,
device_category AS device,
data_source,
CASE
WHEN data_source = 'Google Ads' THEN 'google'
WHEN data_source = 'Adroll' THEN 'adroll'
WHEN data_source = 'Facebook Ads' THEN 'facebook'
WHEN data_source = 'Bing Ads' THEN 'bing'
ELSE NULL
END AS source,
CASE
WHEN data_source = 'Google Ads' THEN 'cpc'
WHEN data_source = 'Adroll' THEN 'display'
WHEN data_source = 'Facebook Ads' THEN 'paid_social'
WHEN data_source = 'Bing Ads' THEN 'cpc'
ELSE NULL
END AS medium,
0 AS goal_completion_1,
0 AS impressions,
0 AS clicks,
0 AS cost,
conversions,
profile
FROM
`table`
)
我有一个与此类似的查询,除了它以where语句结尾并且看起来可以正常运行,但是当我在from之后添加任何内容时,我仍然遇到相同的错误。
WHERE conversion_type <> 'Calls from ads'
答案 0 :(得分:0)
在没有看到整个查询的情况下很难确定问题出在哪里。
很有可能在一个关闭子查询的末尾缺少一个关闭括号,导致UNION
被视为该子查询内部。整个查询之前也可能有一个括号,这时它没有被关闭。
我发现在大型UNION
查询中,可以通过将每个UNION
查询包裹在括号中来获得更多有用的错误消息,如下所示:
(
SELECT ...
)
UNION ALL
(
SELECT ...
)
UNION ALL
(
SELECT ...
)
至少,这会导致通常在结束每个组的行号(而不是查询的末尾)处触发未封闭的字符警告。
虽然Joakim选择的列多于可用列是正确的,但这不是此错误消息的原因。