Join 如何在BigQuery中使用小写维度进行连接
我有一个BigQuery付款表,其中包含交易id、日期、客户、邮政编码和付款金额列 我想创建一个客户表,其中包含一列总付款,这是客户已支付的所有付款金额的总和 有时,客户在每次购买时使用不同的大写字母输入他们的姓名,这会导致John Smith和John Smith在我的新表中得到不同的行,而他们实际上是同一个人 我想找出一种方法来创建此表,其中John Smith、John Smith和John Smith被视为同一客户。 我试过:Join 如何在BigQuery中使用小写维度进行连接,join,key,google-bigquery,lowercase,Join,Key,Google Bigquery,Lowercase,我有一个BigQuery付款表,其中包含交易id、日期、客户、邮政编码和付款金额列 我想创建一个客户表,其中包含一列总付款,这是客户已支付的所有付款金额的总和 有时,客户在每次购买时使用不同的大写字母输入他们的姓名,这会导致John Smith和John Smith在我的新表中得到不同的行,而他们实际上是同一个人 我想找出一种方法来创建此表,其中John Smith、John Smith和John Smith被视为同一客户。 我试过: SELECT lower(name) as name_a ,
SELECT
lower(name) as name_a
,zip
,total_payments
From SweetData.Payments AS a
JOIN EACH
(Select
lower(name) as name_b
,sum(amount) as total_payments
From SweetData.Payments
GROUP BY name_b) As b
ON a.name_a = b.name_b
但是,在ON子句中使用表“a”中的别名时,它给了我一个错误
因此,我尝试在ON子句中使用函数lower(),如下所示:
SELECT
name
,zip
,total_payments
From SweetData.Payments AS a
JOIN EACH
(Select
lower(name) as name_b
,sum(amount) as total_payments
From SweetData.Payments
GROUP BY name_b) As b
ON lower(a.name) = b.name_b
但我也犯了一个错误
谢谢你的帮助 2
如果我理解您的更新请求,这应该可以做到:
SELECT
a.name
, a.zip
, b.total_payments
FROM (
SELECT
lower(name) as name
,zip
From SweetData.Payments
) AS b
JOIN (
select
lower(name) as name
, sum(payments) as total_payments
from SweetData.Payments
group by 1
) AS a
ON a.name = b.name
嗨,吉尔,谢谢你的回复!我的问题比我最初透露的要复杂一点,恐怕我对这篇文章的理解太多了。(新手错误!)我的第一个表将包括我不会按其对总付款进行分组的维度,因此我相信我需要一个联接。有关我的更正,请参见编辑。再次感谢!我已经做了更改-现在怎么样?嗯,这给了我以下错误:Google BigQuery服务无法编译查询。未找到“总付款”字段。我试图摆弄它,但仍然无法解决问题。谢谢你!是的,当然-我在第一个查询中也有字段total_payments。现在应该可以工作了:)