【问题标题】:Trouble with joining tables on BigQuery在 BigQuery 上加入表时遇到问题
【发布时间】:2021-12-26 19:56:01
【问题描述】:

我设法在 BigQuery 上将两个表连接在一起,但是我认为它不正确匹配。 clients 包含 75 行的描述性客户端名称,而 stats 包含 37342 行的客户端统计信息。我正在尝试使用ExternalCustomerId 将这两个表与此查询连接在一起:

SELECT 
clients.AccountDescriptiveName AS client_name,
stats.ExternalCustomerId AS client_id,
AverageCost,
AverageCpc,
AverageCpm,
AveragePosition
FROM `298114322003.google_ads1.p_Customer_2670156874` AS clients
JOIN `298114322003.google_ads1.p_AccountStats_2670156874` AS stats
ON clients.ExternalCustomerId = stats.ExternalCustomerId

但是,结果显示为 113026 行。我希望结果为 37342,因为这是 stats 表的结果。我用过RIGHT/LEFT JOIN 函数,结果还是一样。关于我应该如何解决这个问题的任何建议?谢谢!

AK

【问题讨论】:

  • 您在上面发布的查询已经在使用内连接,它比外连接更多限制。这意味着切换到左连接或右连接只会导致结果集中的记录多于 37,342 条记录。
  • 您的 sql 没有问题,所以这几乎肯定是您对数据的假设的问题。我怀疑ExternalCustomerID 在任一表中都不是唯一的,因此您得到的是一种笛卡尔积。发布一些示例数据和您想要的结果,我们可能会提供更多帮助。

标签: sql join google-bigquery google-ads-data-hub


【解决方案1】:

看起来您的stats 表有多个相同的ExternalCustomerId 行(这可以理解,例如,如果它已分区并且您在白天有不同的数据)。

尝试探索更多,如下所示:

SELECT count(*) as total, count(distinct ExternalCustomerId) as uniques
FROM `298114322003.google_ads1.p_AccountStats_2670156874`

如果您复制了ExternalCustomerId,则每个客户端行都将乘以stats 表中匹配的行数。

【讨论】:

  • 感谢您的信息!这很有帮助,因为在与我们的 SEM 经理讨论后,我们有一些不活跃的客户,但他们仍然有一个 Google Ads 帐户,以防万一他们想重新激活它 - 因此仍然记录不活跃的 ID,并且没有显示任何数据.将对此进行更多研究。再次感谢您。
猜你喜欢
  • 2023-02-23
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多