【问题标题】:How to create a Temporary table in Bigquery如何在 BigQuery 中创建临时表
【发布时间】:2021-11-11 12:22:12
【问题描述】:

我一直在尝试使用以下查询中的 CREATE TEMPORARY TABLE 和 WITH 语句构建一个临时表。到目前为止,我无法得到任何积极的结果,我不知道发生了什么。 在最后一行,错误警报说:“语法错误:预期“(”或“,”或关键字 SELECT 但在 [28:62] 处结束脚本”

WITH analysis_fall_2021_season AS
(SELECT
start_station_name,
end_station_name,
EXTRACT (DATE FROM started_at) AS start_date,
EXTRACT (DATE FROM ended_at) AS end_date, 
EXTRACT (TIME FROM started_at) AS start_time,
EXTRACT (TIME FROM ended_at) AS end_time,
DATETIME_DIFF (ended_at,started_at, MINUTE) AS total_lenght,
member_casual
FROM 
(SELECT
fall_analysis.ride_id, 
fall_analysis.started_at, 
fall_analysis.ended_at, 
fall_analysis.start_station_name, 
fall_analysis.end_station_name, 
fall_analysis.member_casual
FROM 
`ciclystic.cyclistic_seasonal_analysis.fall_202010` AS fall_analysis
INNER JOIN 
`ciclystic.cyclistic_seasonal_analysis.fall_202011` AS fall_202011
ON 
fall_analysis.member_casual = fall_202011.member_casual
INNER JOIN 
`ciclystic.cyclistic_seasonal_analysis.fall_202012` AS fall_202012
ON 
fall_analysis.member_casual = fall_202012.member_casual))

【问题讨论】:

  • 在两个 FROM 子句之前似乎存在尾随逗号。
  • 谢谢保罗。我试过了,但没有任何问题。
  • 这可能不是唯一的麻烦,只是一个观察。 :-) ...但是错误信息还是一样吗?
  • 查看其他类似错误的答案,我相信您有 CTE,但没有 SELECT。 (错误消息的 or 关键字 SELECT 部分)...如果在整个 WITH 语句的末尾添加:SELECT * FROM analysis_fall_2021_season; 会怎样?
  • 你是对的,保罗,我非常感谢你的帮助!

标签: sql google-bigquery temporal-tables


【解决方案1】:

正如@Paul 所建议的,您会收到此错误,因为 CTE(即 WITH 语句)只是查询的一部分。它后面需要跟另一个语句,通常是 SELECT。您也可以参考这个StackOverflow question,其中讨论了相同的错误。

您可以尝试以下我已相应修改的代码来解决错误。

WITH analysis_fall_2021_season AS
(SELECT
start_station_name,
end_station_name,
EXTRACT (DATE FROM started_at) AS start_date,
EXTRACT (DATE FROM ended_at) AS end_date,
EXTRACT (TIME FROM started_at) AS start_time,
EXTRACT (TIME FROM ended_at) AS end_time,
DATETIME_DIFF (ended_at,started_at, MINUTE) AS total_lenght,
member_casual
FROM
(SELECT
fall_analysis.ride_id,
fall_analysis.started_at,
fall_analysis.ended_at,
fall_analysis.start_station_name,
fall_analysis.end_station_name,
fall_analysis.member_casual
FROM
`ciclystic.cyclistic_seasonal_analysis.fall_202010` AS fall_analysis
INNER JOIN
`ciclystic.cyclistic_seasonal_analysis.fall_202011` AS fall_202011
ON
fall_analysis.member_casual = fall_202011.member_casual
INNER JOIN
`ciclystic.cyclistic_seasonal_analysis.fall_202012` AS fall_202012
ON
fall_analysis.member_casual = fall_202012.member_casual)
)
SELECT * FROM analysis_fall_2021_season;

【讨论】:

  • 非常感谢您的帮助。你和@Paul 都是对的!
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2019-12-09
  • 2016-10-28
  • 2014-11-23
相关资源
最近更新 更多