【问题标题】:Bigquery SQL: Convert table values using a key-value tableBigquery SQL:使用键值表转换表值
【发布时间】:2018-05-20 10:30:12
【问题描述】:

我有两张桌子。 第一个表包含键值数据:

   Answer_Code |Fruit
   1           |Apple
   2           |Orange
   3           |Pear
   4           |Watermelon

第二个表包含收集到的数据

   Participant|Fruit
   Aaa        |1
   Bbb        |2
   Ccc        |3

如何连接这些表,以便将第二个表中的 Fruit 列替换为第一个表中的 Fruit 值?

   Participant|Fruit
   Aaa        |Apple
   Bbb        |Orange
   Ccc        |Watermelon

我尝试了以下方法:

SELECT T1.*, T2.*,
FROM [Table1] T1, 
JOIN [Table2] T2 ON T1.Fruit = T2.Fruit,
LIMIT 10;

我收到以下错误:

ON 子句必须是 AND of = 比较每个表中的一个字段名,所有字段名都以表名作为前缀。考虑使用标准 SQL .google.com/bigquery/docs/reference/standard-sql/),它允许不等式 JOIN 以及涉及表达式和残差谓词的比较。

此外,我无法获得 UPDATE、SET 来处理 bigquery。

【问题讨论】:

  • 使用StandardSql!这是最简单的解决方案。

标签: sql google-bigquery legacy-sql


【解决方案1】:

您的 ON 子句不正确
而不是 ON T1.Fruit = T2.Fruit 你应该有 ON T1.Answer_Code = T2.Fruit
此外,您的查询中几乎没有多余的逗号

无论如何,您的查询应该如下所示

SELECT T2.Participant, T1.Fruit
FROM [Table1] T1 
RIGHT JOIN [Table2] T2 ON T1.Answer_Code = T2.Fruit
LIMIT 10   

还建议 migrate 到 BigQuery 标准 SQL - 标准 SQL 是查询存储在 BigQuery 中的数据的首选 SQL 方言,并且还有多个 advantages,包括 DML,因此您可以 get UPDATE, SET to work on BigQuery

【讨论】:

  • 太棒了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 2012-12-23
  • 2020-01-24
相关资源
最近更新 更多