Google bigquery BigQuery查询,根据分组计数更新条件字段

Google bigquery BigQuery查询,根据分组计数更新条件字段,google-bigquery,data-cleaning,Google Bigquery,Data Cleaning,我希望在BigQuery中执行的查询的目标是,基于GROUPBY count中的某个值,我希望覆盖某个值 我当前的查询 UPDATE MAN_18.MAN_4y SET actual_related_customer = customer_code WHERE (SELECT IF(arc_count > 1,1,0) AS double_cust FROM (SELECT COUNT(DISTINCT(actual_related_customer)) AS arc_count FRO

我希望在BigQuery中执行的查询的目标是,基于GROUPBY count中的某个值,我希望覆盖某个值

我当前的查询

UPDATE MAN_18.MAN_4y
SET actual_related_customer = customer_code
WHERE (SELECT IF(arc_count > 1,1,0) AS double_cust FROM (SELECT 
COUNT(DISTINCT(actual_related_customer)) AS arc_count
FROM MAN_18.MAN_4y
GROUP BY customer_code)
WHERE double_cust = 1) 
预期结果如下所示:

从MAN_4y表中,我想使用customer_code和actual_related_customer列对其执行操作。首先,我想知道一个客户代码是否可以有多个不同的实际客户。如果是这样,在本例中这意味着arc_count大于1,我想使用customer_代码集在MAN_4y表中查找。我想看看这些客户代码的实际客户值。如果这些客户代码中某一行的实际客户与客户代码值不同,我想用当前客户代码值覆盖该行。您还可以解释为,对于客户代码的所有值,如果客户代码的弧计数大于1,则将该客户代码值写入与实际客户相关的客户


有人能帮我吗?

您尝试构建的操作在BQ中是可能的

您需要做的是将subselect写入目标表,并且在UPDATE语句中引用目标表,因为DB引擎不提供在子查询中引用相同表的方法


这将导致两个步骤。

您尝试构建的操作在BQ中是可能的

您需要做的是将subselect写入目标表,并且在UPDATE语句中引用目标表,因为DB引擎不提供在子查询中引用相同表的方法


这将产生两个步骤。

下面是我如何在一个简单的步骤中实现这一点的方法(BigQuery标准SQL)

作为一个极其简化的示例:

如果原始表格如下所示:

Row     customer_code   actual_related_customer  
1       1               3    
2       1               4    
3       2               5    
然后在应用了更新之后-表更新为

Row     customer_code   actual_related_customer  
1       1               1    
2       1               1    
3       2               5    

除非我看错了问题-这正是我所期望的

下面是我如何在一个简单的步骤中做到这一点的(BigQuery标准SQL)

作为一个极其简化的示例:

如果原始表格如下所示:

Row     customer_code   actual_related_customer  
1       1               3    
2       1               4    
3       2               5    
然后在应用了更新之后-表更新为

Row     customer_code   actual_related_customer  
1       1               1    
2       1               1    
3       2               5    

除非我把问题看错了——这正是我所期望的

这里的问题是什么。您可以进行这样的更新,但首先需要运行“选择并写入”新表,然后在更新中加入该表并运行该表。@无论发生什么情况,Pentium10都必须分两步完成?是,因为无法从来自同一表的数据更新表table@Pentium10,如果你认为这是答案,您是否可以将其作为答案发布,以便让问题所有者接受它,并帮助社区获得不同的好答案?正在等待其他反馈这里的问题是什么。您可以进行这样的更新,但首先需要运行“选择并写入”新表,然后在更新中加入该表并运行该表。@无论发生什么情况,Pentium10都必须分两步完成?是,因为无法从来自同一表的数据更新表table@Pentium10,如果你认为这是答案,您是否可以将其作为答案发布,以便让问题所有者接受它,并帮助社区区分好的答案?正在等待其他反馈给我此检索:错误:DML over table“project.test.table”不受支持。它起作用了,抱歉。这是我的错,我使用了一个链接到谷歌表格的表格。非常感谢Mikhail:)当然,没问题:o)对我来说,这检索到:错误:DML over table“project.test.table”不受支持。它工作正常,抱歉。这是我的错,我使用了一个链接到谷歌表格的表格。非常感谢米哈伊尔:)当然,没问题