使用比较器加入BQ表

时间:2015-09-24 14:16:25

标签: join google-bigquery

我坚持这个查询!我有一个表Logs.Customer_Internet_Activity_Information,其中包含客户的测试数据。表中有一个IP地址。在另一张表中 Logs.IP有一个startIpnum,一个endIpNum和一个localIDstartIPnum是范围中较低的IP地址,endIpNum是范围中的最大IP地址。每个范围都有一个引用城市,国家等的本地ID ...

我的查询是尝试在范围中查找客户IP以查找本地ID。

Select t1.email ,t1.IP , t2.Local_ID

from [TablewithcustomerIP address] as t1 cross join [table with IP ranges] as t2

where t1.IP between t2.startIpNum and t2.endIpNum

1 个答案:

答案 0 :(得分:0)

因此,您遇到的直接问题是Google不允许cross join each

这有点像黑客,但如果性能不是你的问题,你可以尝试:

select
  t1.email
  ,t1.IP
  ,t2.Local_ID

from (select true as dummy, email, Ip from [TablewithcustomerIP address]) as t1
inner join each (select true as dummy,Local_ID, startIpNum, endIpNum from [table with IP ranges]) as t2
  on t2.dummy = t1.dummy

where t1.IP between t2.startIpNum and t2.endIpNum

然而,查询可能需要很长时间才能完成,如果有的话。一个更好的解决方案是加入你的where条件,但不幸的是,目前还不可能。我急切地等待Google添加自定义连接条件的那一天,它可能是我最想念的SQL的功能。