【问题标题】:SQL multiple query using with - in Bigquery在 Bigquery 中使用 with - 的 SQL 多重查询
【发布时间】:2020-05-29 20:25:26
【问题描述】:

我试图弄清楚如何发出一个包含多个查询的请求,以便生成一个包含我所有查询结果的视图。

这里是例子:


WITH Query_1 AS
(
SELECT
dimension1,
dimension2,
dimension3,
dimension4,
dimension5,

CASE WHEN STARTS_WITH (dimension1, "N_") THEN '1' ELSE '0' END AS qadimension1,
CASE WHEN dimension2 IS NOT NULL THEN dimension2 ELSE '0' END AS qadimension2,
CASE WHEN dimension3 IS NOT NULL THEN dimension3 ELSE '0' END AS qadimension3,
CASE WHEN dimension4 IS NOT NULL THEN dimension4 ELSE '0' END AS qadimension4,
FROM `XXXXX.XXXXX.first_view`
WHERE dimension5='2021' AND dimension1 IS NOT NULL),

Query_2 AS (
SELECT
dimension1,
qadimension1,
dimension6,

CASE WHEN qadimension1 = dimension6 THEN '1' ELSE '0' END AS QA_check1,
FROM `XXXXX.XXXXX.first_view` , `XXXXX.XXXXX.second_view`
WHERE qadimension1 != '0'),


Query_3 AS (
SELECT
dimension1,
qadimension2,
dimension7,

CASE WHEN qadimension2 = dimension7 THEN '1' ELSE '0' END AS QA_check2,
FROM `XXXXX.XXXXX.first_view` , `XXXXX.XXXXX.third_view`
WHERE qadimension2 != '0')



SELECT 
dimension1,
dimension2,
dimension3,
dimension4,
dimension5,
dimension6,
dimension7,

qadimension1,
qadimension2,
qadimension3,
qadimension4,

QA_check1,
QA_check2,

FROM
Query_1,
Query_2,
Query_3

WHERE FULL JOIN dimension1;

仍然有错误:语法错误:[242:7] 处的意外关键字 FULL

非常感谢您的帮助

【问题讨论】:

  • 提供样本数据、期望的结果以及您想要实现的逻辑的解释。
  • 嗨,戈登,事实上,当我尝试同时运行 CASE 语句时,我遇到了错误。所以我在多个查询中分开。我正在尝试运行每个查询,我想要的结果是一个视图或表,其中包含我的所有维度(带有 reuslts 的列),使用维度 1 作为键。如果还不清楚,请告诉我。感谢您的帮助 - 大卫

标签: sql google-bigquery with-statement


【解决方案1】:

以下是 BigQuery 标准 SQL

试试下面 - 注意所有 CTE 没有变化,所以下面只是最后的选择语句

SELECT 
  dimension1,
  dimension2,
  dimension3,
  dimension4,
  dimension5,
  dimension6,
  dimension7,

  q2.qadimension1,
  q3.qadimension2,
  qadimension3,
  qadimension4,

  QA_check1,
  QA_check2

FROM Query_1
LEFT JOIN Query_2 q2 USING(dimension1)
LEFT JOIN Query_3 q3 USING(dimension1)

【讨论】:

  • 嗨,米哈伊尔,感谢您的帮助。我收到此错误消息:“查询执行期间超出资源:没有足够的资源用于查询计划 - 访问的字段太多或查询太复杂。”我真的不知道为什么它不起作用,因为我拆分查询以便能够运行多个请求。
  • 我想知道使用 UNION ALL 来运行这种工作是不是更好。我正在寻求的目标是运行多个请求并获得一个包含我的请求结果的所有维度 5 列的视图或表格作为最终结果。例如,我的密钥将是维度 1。
  • 我认为问题在于你的观点。您是否尝试过单独运行您的视图?在执行最终连接之前,还要尝试将 CTE 物化为表或物化视图。作为工会 - 根据我在你的问题中看到的 - 工会不会给你预期的结果!
  • 嗨,米哈伊尔,非常感谢您的反馈,您能否提供更多详细信息,我真的很困惑 - 谢谢大卫
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 2017-10-24
  • 2021-05-03
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多